Entscheidungen

Entscheidungen

Description: In diesem Video werden euch kurz die Entscheidungen vorgestellt, um euer Programm interaktiv zu gestalten.

Duration: PT13M50S

ContentUrl: https://sec.ch9.ms/ch9/6c09/9f0b27f8-2b56-4d62-bdce-6894f2fa6c09/05Entscheidungen_mid.mp4

EmbedUrl: https://channel9.msdn.com/Series/Programmieren-fuer-Beginner-mit-C-/05-Entscheidungen/player

UploadDate: 2014-09-30T12:37:00+02:00

Thumbnail

Inhaltszusammenfassung

In diesem Kapitel geht es um Entscheidungen/Verzweigung, die es ermöglichen, dass ein bestimmter Teil des Programms nur dann ausgeführt wird, wenn eine angegebene Bedingung zutrifft. Im Folgenden werden 2 Entscheidungsarten im Code besprochen ( 1. WENN - DANN - SONST    und   2. Verzweigung "switch-case" ).


Durchführung

Gehen wir von folgendem Code aus, in welchen wir dann Entscheidungen einfügen werden:

class Program
{
static void Main(string[] args)
{
// Variable
int zahl = 5;

Console.WriteLine("Die Zahl ist ungleich 5");

Console.WriteLine("Die Zahl ist gleich 5");

Console.ReadLine();
}
}

Wenn-Dann Entscheidung

Wenn-Dann Entscheidungen sind volgender Maßen aufgebaut. Begonnen wird immer mit einem IF gefolgt von einem keinem, oder mehreren ELSE IFs und kann mit einem ELSE ohne Bedingung enden. IF und ELSE IF haben in den runden Klammern Bedingungen, deren Ergebnis TRUE (richtig) oder FALSE (falsch) ist. Diese Wahr- oder Falsch-Ergebnisse entstehen durch Vergleiche wie zum Beispiel:
Übereinstimmung:     1 == 1      oder  "HI" == "HI"   oder 3.14 == 3.14

Es gibt noch weitere Vergleichsoperatoren die neben ==  noch verwendet werden können:

== gleich
!= ungleich
< kleiner
> größer
<= kleiner gleich
>= größer gleich



Fügen wir die Entscheidung in unserem Beispiel ein:

class Program
{
static void Main(string[] args)
{
// Variable
int zahl = 5;

if (zahl != 5)
{
Console.WriteLine("Die Zahl ist ungleich 5");
}
else
{
Console.WriteLine("Die Zahl ist gleich 5");
}

Console.ReadLine();
}
}

Ersetze die Bedingung einmal durch eine andere, in der zum Beispiel der Operator "kleiner als" oder "größer als" verwendet wird.

Ersetzen wir die konstante Zahl durch eine eingegebene Zahl des Benutzers: Wie man auf die Eingabe von dem Benutzer wartet wurde schon in vorherigen Themen besprochen (Console.Read). Dieser Befehl hat ein Ergebnis (Eingabe des Benutzers), welches wir bisher immer ignoriert haben. Speichern wir es nun in eine Variable. !!Beachte, dass die Eingabe ein String, also ein Text, war und wir diesen String in eine Zahl umwandeln müssen!! Wenn du folgendes eingibst, wird dir vorgeschlagen in was die Eingabe umgewandelt werden kann:   Convert.To

class Program
{
static void Main(string[] args)
{
// Variable
Console.WriteLine("Triff deine Eingabe");
int zahl = Convert.ToInt32(Console.ReadLine());

if (zahl != 5)
{
Console.WriteLine("Die Zahl ist ungleich 5");
}
else
{
Console.WriteLine("Die Zahl ist gleich 5");
}

Console.ReadLine();
}
}

Es ist auch möglich, mehrere Bedingungen anzugeben - entweder durch ein "und" oder ein "oder" verknüpft. Das "und" wird mit && ausgedrückt, das "oder" mit ||.

class Program
{
static void Main(string[] args)
{
Console.WriteLine("Triff deine Eingabe");
int zahl = Convert.ToInt32(Console.ReadLine());

if (zahl == 5 || zahl == 6)
{
Console.WriteLine("Die Zahl ist gleich 5 oder 6");
}
else if (zahl == 5 && zahl == 6)
{
//Bedingung kann nicht zu true evaluieren!
Console.WriteLine("Hier können wir nicht reinkommen");
}
else
{
Console.WriteLine("Andere Eingabe.");
}

Console.ReadLine();
}
}

Das erste if evaluiert hier zu true, wenn die Eingabe entweder 5 oder 6 war. Das else if kann nicht zu true evaluieren, weil "zahl" dann gleichzeitig den Wert 5 und 6 haben müsste, was nicht möglich ist.



Switch - case - Entscheidung

Hierbei wird das Wort in den runden Klammern immer mit einem "ist gleich wie" verbunden zu jedem Case. Dabei ist es wichtig, nach jedem Case einen break-Befehl einzugeben, damit nicht auch noch der restliche Code des Switch Statements ausgeführt wird, sondern das Programm nach dem Ausführen des richtigen Case das Switch Statement abbricht. Wenn kein Case mit der eingegeben Variable übereinstimmt, wird "default" (Standard) aufgerufen. Das folgende Beispiel erläutert dies:

class Program
{
static void Main(string[] args)
{
// Wort eingeben
Console.WriteLine("Schreibe dein Wort");
String wort = Console.ReadLine();

switch (wort)
{
case "Hallo":
Console.WriteLine("Hallo zurück");
break;
case "Klopf Klopf":
Console.WriteLine("Wer ist da?");
break;
default:
Console.WriteLine("Pech gehabt");
break;
}

Console.ReadLine();
}
}

Wenn das Programm ausgeführt und ein paar verschiedene Eingaben versucht wurden, fällt vielleicht auf, dass das Programm zwischen Groß- und Kleinschreibung unterscheidet. Damit nicht mehr auf die Groß- und Kleinschreibung geachtet werden muss, wandelt man ALLE Buchstaben in Kleinbuchstaben bzw. in Großbuchstaben um. Die Umwandlung in Kleinbuchstaben wird bei einer String-Variable mit .ToLower() und die Umwandlung in Großbuchstaben mit .ToUpper() durchgeführt. !! Beachte, wenn man die Variable in Kleinbuchstaben umwandelt, müssen die vergleichenden Wörter auch in Kleinbuchstaben sein, dasselbe gilt für Großbuchstaben  !!

switch (wort.ToLower())
{
case "hallo":
Console.WriteLine("Hallo zurück");
break;
case "klopf klopf":
Console.WriteLine("Wer ist da?");
break;
default:
Console.WriteLine("Pech gehabt");
break;
}

Vollständiger Programmcode für WENN-DANN

class Program
{
static void Main(string[] args)
{
// Variable
Console.WriteLine("Triff deine Eingabe");
int zahl = Convert.ToInt32(Console.ReadLine());

if (zahl != 5)
{
Console.WriteLine("Die Zahl ist ungleich 5");
}
else
{
Console.WriteLine("Die Zahl ist gleich 5");
}

Console.ReadLine();
}
}

Vollständiger Programmcode für Switch-Case:

class Program
{
static void Main(string[] args)
{
// Wort eingeben
Console.WriteLine("Schreibe dein Wort");
String wort = Console.ReadLine();

switch (wort.ToLower())
{
case "hallo":
Console.WriteLine("Hallo zurück");
break;
case "klopf klopf":
Console.WriteLine("Wer ist da?");
break;
default:
Console.WriteLine("Pech gehabt");
break;
}

Console.ReadLine();
}
}