Kontrollstrukturen
Entscheidung
Ein Rechner kann nur eine Entscheidung treffen, wenn er von einer Aussage prüfen kann, ob diese wahr oder falsch ist. Dazu muss immer eine Behauptung mit einer Tatsache verglichen werden:
if (1==2) {
alert("Das kann nicht sein!");
} else {
alert("1 und 2 sind eben doch unterschiedlich.");
}
Du siehst, dass in ()
eine Behauptung, die auf Wahrheit, geprüft wird und dann in {}
Anweisungen ausgeführt werden. if
bedeutet falls und else
sonst. Jenachdem was stimmt werden nur die Befehle aus dem {}
Block ausgeführt.
warn> 1 und 2 werden hier mit ==
verglichen. Das wirkt vielleicht komisch und anders als in Mathe, ist aber äußerst wichtig. Warum das so ist lernst du im Abschnitt Variabeln.
Beispiele für Vergleiche:
1==2
– Hier prüft er ob 1 gleich 2 ist. Das Ergebnis ist falsch (false
)1!=2
– Hier prüft er, ob 1 ungleich 2 ist. Das Ergebnis ist wahr (true
)kara.onLeaf()==true
– Hier wird gefragt, ob kara auf einem Kleeblatt steht.kara.onLeaf()
– Hier wird ein Trick gemacht. Da die Funktionkara.onLeaf()
bereits wahr oder falsch sagt, darf ausnahmsweise auf==true
verzichtet werden.!kara.onLeaf()
– Dies ist noch ausgefuchster: Das Ausrufezeichen dreht die Behauptung einfach um. Es ist also die Kurzfassung vonkara.onLeaf()!=true
Natürlich lassen sich mehr als nur eine Behauptung prüfen:
if (Bedingung1) {
// wird ausgeführt, wenn Bedingung1 war ist.
} else if (Bedingung2) { //wird nur geprüft, wenn Bedingung1 nicht zutraf.
// wird ausgeführt, wenn Bedingung2 war ist.
} else {
//wird ausgeführt, wenn Bedingung1 und Bedingung2 nicht zutreffen.
}
if
prüft eine Bedingung. else
wird ausgeführt, wenn if
falsch war (engl. else
zu deutsch sonst). Möchte man noch eine weitere Alternative prüfen, so kann man beide kombinieren zu else if
(wenn nicht, dann prüfe Folgendes…)
else if
kann beliebig oft geschrieben oder ganz weggelassen werden:
if (Bedingung1) {
// wird ausgeführt, wenn Bedingung1 war ist.
} else {
//wird ausgeführt, wenn Bedingung1 und Bedingung2 nicht zutreffen.
}
if (Bedingung1) {
// wird ausgeführt, wenn Bedingung1 war ist.
} else if (Bedingung2) { //wird nur geprüft, wenn Bedingung1 nicht zutraf.
// wird ausgeführt, wenn Bedingung2 war ist.
} else if (Bedingung3) { //wird nur geprüft, wenn Bedingung1 nicht zutraf.
// wird ausgeführt, wenn Bedingung3 war ist.
} else {
//wird ausgeführt, wenn Bedingung1, Bedingung1 und Bedingung3 nicht zutreffen.
}
Schleife
Mit Schleifen können Befehle, die einmal geschrieben wurden, mehrmals aufgerufen werden:
while (!kara.treeFront()) {
kara.move();
}
info> Beachte die Ähnlichkeit zu Entscheidungen
Hier wird geprüft, ob kara vor einem Baum steht, wenn nicht, dann geht kara einen Schritt nach vorne. Sobald sie vor einem Baum steht hört sie auf.
do {
kara.move();
} while (!kara.onLeaf())
Hier geht kara so lange vorwärts, bis kara auf einem Kleeblatt steht. (Beachte, dass die Frage nach einem Baum vor und eine nach einem Kleeblatt nach dem Laufen gestellt werden sollte)
for (i = 0; i < 5; i++) {
kara.move();
}
Hier läuft kara genau 5-mal. Anschließend bleibt sie stehen. Was dieser Ausdruck genau bedeutet ist zu Beginn noch sehr schwer zu verstehen, merke dir, dass die anstelle der 5 eine beliebig andere Zahl schreiben könntest, wie oft etwas gemacht werden soll.
eigene Funktion
Nicht nur kara kann Funktionen ausführen. Auch du kannst eine Funktion erstellen:
function karaDrehtDurch() {
kara.turnLeft();
kara.turnLeft();
kara.turnLeft();
kara.turnLeft();
}
// hier kommt das Hauptprogramm hin, z.B.:
karaDrehtDurch();
Hier wurde die Methode karaDrehtDurch
beschrieben und anschließend ausgeführt. Wichtig ist, dass die Methode immer über der ersten Benutzung beschrieben wird.
Oft kapseln Funktionen eine Reihe von Befehlen. Damit sich diese an die entsprechende Situation anpassen können, kannst du Parameter übergeben:
function lachen(n) {
for (i = 0; i < n; i++) {
alert("LOL");
}
}
// hier kommt das Hauptprogramm hin, z.B.:
lachen(7);
Es ist auch möglich das Ergebnis einer Funktion weiter zu verwenden:
function lachen() {
return "LOL"
}
// hier kommt das Hauptprogramm hin, z.B.:
alert(lachen());
Mit dem Schlüsselwort return
wird LOL
quasi dort eingesetzt, wo wir eigentlich die Funktion hingeschrieben haben.