|
Blog - Forum - Newsletter
|
Abfragen
6.1 IF-Abfrage: IF { Bedingung } THEN { Anweisung }
Die Bedingungen kann man wieder mit den logischen Operatoren verknüpfen, wie wir es schon bei den Schleifen hatten. Ein
Bündel Anweisungen wird mit BEGIN und END zusammengefasst. Also hätten wir bei
einer Abfrage etwa so etwas: IF platz_belegt AND links_frei THEN BEGIN WHILE platz_belegt DO nimm_auf; drehe_links; vor; END;
Man merkt schon, dass man die Beispiele auch ins Deutsche übersetzen kann: WENN platz_belegt ist UND links_frei ist,
DANN nimm_auf, SOLANGE WIE platz_belegt ist, drehe_links und gehe vor. An dem Beispiel oben sieht man außerdem noch,
dass es durchaus auch möglich ist, eine Schleife in die IF-Abfrage mit einzubauen. Dabei muss es nicht einmal eine
WHILE-Schleife sein. Es kann auch eine weitere Abfrage eingebaut werden, ganz nach Belieben. So, jetzt haben wir also eine WENN-DANN-Abfrage geschaffen. Aber was ist mit dem SONST? Was, wenn die Bedingung nicht erfüllt ist? Ganz einfach: es passiert nichts. Es sei denn, man liest sich den nächsten Abschnitt durch! IF-THEN-ELSE: ELSE Wie schon gesagt wollen wir auch ein SONST in unsere Abfrage einbauen. Das Grundgerüst sieht dabei so aus: IF { Bedingung } THEN { Anweisung } ELSE { Anweisung2 }
Und jetzt kommt's dicke: Da IF und ELSE zusammen gehören, muss man aufpassen. Will man nälich mehrere Anweisungen
einbauen, wenn die Bedingung erfüllt ist, muss man folgendes schreiben:
IF platz_belegt AND links_frei THEN BEGIN WHILE platz_belegt DO nimm_auf; drehe_links; vor; END ELSE BEGIN WHILE vorne_frei DO vor; END;
Wichtig: hinter dem roten END wird KEIN Semikolon gesetzt!!! IF und ELSE gehören zusammen. Würde man hinter dem
END ein Semikolon setzen, würde der Compiler einen Fehler melden! Das ist in NIKI die einzige Ausnahme, bei der hinter
END nichts steht (weder Punkt nocht Semikolon). 6.2.2 Relevanz von ELSE Wie schon gesagt, ELSE muss nicht gesetzt werden. Wird die Bedingung nicht erfüllt, wird sofort das ausgeführt, was hinter der Abfrage kommt. Ein Beispiel: IF false THEN BEGIN WHILE platz_belegt DO nimm_auf; drehe_links; vor; END; vor;
Hier sehen wir, dass die Bedingung in jedem Fall false ergibt. Ob das wirklich so eingegeben werden kann, weiß
ich zwar nicht, aber in Object-PASCAL geht das ohne Weiteres. Im Beispiel wird also sofort die Anweisung vor
ausgeführt, ohne etwas aufzunehmen, dann nach links zu drehen und dann ein weiteres Mal vor zu gehen. Man kann auch hier
noch ein ELSE einbauen. Das würde dann aber in jedem Falle ausgeführt, da ja hier die Bedingung immer true
ergibt! Das bedeutet also: ELSE ist die Negierung der Bedingung in der IF-Abfrage! Ein Beispiel, wie man ELSE umgehen
kann: IF platz_belegt AND links_frei THEN BEGIN WHILE platz_belegt DO nimm_auf; drehe_links; vor; END; IF NOT platz_belegt AND NOT links_frei THEN BEGIN WHILE vorne_frei DO vor; END;
Und hier sehen wir auch den Vorteil von ELSE: es ist deutlich kürzer!!!
|
|
| Mathe - Physik - Informatik - Kunst - Deutsch - Latein - Englisch - Französisch - Italienisch - Spanisch - Politik - Wirtschaft |
| Impressum |
|
|
| Kontakt | Social Bookmarks |
Letzte Änderung: 01.01.1970 01:00 Uhr
URL: http://www.lern-online.net/informatik/programmiersprachen/niki/lektion06.php