Lazarus/Verzweigungen: Unterschied zwischen den Versionen
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