Lektion 9:

if und else

  Jetzt können wir schon einfache Programme nach dem Muster Eingabe-Verarbeitung-Ausgabe schreiben. Uns fehlt aber noch die Möglichkeit, Entscheidungen zu treffen. Das geht mit den Schlüsselwörtern if und else, wie folgendes Beispiel zeigt:

#include <iostream.h>
void main()
{
   const float LIMIT=80;
   float geschwindigkeit;
   cout<<"Bitte geben Sie die Geschwindigkeit ein: ";
   cin>>geschwindigkeit;
   if(geschwindigkeit>LIMIT)
      cout<<"Zu schnell gefahren."<<endl;
   else
      cout<<"Nicht zu schnell gefahren."<<endl;
};

   Nach if gibt man in Klammern eine Bedingung ein, und wenn sie wahr ist, dann wird der Befehl nach if ausgeführt, anderenfalls wird der Befehl nach else ausgeführt. Neben den bekannten Operatoren +,-,* und / gibt es z.B. auch die Vergleichsoperatoren:

>       größer
>=      größer oder gleich
==      gleich
!=      nicht gleich
<=      kleiner oder gleich
<       kleiner

 Sie liefern als Wert wahr oder falsch, der Typ dieser Werte ist bool. Entsprechend können auch Variablen oder Funktionen den Typ bool haben. Die Werte wahr und falsch kann man auch direkt mit den Schlüsselwörtern true und false angeben, wobei eine Zeile wie if(true) aber wohl wenig sinnvoll erscheint, da man dort das if auch ganz weglassen könnte.

#include <iostream.h>
void main()
{
   const float LIMIT=80;
   float geschwindigkeit;
   cout<<"Bitte geben Sie die Geschwindigkeit ein: ";
   cin>>geschwindigkeit;
   if(geschwindigkeit>LIMIT)
      cout<<"Zu schnell gefahren."<<endl;
};

 Der Befehl, der nach if oder else steht, darf wieder ein if-Befehl sein. Das nennt man geschachtelte ifs.

#include <iostream.h>
void main()
{
   const float LIMIT=80;
   float geschwindigkeit;
   cout<<"Bitte geben Sie die Geschwindigkeit ein: ";
   cin>>geschwindigkeit;
   if(geschwindigkeit>LIMIT)
      if(geschwindigkeit>LIMIT+30)
         cout<<"Zu schnell gefahren. Punkte in Flensburg!"<<endl;
      else
         cout<<"Zu schnell gefahren. Verwarnungsgeld!"<<endl;
   else
      cout<<"Nicht zu schnell gefahren."<<endl;
};

 Die Befehle nach if und else werden eingerückt, weil das übersichtlicher ist; dem Compiler sind solche Einrückungen völlig egal, er bemerkt sie gar nicht. Für den Programmierer ist durch das Einrücken aber leicht ersichtlich, zu welchem if ein else gehört. Um richtig einzurücken ist es wichtig, zu wissen, daß sich ein else immer (unabhängig von der Einrückung) auf das letzte davor auftauchende if bezieht, das noch kein else hat. Also ist folgende Einrückung schlecht:

#include <iostream.h>
void main()
{
   const float LIMIT=80;
   float geschwindigkeit;
   cout<<"Bitte geben Sie die Geschwindigkeit ein: ";
   cin>>geschwindigkeit;
   if(geschwindigkeit>LIMIT)
      if(geschwindigkeit>LIMIT+30)
         cout<<"Zu schnell gefahren. Punkte in Flensburg!"<<endl;
   else
      cout<<"Nicht zu schnell gefahren."<<endl;
};

Besser eingerückt ist:

#include <iostream.h>
void main()
{
   const float LIMIT=80;
   float geschwindigkeit;
   cout<<"Bitte geben Sie die Geschwindigkeit ein: ";
   cin>>geschwindigkeit;
   if(geschwindigkeit>LIMIT)
      if(geschwindigkeit>LIMIT+30)
         cout<<"Zu schnell gefahren. Punkte in Flensburg!"<<endl;
      else
         cout<<"Nicht zu schnell gefahren."<<endl;
};

Wir sehen jetzt, daß das Programm immer, wenn die Geschwindigkeit zwischen 80 und 110 lag, den Text "Nicht zu schnell gefahren." ausgegeben hat.



Falls Ihnen Fehler im Text auffallen oder Sie Verbesserungsvorschläge haben, dann schicken Sie mir bitte eine Mail. Ich werde mich dann sofort darum kümmern.
[aktuelle Version] [inhalt] [index]      [Fehlerkorrektur, Verbesserungsvorschlag]

© Volkard Henkel <volkard@normannia.de>, last update: 08/25/00