Grundlagen: Abfragen

Ein wichtiger Bestandteil von Programmen sind Abfragen. Für Abfragen können wir entweder den if-Befehl oder das switch-case-Statement verwenden.
Der if-Befehl kennzeichnet sich durch das Schlüsselwort if. Eine Abfrage mit if setzt sich aus dem Schlüsselwort if und einer Bedienung zusammen. Die Bedienung muss in runden Klammern notiert werden. Dabei muss diese immer vom Typ bool sein. Typische Operatoren für Vergleiche sind == (ist gleich), != (ist ungleich), > (größer als), >= (größer als oder gleich), < (kleiner), und <= (kleiner gleich). Natürlich kann auch eine bool-Variable oder der Rückgabewert einer Funktion (Voraussetzung ist der Rückgabewert bool) geprüft werden. Ein „boolscher“ Wert kann durch das Ausrufezeichen negiert (also umgekehrt) werden. Die if-Abfrage wird immer von einem Block (geschweifte Klammern) gefolgt. Diese geschweiften Klammern können bei Blöcken von if-Abfragen und Schleifen (dazu später mehr) weggelassen werden, wenn nur 1 Statement notiert wird. Wenn wir bei einer if-Abfrage auch den Fall abfangen möchten, wenn die Bedingung nicht zutrifft, benutzen wir das Schlüsselwort else. Falls wir noch zusätzlich andere Bedingungen prüfen werden, welche eigene Anweisungen haben sollen, können wir mit den Schlüsselwörtern else if einen oder mehrere weitere Blöcke bilden. Natürlich können wir auch mehrere Bedingungen verknüpfen: Dafür dient die Verundung (&&) und die Veroderung (||). Bei der Kombination von „und“ und „oder“ können bzw. müssen wir noch weitere Klammern setzen.
Der switch-case-Befehl besteht aus 2 Teilen: Dem zu prüfenden Wert und den verschiedenen zu überprüfenden Werten. Der zu prüfende Wert kennzeichnet sich durch das vorangestellte Schlüsselwort switch. Der Wert wird dabei wie bei einer if-Abfrage in Klammern notiert. Der switch-Befehl bildet einen eigenen Block, in welchem mehrere case-Statements notiert werden können. Die Klammern bei einem switch-Block können nicht weggelassen werden. Ein case-Statement bildet sich aus dem Schlüsselwort, dem zu überprüfenden Wert und einem Doppelpunkt. Nun können weitere Befehle notiert werden, welche ausgeführt werden sollen, wenn der zu prüfende Wert mit dem zu überprüfenden Wert übereinstimmt. Auch hier bildet sich ein Block, wobei die Klammern nicht unbedingt notiert werden müssen. Am Ende aller Bedingungen für diesen Block muss jedoch immer der Befehl break notiert werden. Des Weiteren können case-Bedingungen gestapelt werden, so dass die Befehle ausgeführt werden, wenn eine der Bedingungen zutrifft. Auch beim switch-case gibt es eine Art else-Zweig (Alternativ-Zweig): Bei switch-case wird es jedoch mit default gekennzeichnet.
Für Programmieranfänger ist unter anderem dieses Thema etwas schwieriger zu verstehen, weshalb das dazugehörige Beispiel sehr wichtig ist. Eine Frage z. B. die sich Beginner stellen: Warum gibt es zwei verschiedene Arten von Abfragen? Und wann sollte ich welche verwenden? Die switch-case-Abfragen werden dann eingesetzt, wenn mehrere Werte mit demselben Quellwert überprüft werden sollen. Hierbei ist die switch-case-Abfrage vor allem sehr übersichtlich. Wenn es aber natürlich nur ein oder zwei „Möglichkeiten“ (also den if- und evtl. den else-Zweig) gibt, macht ein switch-case keinen Sinn. Des Weiteren kann die switch-case-Bedingung nur verwendet werden, wenn ein einzelner Wert überprüft werden soll. Eine Verundung oder Veroderung ist nur bei if-Abfragen möglich. Für die Überprüfung von Zahlen gilt: Ein Wertebereich kann nur mit if-Abfragen ermöglicht werden.
Eine gerne verwendete, verkürzte Version einer if-Abfrage ist die sogenannte einzeilige if-Abfrage (inline if statement). Diese kann nur angewendet werden, wenn sowohl beim zutreffen der Bedingung, als auch bei dem nicht zutreffen der Bedingung, ein Statement ausgeführt werden soll, welches einen Wert vom gleichen Typ zurückgibt. Dafür wird Bedingung notiert und von einem Fragezeichen gefolgt. Dahinter folgt das Statement, welches ausgeführt werden soll, wenn die Bedingung zutrifft. Zum Schluss folgen noch ein Doppelpunkt und das Statement, welches ausgeführt werden soll, wenn die Bedingung nicht zutrifft. Im unteren Beispiel ist diese spezielle if-Abfrage nicht aufgeführt, Sie werden jedoch innerhalb unseres C#-Buchs ein paar Stellen finden, wo eine solche verkürzte if-Abfrage verwendet wird.

Program.cs

string sEingabe;

Console.Write("Bitte geben Sie etwas ein: ");
sEingabe = Console.ReadLine();

// Bedingung(en) prüfen
if (sEingabe == "switch")
{
	Console.Write("Bitte geben Sie nochmals etwas ein: ");
	switch (Console.ReadLine())
	{
		case "A":
			Console.WriteLine("Sie haben A eingegeben");
			break;
		case "B":
			Console.WriteLine("Sie haben B eingegeben");
			break;
		case "C":
			Console.WriteLine("Sie haben C eingegeben");
			break;
		// case-Bedingungen können gestappelt werden
		case "D":
		case "E":
			Console.WriteLine("D oder E wurde eingegeben");
			break;
		default:
			Console.WriteLine("Eingabe ungültig!");
			break;
	}
}
else if (sEingabe == "Eingabe" || sEingabe == "Verarbeitung" || sEingabe == "Ausgabe")
	Console.WriteLine("C# macht Spaß!");
else
	Console.WriteLine("Es ist etwas anderes passiert!");

Console.ReadKey();
Download

LinksRechts