Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Programmieren mit Lazarus. Die Programmoberfläche das Hauptfenster der Objektinspektor das Formular der Quelltexteditor Komponenten...... hier einfügen...

Ähnliche Präsentationen


Präsentation zum Thema: "Programmieren mit Lazarus. Die Programmoberfläche das Hauptfenster der Objektinspektor das Formular der Quelltexteditor Komponenten...... hier einfügen..."—  Präsentation transkript:

1 Programmieren mit Lazarus

2 Die Programmoberfläche das Hauptfenster der Objektinspektor das Formular der Quelltexteditor Komponenten...... hier einfügen... hier Eigen- schaften ändern... hier Ereignisse programmieren compilieren und starten

3 Object-Pascal Ereignis (Knopf 1 drücken) procedure TForm1.Button1Click(Sender: TObject); var a,b:integer; begin a:=strtoint(edit1.Text); b:=a*a; edit2.Text:=inttostr(b) end; Definition der Variablen Anweisungs- block Zuweisung (links ergibt sich aus rechts) Textinhalt eines Eingabefeldes Formatumwandlung (Festkommazahl in Zeichenkette) Semikolon schließt Anweisung ab Berechnung

4 Eine Prozedur programmieren ● Erzeugen der notwendigen Komponenten im Formular ● Doppelklick auf das Element erzeugt eine Prozedur namens TForm1.Button1Click... im Quelltexteditor (andere Ereignisse mit Objektinspektor erzeugen) ● notwendige Variablendefinitionen vor begin einfügen ● Programmtext zwischen begin und end einfügen dann speichern, compilieren und testen

5 Das erste Programm ● Programmiere einen Rechner, der ganze Zahlen addieren und subtrahieren kann! – zwei Eingabe- und ein Ausgabefeld (TEdit) – je ein Button für Addition und Subtraktion (TButton, Beschriftung im Objektinspektor unter „Caption“ anpassen) – Variablendefinition: var a,b,c:integer; – Formatumwandlungen: ● Variable := strtoint( Eingabefeldtext ) ● Ausgabefeldtext := inttostr( Variable ) – einen Button zum Schließen ergänzen ( close )

6 Verbesserungen ● Ergänze Multiplikation und Division! – Der Zahlenbereich muss verändert werden, da bei der Division gebrochene Zahlen auftreten können! ● statt var a,b,c:interger; verwendet man die Variab- lendefinition var a,b,c:real; ● statt strtoint() bzw. inttostr() verwendet man die Anweisungen strtofloat() bzw. floattostr() ● Kommazahlen müssen im laufenden Programm mit einem Punkt als Dezimaltrenner eingegeben werden!

7 Kommentare ● Umfangreichere Quelltexte können schnell unübersichtlich werden. Deshalb besteht die Möglichkeit, Kommentare in den Quelltext einzufügen. Kommentare werden vom Compiler beim Übersetzen des Programms ignoriert. ● Object Pascal bietet zwei Schreibweisen: – geschweifte Klammern: { Kommentar } – diese Kommentare können auch mehrzeilig sein – zwei Schrägstriche an den Anfang: // Kommentar – alles was rechts vom Kommentarzeichen steht wird als Kommentar interpretiert – Lazarus hebt Kommentare blau und fett hervor!

8 lokale und globale Variablen ● Variable, die innerhalb einer Prozedur definiert werden, gelten auch jeweils nur für die eine Prozedur (d.h. der Speicher wird nur beim Ausführen dieser Prozedur belegt) → lokale Variablen ● Werden Variablen für mehrere Prozeduren benötigt, ist es sinnvoll, sie als globale Variablen zu definieren. Sie gelten dann für die gesamte Unit (d.h. der Speicher wird bereits beim Ausführen der Unit, = Erzeugen des Fensters, reserviert).

9 globale Variablen ● globale Variablen werden an folgender Stelle im Kopf der Unit definiert:... private { private declarations } public { public declarations } end; var Form1: TForm1; a,b,c: real; implementation { TForm1 }... Deklarationen globale Variablen Implementation

10 Selektion ● bedingte Auswahl:if → then ● alternative Auswahl:if → then / else Bedingung ja (erfüllt) Prozedur 1 ausführen nein (nicht erfüllt) Prozedur 2 ausführen

11 Beispiel: Abfangen nicht erlaubter Operationen einzeln stehende Anweisungen müssen nicht in begin und end eingefasst werden ● Division durch 0 ist nicht erlaubt: procedure TForm1.Button4Click(Sender: TObject); begin a:=strtofloat(edit1.Text); b:=strtofloat(edit2.Text); if b=0 then edit3.Text:='nicht erlaubt' else begin a:=strtofloat(edit1.Text); b:=strtofloat(edit2.Text); c:=a/b; edit3.Text:=floattostr(c) end; kein Semikolon vor else!

12 Aufgaben ● Ergänze deinen Programmtext mit sinnvollen Kommentaren! ● Definiere die in allen Prozeduren zur Berechnung verwendeten Variablen global! ● Fange alle Divisionen durch 0 (Division und Wurzel) durch alternative Selektionen ab! ● Zusatz: – Teste dein Programm auf weitere unerlaubte Operationen (z.B. Zahlenbereichsüberschreitungen beim Potenzieren) und fange sie ebenfalls mit alternativen Selektionen ab!

13 weitere Kontrollstrukturen ● Neben der Selektion (if → then → else) existieren noch weitere Kontrollstrukturen: – die case-Anweisung (Mehrfachauswahl) – Schleifen: ● for-Schleife (Zählschleife) ● while-Schleife (überprüft die Bedingung vor dem Schleifendurchlauf) ● repeat-Schleife (überprüft die Bedingung erst nach dem Schleifendurchlauf)

14 Mehrfachauswahl ● Die case-Anweisung vermeidet komplizierte if- then-Konstrukte. Sie benötigt einen ordinalen (abzählbaren) Datentyp (z.B. integer, char). ● Beispiel: var farbe:integer;... case farbe of 0: memo1.Color:=clWhite; 1: memo1.Color:=clAqua; 2: memo1.Color:=clRed; 3: memo1.Color:=clLime; end ordinaler Datentyp! Anweisungsblöcke mit begin und end kapseln!

15 Mehrfachauswahl case farbe of 0: memo1.Color:=clWhite; 1: memo1.Color:=clAqua;... entspricht: if farbe=0 then memo1.Color:=clWhite; if farbe=1 then memo1.Color:=clAqua;... Analog zu if-then kann man auch die case- Anweisung mit einem else-Zweig (für alle anderen Fälle) kombinieren.

16 Zählschleife ● Zählschleifen wiederholen den Inhalt so oft wie festgelegt. ● Beispiel: var i,j:integer;... j:=SpinEdit1.Value; for i:=1 to j do begin //Anweisungen end; Anzahl festlegen Einzelanweisungen müssen nicht mit begin und end gekapselt werden

17 while-Schleife ● Eine while-Schleife wird sooft durchlaufen, wie die Bedingung erfüllt ist. Sie wird im Extremfall (Bedingung schon zu Beginn nicht erfüllt) gar nicht durchlaufen. ● Beispiel: while j<i do begin //Anweisungen j:=j+1 end Achtung! Gefahr einer Endlosschleife (falls Bedingung immer erfüllt bleibt)

18 repeat-Schleife ● Im Gegensatz zur while-Schleife wird hier die Bedingung erst überprüft, nachdem die Schleife durchlaufen wurde. Sie wird also mindestens einmal durchlaufen. ● Beispiel: repeat // Anweisungen i:=i+1; until i<100; begin und end auch bei Anweisungsblöcken nicht notwendig! Achtung! Ebenfalls Gefahr einer Endlosschleife


Herunterladen ppt "Programmieren mit Lazarus. Die Programmoberfläche das Hauptfenster der Objektinspektor das Formular der Quelltexteditor Komponenten...... hier einfügen..."

Ähnliche Präsentationen


Google-Anzeigen