Die if-Anweisung
Bisher haben deine Programme jede Anweisung ausgeführt, eine nach der anderen, von oben nach unten. Oft muss ein Programm aber entscheiden, was es tut: eine Warnung nur zeigen, 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) {
std::cout << "Es ist heiß, nimm eine Kappe mit" << std::endl;
}
std::cout << "Schönen Tag noch" << std::endl;Das gibt aus:
Es ist heiß, nimm eine Kappe mit
Schönen Tag nochDie if-Anweisung besteht aus drei Teilen:
- dem Schlüsselwort
if. Ein Schlüsselwort ist ein Wort mit besonderer Bedeutung in C++, deshalb kannst du es nicht als Variablennamen verwenden; - der Bedingung in runden Klammern:
(temperatur > 25). Eine Bedingung ist eine Frage, die sich nur mit Ja (wahr) oder Nein (falsch) beantworten lässt: Ist die Temperatur größer als 25? Die Klammern um die Bedingung sind Pflicht; - dem 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 mit > (größer als) und < (kleiner als) vergleichen, genau wie in der Mathematik. Die anderen Vergleichsoperatoren lernst du gleich kennen.
Nach der ) und nach der } steht kein Semikolon. Vergisst du die Klammern um die Bedingung, meldet der Compiler error: expected '(' after 'if'. Ein Semikolon nach der Bedingung ist heimtückischer:
int temperatur = 10;
if (temperatur > 25); {
std::cout << "Es ist heiß, nimm eine Kappe mit" << std::endl;
}Das gibt aus:
Es ist heiß, nimm eine Kappe mitDabei sind es nur 10 Grad. Das Semikolon nach der Klammer beendet die ganze if-Anweisung, sodass zur Bedingung nur eine leere Anweisung gehört. Der Block in den geschweiften Klammern hat mit der Bedingung nichts zu tun und wird immer ausgeführt. Das Programm lässt sich ohne Fehler kompilieren: Der Compiler gibt dazu nur eine Warnung aus, und Warnungen siehst du in diesem Editor nicht.
So schreibst du es:
Anweisungen
- 1
Schreibe unter der Variablen eine
if-Anweisung mit der BedingungmonitorPreis < 4000. Gib in ihrem BlockIch kaufe den Monitoraus. - 2
Schreibe unter dem Block eine zweite
if-Anweisung mit der BedingungmonitorPreis > 4000, dieEr ist zu teuerausgibt. Führe das Programm aus: Es gibt weiterhin nurIch kaufe den Monitoraus, weil 3000 nicht größer als 4000 ist und der zweite Block deshalb übersprungen wird.