If you're seeing this message, it means we're having trouble loading external resources on our website.

Wenn du hinter einem Webfilter bist, stelle sicher, dass die Domänen *. kastatic.org und *. kasandbox.org nicht blockiert sind.

Hauptinhalt

Wiederholung: Logik und if-Anweisungen

Dies ist eine Wiederholung von dem, was du in diesem Tutorial über Logik und if-Anweisungen gelernt hast.
Oft wollen wir in der Lage sein, Bedingungen in unser Programm einzuarbeiten - wir sollen sagen können "wenn diese hier wahr ist, dann tue X, wenn aber dieses andere hier wahr ist, dann tue bitte Y". Es ist, wie wenn wir morgens aufstehen - "Wenn es draußen regnet, dann nehme ich einen Regenschirm mit, aber wenn die Sonne scheint, trage ich eine Sonnenbrille." Wir können Bedingungen in unseren Programmen festlegen, indem wir if-Anweisungen und if/else-Anweisungen in Kombination mit Bedingungen verwenden.
Eine if-Anweisung lässt das Programm einen Codeblock ausführen, so lange wie die Bedingung wahr ist. Im unten stehenden Code geben wir eine Nachricht aus, sofern x größer als 0 ist:
var x = 5;

if (x > 0) {
  text('x ist eine positive Zahl!', 200, 200);
}
Weil x gleich 5 und das größer als 0 ist, würden wir die Nachricht auf dem Canvas sehen. Würden wir x zu -1 ändern, würde die Nachricht überhaupt nicht auftauchen, da x nicht größer als 0 wäre.
x > 0 ist, was wir als bedingte Anweisung bezeichnen - dies bedeutet, es handelt sich um einen logischen Term, der entweder true oder false ergibt. Wenn ein Wert entweder true oder false ist, nennen wir ihn booleschen Wert (im Gegensatz zu einer Zahl oder einem String). Zum Beispiel könnten wir die bedingte Anweisung anzeigen:
text(x > 0, 200, 200); // Zeigt "true"
Wir könnten dies auch in einer Variable speichern und dann anzeigen:
var isPositive = x > 0;
text(isPositive, 200, 200);
Wir würden dann sagen, dass isPositive einen booleschen Wert enthält, da er entweder true oder false ist, abhängig davon, welchen Wert wir x zuweisen.
Es gibt viele Möglichkeiten, eine Bedingung zu erstellen, die true oder false ergibt, da es viele Vergleichsoperatoren gibt. Hier sind die beliebtesten:
Ausgehend von den folgenden Variablen, hier die am weitesten verbreiteten Operatoren und Bedingungen, die true ergäben:
var meinAlter = 28;
OperatorBedeutungWahre Ausdrücke
===Strikte GleichheitmeinAlter === 28
!==Strikte UngleichheitmeinAlter !== 2928 !== 29
>Größer alsmeinAlter > 2528 > 25
>=Größer als oder gleichmeinAlter >= 2828 >= 28
<Kleiner alsmeinAlter < 3028 < 30
<=Kleiner als oder gleichmeinAlter <= 2828 <= 28
Es ist ein weit verbreiteter Fehler, den Zuweisungsoperator (=) mit dem Gleichheitsoperator (===) zu verwechseln, weil beide Gleichheitszeichen verwenden, sich aber stark von einander unterscheiden. Der Zuweisungsoperator ändert den Wert einer Variable, indem er einen anderen zuweist, während der Gleichheitsoperator lediglich den Wert einer Variable liest und überprüft, ob sie sich mit etwas gleicht. Zum Beispiel:
var x = 2 + 2; // weist den Wert 4 zu

if (x === 4) { // Stellt die Frage, "Ist das gleich 4?"
   text("jap, 2 + 2 = 4!", 200, 200);
}
Manchmal wollen wir mehrere Vergleiche zu einer Bedingung kombinieren. Dafür haben wir logische Operatoren. Diese Operatoren lassen uns in unseren Programmen Sachen wie "Wenn X und Y beide wahr sind" oder "Wenn entweder X oder Y wahr ist" formulieren.
Wenn wir wollen, dass beide Bedingungen wahr sind, können wir den Operator && ("and") benutzen:
var aussentemperatur = 30;
var anzahlWolken = 50;
if (aussentemperatur > 30 && anzahlWolken < 5) {
  text("Mach Sonnencreme drauf!", 200, 200);
}
Oft müssen wir in unseren Programmen überprüfen, ob die Maus eines Nutzers sich innerhalb eines Rechtecks befindet (um einen Button zu programmieren), wofür wir mehrere Operatoren && benötigen:
rect(100, 50, 100, 100); 

mousePressed = function() {
    if (mouseX > 100 && mouseX < 200 && mouseY > 50 && mouseY < 150) {
      text("Du hast es geklickt!", 80, 75);
    }
};
Wenn uns nur interessiert, ob mindestens eine Bedingung wahr ist, können wir den || Operator ("or") verwenden:
var degreesOutside = 70;
var numberOfClouds = 50;
if (degreesOutside > 70 || numberOfClouds < 5) {
  text("Wear sun screen if it's hot outside or there aren't many clouds!", 200, 200);
}
Wir können sowohl && als auch || in der gleichen Bedingung vereinen, wenn wir sehr komplexe Bedingungen prüfen müssen. Benutze einfach Klammern, um die Ausdrücke zu gruppieren, sodass das Programm nicht verwirrt ist, in welcher Reihenfolge es die Ausdrücke auswerten muss.
var meinAlter = 28;
if ((meinAlter >= 0 && meinAlter < 3)  || meinAlter > 90) {
  println('Du bist in deinen besten Jahren!');
}
Nun kehren wir zu den if-Anweisungen zurück. Häufig wollen wir einen Codeblock ausführen, wenn eine if-Bedingung nicht wahr ist. In diesem Fall fügen wir eine else-Anweisung nach der if-Anweisung ein.
var alter = 28;
if (alter > 18) {
  println('Juppi, du darfst fahren!');
} else {
  println('Entschuldige, aber du brauchst noch ' + (18 - age) + ' Jahre bis du fahren darfst.');
}
Manchmal möchten wir mehrere Bedingungen überprüfen und wollen für jeden Fall verschiedene Dinge machen. Dann benutzen wir else if:
//Folgendes Beispiel stammt aus dem US-amerikanischen Wahlrecht
var alter = 20;
if (alter >= 35) {
  println('Du darfst wählen UND und bist für beliebige politische Ämter wählbar!');
} else if (alter >= 30) {
  println('Du darfst wählen UND für den Senat kandidieren!');
} else if (alter >= 18) {
  println('Du darfst wählen!');
} else {
  println('Du kannst dich am politischen Prozess noch nicht beteiligen!');
}
Du kannst so viele Bedingungen überprüfen, wie du möchtest. Aber prüfe, dass jede deiner Bedingungen auch eintreten kann. Überprüfe deinen Code, indem du Variablen änderst, bis du sie in die Codeblöcke setzt, damit du dir sicher bist, dass alles funktioniert.
Wie du nun hoffentlich erkennst, sind Bedingungen ein wichtiger Bestandteil des Programmierens und lassen uns wesentlich mächtigere und flexiblere Programme schreiben.

Willst du an der Diskussion teilnehmen?

Verstehst du Englisch? Klick hier, um weitere Diskussionen auf der englischen Khan Academy Seite zu sehen.