Free Pascal programmieren lernen.
Mathematische Operatoren
Die Mathematischen Operatoren erklärt anhand eines Grundrechenarten Rechners.
Der Aufbau des Grundrechenarten Rechners.
Im Kopfbereich ist das Copyright mit Logo. Dies basiert auf einem TPanel Komponente und einem zentrierten TImage Komponente.
Der eigentliche Rechner hat als Basis Content Bereich ein TPageControl. Der Eingabe, Button und Ergebnisbereich sind zusätzlich mit jeweils einem TPabel hinterlegt und farblich gestaltet über die Eigenschaft Color. Die Caption der Komponente TPanel wird leer gelassen. Im Eingabebereich und Ergebnisbereich ist die Überschrift mit der Komponente TDividerBevel erstellt. Im Eingabebereich sind Zahl1 und Zahl2 zwei Komponenten vom Typ TLabel mit den Namen LblZahl1 und LblZahl2. Die Eingabefenster sind vom Typ TEdit und tragen den Namen EdtZahl1 und EdtZahl2. Im blauen Button Bereich sind vier Buttons mit der Aufschrift Addition +, Subtraktion -, Multiplikation *, und Division / die Namen der einzelnen Button lautet wie folgt: BtnAddition, BtnSubtraktion, BtnMultiplikation und BtnDivision. Damit wir auch bei einem größeren programm die Komponenten unterscheiden können werden zusätze wie Edt für Editfeld, Lbl für Label oder Btn für Button zu den eigentlichen Namen hinzugefügt. Bei großen Software Projekten beschriftet man die Komponenten zusätzlich noch mit dem Bereichsnamen. Als Beispiel wurde da der Button nicht BtnAddition, sondern BtnGrReRAddition heißen für die Abkürzung Button (Btn) Grundrechenarten Rechner (GrReR) Addition. So kommt es bei einem großen Programm nicht dazu das zwei Button den gleichen Namen tragen.
7.1 Der Additionsoperator, Plus Operator
Die erste Prozedur ist die Addition, diese ist bei der Button Eigenschaft im Objektinspektor hinterlegt. Die Eigenschaft die wir hier verwenden ist ein OnClick Ereignis.
Nachfolgend kann du dir den Quellcode ansehen.
procedure TForm1.BtnAddititionClick(Sender: TObject);
var
douErgebnis : double;
begin
douErgebnis := StrToFloat(EdtZahl1.Text) + StrToFloat(EdtZahl2.Text);
EdtErgebnis.Text := FloatToStr(douErgebnis);
end;
In Zeile eins siehst du den Prozedur Header mit dem zugehörigen Form1 und dem Prozedurnamen. Der Prozedur Name wird automatisch festgelegt, durch den Klick auf die Eigenschaft OnClick mit den drei Punkten. In der zweiten Zeile leite wir die Variablendeklaration ein. Die dritte Zeile ist für die Festlegung der Variablen da. Wir definieren die Variable douErgebnis als Double. Double ist eine Gleitkommazahl. Danach folgt in der vierten Zeile mit dem Wort begin, die Einleitung des Prozedur Rumpfes. In der fünften Zeile wird die eigentliche Operation durchgeführt, die Addition. Die in den Editfeldern hinterlegen Zahlen sind Texte, daher müssen sie mit der Funktion StrToFloat erst in eine Zahl umgewandelt werden. Danach wird die Addition ausgeführt und das Ergebnis in strErgebnis gespeichert. In Zeile sechs wird das Ergebnis von douErgebnis durch die Funktion FloatToStr() wieder in einen Text umgewandelt. Und im Editfeld EdtErgebnis gespeichert.
7.2 Der Subtraktionsoperator, Minus Operator
Nachfolgend kannst du dir den Code für den Subtraktionsoperator ansehen
procedure TForm1.BtnSubtraktionClick(Sender: TObject);
var
douErgebnis : double;
begin
douErgebnis := StrToFloat(EdtZahl1.Text) - StrToFloat(EdtZahl2.Text);
EdtErgebnis.Text := FloatToStr(douErgebnis);
end;
Die Prozedur sieht exakt gleich aus wie beim Plusoperator bis das in Zeile eins der Prozedurname ändert und in Zeile 5 ein Minuszeichen eingesetzt wird.
7.3 Der Multiplikationsoperator, Mal Operator
Nachfolgend kannst du dir den Code für den Subtraktionsoperator ansehen.
procedure TForm1.BtnMultiplikationClick(Sender: TObject);
var
douErgebnis : double;
begin
douErgebnis := StrToFloat(EdtZahl1.Text) * StrToFloat(EdtZahl2.Text);
EdtErgebnis.Text := FloatToStr(douErgebnis);
end;
Bei dem Multiplikationsoperator wiederholt sich das Ganze noch einmal.
7.4 Der Divisionsoperator, Teilen Operator
Nachfolgend kannst du dir den Code für den Subtraktionsoperator ansehen.
procedure TForm1.BtnDivisionClick(Sender: TObject);
var
douErgebnis : double;
begin
douErgebnis := StrToFloat(EdtZahl1.Text) / StrToFloat(EdtZahl2.Text);
EdtErgebnis.Text := FloatToStr(douErgebnis);
end;
Bei dem Divisionsoperator wiederholt sich das Ganze ein weiteres mal.
Fehler und Anzeigen im Debugger.
Hier im Bild seht ihr einen Quellcode Auszug der Prozedur BtnDivisionClick aus unserem Programm und das Nachrichtenfenster von Lazarus. In Zeile 81 fehlt am Ende ein Komma. Die Nachricht des Debuggerfensters lautet: Fatal: System error. “;“ expected but “identifier EDTERGEBNIS“ found. Der Debugger beschreibt damit den Fehler sehr gut er vermisst ein Semikolon vor EdtErgebnis.
Der zweite Fehler zeigt das unsere definierte Variable in Zeile 79 kein Double, sondern ein Integer ist. Ein Integer ist eine Ganzzahl. Bei einer Division von Ganzzahlen kann auch eine Zahl mit Komma herauskommen. Ein Beispiel 5 / 2 = 2,5.
Im Nachrichtenfenster siehst du den Fehler: Use DIV instead to get an integer result = Verwenden Sie DIV um ein Integer Resultat zu erhalten. Der zweite Fehler Error: Incompatible types: got “Double“ expected LongInt. Inkompatible Typen bekam Double erwarte Integer. Das liegt daran das ich in Zeile 79 unsere Variable von Double nach Integer geändert habe. Er erwartet einen Integer Wert in Zeile 81 bekommt durch die Funktion StrToFloat aber einen Double Wert.
Gut, das soll es auch zu den Mathematischen Operatoren gewesen sein. Ich hoffe ich konnte euch ein wenig Neues beibringen und es geht im nächsten Kapitel weiter mit den Vergleichsoperatoren.