Die if-Anweisung
Bisher haben deine Programme jede Anweisung ausgeführt, eine nach der anderen, von oben nach unten. Ein Programm muss aber oft entscheiden, was zu tun ist: eine Warnung nur anzeigen, wenn ein Passwort zu kurz ist, oder einen Rabatt nur geben, wenn der Kunde Student ist. Solche Entscheidungen treffen wir ständig: Wenn es regnet, nehme ich einen Regenschirm mit.
In C schreibst du eine Entscheidung mit der if-Anweisung:
int temperatur = 30;
if (temperatur > 25) {
printf("Es ist heiß, nimm eine Mütze mit\n");
}
printf("Schönen Tag noch\n");Das gibt Folgendes aus:
Es ist heiß, nimm eine Mütze mit
Schönen Tag nochDie if-Anweisung hat drei Teile:
- das Schlüsselwort
if. Ein Schlüsselwort ist ein Wort mit einer besonderen Bedeutung in C, deshalb kannst du es nicht als Namen einer Variablen verwenden; - die Bedingung in Klammern:
(temperatur > 25). Eine Bedingung ist eine Frage, die man nur mit Ja (wahr) oder Nein (falsch) beantworten kann: Ist die Temperatur größer als 25? Die Klammern um die Bedingung sind Pflicht; - den Codeblock in geschweiften Klammern
{ }. Der Block wird nur ausgeführt, wenn die Bedingung wahr ist.
Nach dem Block läuft das Programm wie gewohnt weiter, deshalb wird Schönen Tag noch in jedem Fall ausgegeben. Wäre temperatur gleich 10, wäre die Bedingung falsch: Das Programm würde den Block überspringen und nur Schönen Tag noch ausgeben.
In einer Bedingung kannst du wie in der Mathematik mit > (größer als) und < (kleiner als) vergleichen. Die anderen Vergleichsoperatoren lernst du gleich kennen.
Die geschweiften Klammern sind nötig, sobald der Block mehr als eine Anweisung hat. In diesem Kurs schreibst du sie immer, auch um eine einzelne Anweisung. Warum, siehst du in der nächsten Übung.
Nach der ) und nach der } steht kein Semikolon. Wenn du die Klammern um die Bedingung vergisst, meldet der Compiler error: expected '(' after 'if'. Ein Semikolon nach der Bedingung ist heimtückischer:
int temperatur = 10;
if (temperatur > 25); {
printf("Es ist heiß, nimm eine Mütze mit\n");
}Das gibt Folgendes aus:
Es ist heiß, nimm eine Mütze mitDabei sind es nur 10 Grad. Das Semikolon nach der Klammer beendet die ganze if-Anweisung, zur Bedingung gehört also nur eine leere Anweisung. Der Block in geschweiften Klammern hat nichts mit der Bedingung zu tun und wird immer ausgeführt. Der Compiler gibt dazu nur eine Warnung aus, und Warnungen werden auf dieser Seite nicht angezeigt. Wenn ein Block läuft, obwohl er nicht laufen sollte, such also zuerst nach einem Semikolon hinter der Bedingung.
So schreibst du es:
Anweisungen
- 1
Schreibe anstelle des Kommentars eine
if-Anweisung mit der Bedingungmonitor_preis < 4000. Gib in ihrem BlockIch kaufe den Monitoraus. - 2
Schreibe unter den Block eine zweite
if-Anweisung mit der Bedingungmonitor_preis > 4000, dieEr ist zu teuerausgibt. Führe das Programm aus: Es gibt weiterhin nurDer Monitor kostet 3000undIch kaufe den Monitoraus, denn 3000 ist nicht größer als 4000, also wird der zweite Block übersprungen.