Kids' Programming Language
Inhalt

Sprachreferenz

wenn...dann ()

Bedingte Ausführung von Befehlen

Es kommt häufig vor, dass ein Programm auf den Wert eines Objekts (Eingaben vom Benutzer wie z.B. eine Zahl oder einen Text) in einer bestimmten Weise reagieren soll. Tritt eine bestimmte Situation ein, sollen spezielle Anweisungen ausgeführt werden. Man nennt dies bedingte Ausführung.

Zunächst ein Beispiel: Ein Programm soll das Alter einer Person einlesen und entscheiden, ob diese Person volljährig ist. Zunächst muss über einen Dialog ('Zahldialog') das Alter eingelesen werden, was folgendermaßen geschehen kann:
 
Programm
Dialog=ZahlDialog(Text="Gib dein Alter ein!")
zeige:Dialog
Alter=gibZahl:Dialog
schreibe:"Du bist "+Alter+" Jahre alt."
 
Um abzufragen, ob der Benutzer 18 Jahre oder älter ist, lautet die Bedingung 'Alter>=18'. Um eine 'wenn...dann' Anweisung einzufügen, klickt man auf das  am linken Fensterrand. Anschließend lässt sich die Bedingung eingeben. In dem grünen Kasten unter der Bedingung  schreibt man, was gemacht werden soll, falls die Bedingung zutrifft. In diesem Fall soll "Du bist volljährig." geschrieben werden:
 
Programm
Dialog=ZahlDialog(Text="Gib dein Alter ein!")
zeige:Dialog
Alter=gibZahl:Dialog

wenn Alter>=18 dann
schreibe:"Du bist volljährig."

 
Soll außerdem auch etwas ausgegeben werden, wenn die Bedingung nicht zutrifft, muss man mit der rechten Maustaste auf 'wenn' klicken. Anschließend wählt man in dem erscheinenden Menü 'sonst' aus und es erscheint unter 'sonst' ein zusätzlicher Kasten, der nur dann ausgeführt wird, falls die Bedingung nicht zutrifft:
 
Programm
Dialog=ZahlDialog(Text="Gib dein Alter ein!")
zeige:Dialog
Alter=gibZahl:Dialog

wenn Alter>=18 dann
schreibe:"Du bist volljährig."
sonst
schreibe:"Du bist in "+(18-Alter)+" Jahr(en) volljährig."

 
Sollen noch weitere Bedingungen abgefragt werden, falls die 'wenn...dann' Bedingung nicht zutrifft, lässt sich durch einen Rechtsklick mit der Maus eine 'oder wenn...dann' Bedingung einfügen:
 
Programm
Dialog=ZahlDialog(Text="Gib dein Alter ein!")
zeige:Dialog
Alter=gibZahl:Dialog

wenn Alter>18 dann
schreibe:"Du bist volljährig."
oder wenn Alter=18 dann
schreibe:"Du bist gerade volljährig geworden."
sonst
schreibe:"Du bist in "+(18-Alter)+" Jahr(en) volljährig."

 
Genauso wie Zahlen lassen sich auch Kommazahlen miteinander vergleichen.

Texte vergleichen

Außer Zahlen kann man unter anderem auch Texte vergleichen. Das folgende Programm vergleicht den Text 'Name="jan"' mit "Jan". Verwendet man ein einfaches Gleichheitszeichen, wird der Text verglichen, ohne dass auf Groß- und Kleinschreibung geachtet wird:
 
Programm
Name="jan"

wenn Name="Jan" dann
schreibe:"Der Name ist Jan."

 
Dieses Programm schreibt deswegen "Der Name ist Jan.". Verwendet man ein doppeltes Gleichheitszeichen '==', so werden die folgenden Anweisungen nur ausgeführt, falls die Texte (unter Beachtung der Groß- und Kleinschreibung) identisch sind:
 
Programm
Name="jan"

wenn Name=="Jan" dann
schreibe:"Der Name Jan wurde groß geschrieben."

wenn Name=="jan" dann
schreibe:"Der Name Jan wurde klein geschrieben."

Wahr oder falsch

Manchmal ist es praktisch direkt zu bestimmen, ob eine 'wenn...dann' Anweisung ausgeführt werden soll. Dazu benötigt man ein Objekt, das entweder den Wert wahr oder falsch besitzt. Solche Objekte gehören zur Klasse 'Bool' (nach einem bekannten Mathematiker). Solche Objekte lassen sich erzeugen durch 'Objektname=wahr' oder 'Objektname=falsch' und können durch die 'wenn...dann' Anweisung überprüft werden:
 
Programm
farbig=wahr

wenn farbig dann
zeige:Kreis(Farbe="rot")
sonst
zeige:Kreis(Farbe="schwarz")

 
Für 'farbig=wahr' wird also ein roter Kreis gezeigt, während für 'farbig=falsch'
 
Programm
farbig=falsch

wenn farbig dann
zeige:Kreis(Farbe="rot")
sonst
zeige:Kreis(Farbe="schwarz")

 
ein schwarzer Kreis dargestellt wird. Alternativ hätte man auch 'wenn farbig=wahr dann' schreiben können.

Nicht, und, oder

Es lassen sich auch mehrere Bedingungen mit Hilfe von 'und' und 'oder' verknüpfen. Die Anweisungen werden bei 'und' nur ausgeführt falls beide Bedingungen (links und rechts vom 'und') erfüllt sind. Bei 'oder' muss hingegen nur eine Bedingung zutreffen. Außerdem lässt sich vor jede Bedingung noch ein 'nicht' stellen, das das Ergebnis der Bedingung umdreht bzw. verneint (aus wahr wird falsch, aus falsch wird wahr). Sind mehrere Verknüpfungen vorhanden, werden zunächst alle 'nicht'-, dann alle 'und'- und danach alle 'oder'-Verknüpfungen ausgeführt. Durch das Setzen von Klammern lässt sich die Reihenfolge der Auswertung bestimmen wie im folgenden etwas komplexeren Beispiel:
 
Programm
z=13
Primzahl=wahr

wenn z>=10 und (nicht Primzahl oder z=13) dann
schreibe:"Die Zahl ist größer/gleich 10. Sie ist keine Primzahl oder aber gerade 13."

Gleichheit anderer Objekte*

Es wurden bisher Objekte der Klassen Zahl, Kommazahl, Text und Bool verglichen. Dabei wurden die in den Objekten gespeicherten Werte verglichen. Andere Objekte (wie z.B. ein Kreis) enthalten hingegen mehr als einen Wert und werden nicht anhand ihrer Werte verglichen. Bei diesen Objekten wird verglichen, ob die Objekte tatsächlich identisch sind. Der Unterschied ist folgender: Zwei Kugelschreiber mögen absolut gleich aussehen, trotzdem sind sie nicht die selben (d.h. identisch).

Wenn z.B. ein Kreis erzeugt wird mit 'Kreis1=Kreis()' so wird immer ein neuer Kreis erzeugt. Der Kreis 'Kreis2=Kreis()' sieht zwar vollkommen gleich aus, ist aber nicht der selbe. Das wird unter anderem deutlich, wenn man nachträglich die Farbe von 'Kreis1' ändert ('setze(Farbe="gelb"):Kreis1'). Nach der Zuweisung 'Kreis3=Kreis1' hingegen, bezeichnen 'Kreis1' und 'Kreis3' hingegen den selben Kreis (die Objekte sind also identisch). Das folgende Programm
 
Programm
Kreis1=Kreis()
Kreis2=Kreis()
Kreis3=Kreis1

wenn Kreis1=Kreis2 dann
schreibe:"Kreis1 und Kreis2 sind das selbe Objekt."

wenn Kreis1=Kreis3 dann
schreibe:"Kreis1 und Kreis3 sind das selbe Objekt."

 
gibt deswegen nur "Kreis1 und Kreis3 sind das selbe Objekt." aus.

Jetzt kostenlos herunterladen.
Diese Seite ausdrucken.
Diese Seite speichern.