if / else Verzweigung in C#

Die if / else Verzweigung fragt eine Bedingung ab und prüft sie auf true oder false.

 

Syntax:

 

if (Bedingung)
{
  WAHR-ZWEIG
}
else
{
  SONST-ZWEIG
}

 

Beispiel:

Wir schreiben ein Programm, welches bei Eingabe von zwei Zahlen prüft, welche Zahl größer ist.

int zahl1, zahl2;

Console.WriteLine("Geben Sie die erste Zahl ein!");

zahl1 = Convert.ToInt16(Console.ReadLine());

Console.WriteLine("Geben Sie die zweite Zahl ein!");

zahl2 = Convert.ToInt16(Console.ReadLine());

if (zahl1 > zahl2)
{
    Console.WriteLine("Die erste Zahl ist größer!");
}
else
{
    Console.WriteLine("Die zweite Zahl ist größer!");
}
Console.ReadLine();

 

Was geschieht, wenn beide Zahlen gleich groß sind?
Es wird der else-Zweig ausgegeben. Um dies zu verhindern, müssen wir eine zusätzliche if-Abfrage durchführen.

int zahl1, zahl2;

Console.WriteLine("Geben Sie die erste Zahl ein!");

zahl1 = Convert.ToInt16(Console.ReadLine());

Console.WriteLine("Geben Sie die zweite Zahl ein!");

zahl2 = Convert.ToInt16(Console.ReadLine());

if (zahl1 > zahl2)
{
    Console.WriteLine("Die erste Zahl ist größer!");
}

if (zahl1 == zahl2)  
// == (Vergleichsoperator für "ist gleich")
{
    Console.WriteLine("Beide Zahlen sind gleich groß!");
}
else
{
    Console.WriteLine("Die zweite Zahl ist größer!");
}
Console.ReadLine();

 


Vergleichsoperatoren

 

  • <  kleiner als
  • >  größer als
  • <=  kleiner gleich
  • >=  größer gleich
  • ==  ist gleich
  • !=  ungleich

 

Wir schreiben ein Programm, welches prüft, ob Testergebnisse positiv oder negativ sind.

Bedingungen: 1. Test über 16 Punkte UND 2. Test über 16 Punkte -> positiv. Sobald ein Test <16 Punkte -> negativ.

int punkte1, punkte2;

Console.WriteLine(„Wieviele Punkte haben Sie beim 1. Test?“);
punkte1 = Convert.ToInt16(Console.ReadLine());

Console.WriteLine(„Wieviele Punkte haben Sie beim 2. Test?“);
punkte2 = Convert.ToInt16(Console.ReadLine());

if (punkte1 > 16 && punkte 2 > 16)
{
  Console.WriteLine(„Super: Positiv““);
}
else
{
  Console.WriteLine(„Leider Negative!““);
}
Console.ReadLine();

 


Gesucht ist ein Programm, welches einen Einkaufsrabatt abhängig von der gekauften Stückzahl (Stückzahl > 400 ->20% Rabatt, Stückzahl 100 bis 400 ->10% Rabatt, Stückzahl <100 ->kein Rabatt) berechnet.

int stueck, rabatt = 0;  // weist der Variablen rabatt einen Anfangswert von 0 zu
double gesamt;
const int preis = 15;  // weist der Variablen preis einen konstanten Wert von 15 zu

Console.WriteLine(„Eine Karte kostet EUR 15,-„);
Console.WriteLine(„Wieviele Karten kaufen Sie?“);
stueck = Convert.ToInt16(Console.ReadLine());

if (stueck > 400)
{
  gesamt = stueck * preis * 0.8;
  rabatt = 20;
  }
  else if (stueck > 100)
  {
    gesamt = stueck * preis * 0.9;
    rabatt = 10;
  }
  else
  {
    gesamt = stueck * preis;
  }

Console.WriteLine(„Sie bekommen {0} % Rabatt!“+“Der Gesamtbetrag ist: {1} Euro“, rabatt, gesamt);
Console.ReadLine();

 

 


geschachtelte if / else Anweisungen

Um Bedingungen abzufragen kann man auch geschachtelte if / else Anweisungen verwenden.

 

Hier ein Programm, welches gemessene Spannungswerte abfragt.

Wichtig ist, die Anweisungen immer von der Mitte heraus zu lesen.

float u;

Console.WriteLine(„Wie groß ist die gemessene Spannung?“);
u = Convert.ToSingle(Console.ReadLine());

if (u > 2)
  if (u > 20)
    if (u > 100)
      Console.WriteLine(„zu groß“);
    else
    Console.WriteLine(„maximal“);
  else
  Console.WriteLine(„mittel“);
else
Console.WriteLine(„minimum“);

Console.ReadLine();

 


Stellen Sie sich vor, Sie möchten einen Anweisungsblock nur dann ausführen, wenn nicht eine, sondern zwei Bedingungen erfüllt sein müssen.

Beispiel:

string Name, Passwort;
Console.WriteLine(„Bitte geben Sie Ihren Namen ein: „);
Name = Console.ReadLine();

if (Name == „Bill Gates“)
{
  Console.WriteLine(„Bitte geben Sie Ihr Passwort ein: „);
  Passwort = Console.ReadLine();

  if (Passwort == „Microsoft“)
  { 
    Console.WriteLine(„Sie müssen wirklich Bill Gates sein!“);
  }
  else
  {
    Console.WriteLine(„Sie sind nicht Bill Gates!“);
  }
}

Console.WriteLine(„Hallo, „ + Name);
Console.ReadLine();

 

Das Programm fragt neben dem Namen auch noch nach einem Passwort.

Angenommen, der Benutzer gibt nicht Bill Gates ein, dann wird er vom Programm einfach nur mit einem simplen Hallo begrüßt.

Gibt er aber Bill Gates ein, so möchte das Programm auch noch ein Passwort wissen.

Ist das Passwort richtig, so wird der Benutzer als Bill Gates erkannt, ist es aber falsch, so hat er sich entweder vertippt oder er ist nicht Bill Gates.

 

Wenn Sie noch mehr als zwei Bedingungen testen wollen, werden geschachtelte if-Anweisungen schnell unübersichtlich. Dieses Problem können Sie mit den logischen Operatoren umgehen. Die beiden if-Anweisungen

if (Name == „Bill Gates“)
{
  if (Passwort == „Microsoft“)
  { 
    Console.WriteLine(„Sie müssen wirklich Bill Gates sein!“);
  }
}

 

können Sie nämlich zu einer zusammen fassen, denn die Zeile

Console.WriteLine(„Sie müssen wirklich Bill Gates sein!“);

soll nur ausgeführt werden, wenn der Name und das Passwort richtig sind. Also schreiben Sie statt der verschachtelten if-Anweisungen

if (Name == „Bill Gates“ && Passwort == „Microsoft“);

und fragen so beide Bedingungen in einer Zeile ab.