Lazarus/Verzweigungen: Unterschied zwischen den Versionen

Aus ZUM-Unterrichten
main>Peterdauscher
Keine Bearbeitungszusammenfassung
main>Peterdauscher
KKeine Bearbeitungszusammenfassung
Zeile 58: Zeile 58:


end.
end.
</source>}}
</source>}}


Zeile 64: Zeile 63:


Das kann man ändern. Im Falle, dass die Eingabe nicht 'geheim' lautet, soll in Edit2 die Bemerkung: 'Falsches Passwort' ausgegeben werden.
Das kann man ändern. Im Falle, dass die Eingabe nicht 'geheim' lautet, soll in Edit2 die Bemerkung: 'Falsches Passwort' ausgegeben werden.
{{kasten_blau|<source  line start=36 highlight="1-8" lang="pascal">
{{kasten_blau|<source  line start=36 highlight="1-8" lang="pascal">
procedure TForm1.Button1Click(Sender: TObject);
procedure TForm1.Button1Click(Sender: TObject);
Zeile 74: Zeile 72:
   else Edit2.Text:='Falsches Passwort';
   else Edit2.Text:='Falsches Passwort';
end;               
end;               
</source>}}
=== Wichtige Anmerkungen ===
* Achtung: vor "else" steht nie ein Semiklon. Das Semikolon beendet einen Befehl; die ganze If-then-else-Konstruktion ist jedoch im Grunde ein einzelner Befehl; das Semikolon steht erst danach.
* Man beachte das Gleichheitszeichen in <tt><nowiki>if Edit1.Text='geheim'</nowiki></tt>. Es ist ein einzelnes Gleichheitszeichen '''ohne Doppelpunkt'''. Es beschreibt auch etwas ganz anderes als eine Wertzuweisung: Es beschreibt einen Bedingung. Es gibt nur zwei Möglichkeiten: Die Bedingung ist erfüllt (wahr, engl. true) oder eben nicht (falsch, engl. false).
== Mehrere Anweisungen verknüpfen ==
Bisher wird in jedem der beiden Fälle genau eine einzelne Anweisung ausgeführt. Es kann aber leicht sein, dass nur im Fall einer erfüllten (oder auch nicht erfüllten) Bedingung gleich mehrere Anweisungen ausgeführt werden sollen.  Im nächsten Beispiel soll z.B. bei einer falschen Eingabe auf dem Button die Beschriftung zu 'Nochmal versuchen' geändert weden:
{{kasten_blau|<source  line start=36 highlight="1-11" lang="pascal">
procedure TForm1.Button1Click(Sender: TObject);
var alter : integer;
begin
  if Edit1.Text='geheim'
  then Edit2.Text:='Sie sind angemeldet'
  else begin
      Edit2.Text:='Falsches Passwort';
      Button1.Caption:='Nochmal versuchen';
      end;
end;               
</source>}}
</source>}}

Version vom 9. Januar 2013, 21:59 Uhr

Wenn-Dann-Sonst (If-then-else)

Bisher wurden die Computerprogramme strikt von oben nach unten abgearbeitet. Das ist aber nicht immer wünschenswert. Zum Beispiel kann es sein, dass bestimmte Programmteile nur dann ausgeführt werden, wenn bestimmte Bedingungen auch erfüllt sind. Wir alle kennen z.B. Passwort-Abfragen, bei denen Funktionen eines Programms oder einer Website nur dann funktionieren, wenn man das richtige Passwort angibt.

Beispiel

Wir betrachten das einfache Beispiel eines Lazarus-Programms mit zwei Edit-Feldern, Edit1 und Edit2 und einem Button Button1. Wenn der Button1 gedrückt wird, soll der Computer die Eingabe in Edit1 überprüfen. Steht darin das richtige Passwort ("geheim"), so soll in Edit2 angezeigt werden: "Sie sind angemeldet!"

Edit3.Text:=IntToStr(c);

Das ganze Programm zum Rechnen mit Integer-Zahlen

Das folgende Programm funktioniert, wenn es auf der Oberfläche die Komponenten Edit1, Edit2 und Button1 gibt. Vorlage:Kasten blau

Das Programm ist allerdings noch nicht besonders benutzerfreundlich. Gibt der Benutzer z.B. ein falsches Passwort ein, so erhält er gar keine Nachricht. Es passiert einfach nichts.

Das kann man ändern. Im Falle, dass die Eingabe nicht 'geheim' lautet, soll in Edit2 die Bemerkung: 'Falsches Passwort' ausgegeben werden. Vorlage:Kasten blau

Wichtige Anmerkungen

  • Achtung: vor "else" steht nie ein Semiklon. Das Semikolon beendet einen Befehl; die ganze If-then-else-Konstruktion ist jedoch im Grunde ein einzelner Befehl; das Semikolon steht erst danach.
  • Man beachte das Gleichheitszeichen in if Edit1.Text='geheim'. Es ist ein einzelnes Gleichheitszeichen ohne Doppelpunkt. Es beschreibt auch etwas ganz anderes als eine Wertzuweisung: Es beschreibt einen Bedingung. Es gibt nur zwei Möglichkeiten: Die Bedingung ist erfüllt (wahr, engl. true) oder eben nicht (falsch, engl. false).


Mehrere Anweisungen verknüpfen

Bisher wird in jedem der beiden Fälle genau eine einzelne Anweisung ausgeführt. Es kann aber leicht sein, dass nur im Fall einer erfüllten (oder auch nicht erfüllten) Bedingung gleich mehrere Anweisungen ausgeführt werden sollen. Im nächsten Beispiel soll z.B. bei einer falschen Eingabe auf dem Button die Beschriftung zu 'Nochmal versuchen' geändert weden: Vorlage:Kasten blau