Nachdem du inzwischen gelernt hast, was Variablen sind und wie man im Code rechnen kann, werden wir uns heute die C# if Abfragen ansehen. Das Konzept der sogenannten if Abfragen ermöglicht es uns, weitaus komplexere Programme zu schreiben, als die, die wir bisher umgesetzt haben. Wie wir in C# if Abfragen gezielt im Code einsetzen können, erfährst du in diesem Beitrag.
Inhaltsverzeichnis
1. Was sind C# if Abfragen?
Bevor wir mit dem Thema beginnen, gleich vorweg: Wenn du das Konzept der C# if Abfragen verstanden hast, kannst du, wie eingangs erwähnt, bereits weitaus komplexere Programme schreiben. Denn if Abfragen ermöglichen es uns, den Programmablauf mit Bedingungen zu steuern.
Doch was bedeutet das in der Praxis und was sind if Abfragen eigentlich?
Bei if Abfragen handelt es um eines der wichtigsten und mächtigsten Werkzeuge in der Programmierung. Sie ermöglichen uns, Code zu einer bestimmten Bedingung auszuführen. Wir können also eine Bedingung formulieren und anschließend prüft das Programm, ob diese Bedingung aktuell erfüllt wird. Wenn das der Fall ist, führt das Programm den Code aus. Auf diese Weise können wir den Programmablauf steuern.
Dabei formulieren wir im Kopf der if Abfrage die Bedingung und schreiben den auszuführenden Code in den dazugehörenden Codeblock.
Eine C# if Abfrage sieht folgendermaßen aus:
Wir leiten in C# if Abfragen mit dem Schlüsselwort if ein. Anschließend folgt ein Klammerpaar, in welches wir die Bedingung schreiben. Wie man diese Bedingung genau formuliert, werden wir uns später noch ansehen. Danach folgt ein Codeblock, den wir mit einer geschweiften Klammer öffnen und mit einer geschweiften Klammer abschließen.
Alles, was sich dann in diesem Codeblock befindet, führt das Programm aus, falls die Bedingung erfüllt sein sollte. Und das sind letztendlich die C# if-Abfragen.
So schwer ist das also gar nicht.
2. Wie bildet man Bedingungen im Code?
An diesem Punkt stellt sich vermutlich die Frage: Wie bildet man solche Bedingungen und wie sehen diese im Code aus?
Dafür verwendet man sogenannte boolesche Ausdrücke.
Ein boolescher Ausdruck ist im Grunde ein Ausdruck, der ein „true“ oder ein „false“ als Ergebnis liefert. Im letzten Beitrag hast du bereits gelernt, was ein mathematischer Ausdruck ist. Darin hast du erfahren, dass ein mathematischer Ausdruck im Code eine Rechnung ist, die ein Ergebnis liefert.
Bei booleschen Ausdrücken ist es im Grunde fast dasselbe. Der Unterschied liegt darin, dass es sich um eine Rechnung handelt, die keine Zahl als Ergebnis liefert, sondern ein true oder ein false. Also ein Wahr oder ein Falsch.
Zum Formulieren eines solchen booleschen Ausdrucks verwendet man sogenannte Vergleichs- und auch Kombinationsoperatoren.
Zuerst werden wir uns die Vergleichsoperatoren anhand eines Beispiels in Visual Studio ansehen. Im späteren Verlauf gehen wir dann noch auf die Kombinationsoperatoren ein.
3. Vergleichsoperatoren
In der folgenden Abbildung sehen wir eine Tabelle mit unterschiedlichen Vergleichsoperatoren:
Wie der Name es schon vermuten lässt, können wir mit Vergleichsoperatoren zwei Werte miteinander vergleichen. Sehen wir uns diese nun im folgenden einmal genauer an.
2.1. ==-Operator
Der ==-Operator ist der Gleichheitsoperator. Mit diesem kann man prüfen, ob zwei Werte gleich sind. Schreiben wir beispielsweise 2 == 2, erhalten wir den Wert true, also wahr. Schließlich stimmt es, dass 2 das Gleiche ist wie 2 und somit den gleichen Wert hat.
2.2. !=-Operator
Der !=-Operator ist der Ungleich-Operator. Mit diesem können wir zum Beispiel prüfen, ob 2 ungleich 10 ist. Als Ergebnis würden wir hierfür ein true erhalten, da 2 tatsächlich nicht dasselbe ist wie 10. Würde hier hingegen 10 != 10 stehen, wäre das Ergebnis ein false.
2.3. <-Operator
Mit dem Kleiner-als-Operator können wir zum Beispiel prüfen, ob die 2 kleiner ist als die 4. Da das richtig ist, ergibt sich in diesem Fall ein true. Würden wir jetzt überprüfen, ob die 4 kleiner ist als die 2, käme ein false dabei heraus.
2.4. >-Operator
Mit dem Größer-als-Operator haben wir das Ganze noch mal in umgekehrter Form. Prüfen wir also beispielsweise, ob die 5 größer ist als die 2, erhalten wir ein true, da das richtig ist. Würden wir hingegen den umgekehrten Fall überprüfen, käme wieder ein false heraus.
2.5. <=-Operator bzw. >=-Operator
Anschließend gibt es noch die Kleiner-gleich- oder Größer-gleich-Variante. Diese Operatoren funktionieren wie die normalen Kleiner- und Größer-als-Operatoren, nur dass noch mit eingerechnet wird, ob ein Wert der Gleiche ist wie der zu vergleichende Wert. Ist dies der Fall, gibt uns das Programm ein true zurück.
Schreiben wir zum Beispiel 2 <= 2 erhalten wir ein true.
Denn: 2 ist zwar nicht kleiner als 2, aber hat den gleichen Wert wie 2. Beim Größer-gleich-Operator verhält es sich genauso.
Damit du dir das Ganze besser vorstellen kannst, sehen wir uns einmal ein praktisches Beispiel in Visual Studio an.
4. C# if Abfragen in der Praxis
Für unser Beispiel bilden wir nun eine einfache C# if Abfrage, mit welcher wir das Alter eines Benutzers überprüfen wollen. Wir erstellen also eine Integer-Variable namens alter, in die wir einfach mal den Wert 15 schreiben und prüfen dann, ob der Benutzer älter oder gleich 18 ist. Wenn er das ist, lassen wir in der Konsole ausgeben „Du darfst die Website betreten“ und wenn er das nicht ist, schreiben wir „Du darfst die Website nicht betreten“.
Wir leiten hierfür also eine if Abfrage mit dem Schlüsselwort if ein. Nach dem if-Schlüsselwort folgt dann ein Klammerpaar und in dieses schreiben wir eine Bedingung. Das ist die Bedingung, die erfüllt sein muss, damit das Programm einen bestimmten Codeblock ausführt, den wir gleich noch bilden.
Die Bedingung ist, dass der Wert von alter größer oder gleich dem Wert 18 sein muss. Um diese Bedingung jetzt als booleschen Ausdruck zu formulieren, müssen wir die Vergleichsoperatoren einsetzen, die wir oben in der Tabelle gesehen haben.
Wie würde ein Alterscheck nun aussehen? Eigentlich ganz einfach, wir fragen ab, ob der Wert von der Variable alter größer oder gleich dem Wert 18 ist, also: if (alter >= 18).
Wenn das so ist, führt das Programm den darauffolgenden Codeblock aus.
In diesen Codeblock schreiben wir dann zum Beispiel Console.WriteLine(„Du darfst die Website betreten“).
Was passiert, wenn wir das nun ausführen?
Der Wert von alter ist auf 15 gesetzt. Im Code prüft nun das Programm, ob der Wert alter größer oder gleich 18 ist. Das heißt, die Bedingung ist hier gerade nicht erfüllt. Diese Konsolenausgabe wird also nicht stattfinden.
Wenn wir das Programm jetzt starten, gibt es uns nichts auf der Konsole aus:
Wie können wir jetzt aber hier noch eine Alternative zu diesem Codeblock bilden, damit wir zum Beispiel auch sagen können „Du darfst die Website nicht betreten“?
Dazu benötigen wir einen sogenannten else-Block.
5. Der C# else-Block
Einen else-Block kann man am Ende eines C# if-Blocks anhängen. Dafür schreibt man das Schlüsselwort else und leitet einen neuen Codeblock ein. Diesen Codeblock, der nach dem else folgt, führt das Programm aus, wenn die Bedingung nicht erfüllt sein sollte.
Der else-Block ist also sozusagen ein Alternativcodeblock.
In diesen können wir jetzt beispielsweise schreiben „Du darfst die Website nicht betreten“.
Führen wir das Programm nun mit dem Wert 15 in der Variable alter aus, sehen wir die Konsolenausgabe „Du darfst die Website nicht betreten“:
Wenn wir den Wert von alter jetzt auf 18 setzen, sehen wir, dass wir die Website betreten dürfen:
Diese Altersabfrage funktioniert also einwandfrei.
Wie du gesehen hast, kann man Vergleichsoperatoren nutzen, um einfache Bedingungen in einer if Abfrage zu bilden. Außerdem hast du gelernt, dass wir mit else einen Alternativcodeblock anbieten können. Diesen führt das Programm dann aus, wenn die Bedingung nicht erfüllt ist.
6. Der C# else-if-Block
Neben dem else gibt es auch noch sogenannte else-if-Blöcke. Diese ermöglichen es uns, weitere Alternativen an den C# if-Block anzuhängen.
Wenn also die Bedingung des ersten ifs nicht erfüllt ist, können wir das Programm mithilfe von else if eine weitere Bedingung überprüfen lassen. Sollte diese auch nicht erfüllt werden, führt das Programm den else-Block als letzte Alternative aus:
Man kann hier also theoretisch so viele else-if´s anhängen, wie man möchte, sollte aber dennoch darauf achten, dass es überschaubar bleibt.
Als Alternative bei einer größeren Anzahl an Bedingungen, die geprüft werden müssen, eignet sich eine andere Kontrollstruktur, wie etwa der Switch-Block besser. Diesen werden wir uns im nächsten Blogartikel ansehen.
7. Kombinationsoperatoren
An dieser Stelle sehen wir uns einmal die sogenannten Kombinationsoperatoren in C# an. Was sind also Kombinationsoperatoren? Einfach ausgedrückt können wir mit Kombinationsoperatoren mehrere Bedingungen zu einer Gesamtbedingung verknüpfen.
Wir können also aus mehreren Teilbedingungen eine große Bedingung bilden. Die Kombinationsoperatoren sehen folgendermaßen aus:
Auf der Tabelle sehen wir einmal den Und-Operator (&&) und den Oder-Operator (||).
Um den Oder-Operator zu verwenden, drückt man auf der Tastatur die rechte Alt-Taste und die Taste mit den spitzen Klammern.
Aber wie funktionieren diese Operatoren?
Um diese Frage zu beantworten, sehen wir uns die beiden einmal genauer an.
7.1. Und-Operator
Mit dem Und-Operator können wir zwei Teilbedingungen so miteinander verbinden, dass der Gesamtausdruck nur dann true ergibt, wenn beide dieser Teilbedingungen erfüllt sind.
Im Beispiel sehen wir, dass die erste Bedingung überprüft, ob 2 das Gleiche wie 2 ist. Das ist der Fall, also kommt hierbei ein true heraus. In der nächsten Bedingung muss 3 ungleich 3 sein, was nicht stimmt und somit false ergibt.
Jetzt haben wir also im Grunde einen großen Ausdruck gebildet, bei dem der eine Teilausdruck tatsächlich ein true ergibt, der andere allerdings ein false. Dementsprechend wird der Gesamtausdruck als false ausgewertet. Denn beim Und-Operator müssen beide verknüpften Bedingungen ein true ergeben. Anders ist es hingegen beim Oder-Operator.
7.2. Oder-Operator
Beim Oder-Operator muss lediglich eine Teilbedingung erfüllt sein, damit der Gesamtausdruck ein true ergibt.
Im Beispiel überprüfen wir, ob 2 das Gleiche ist wie 2, was in einem true resultiert oder ob 3 ungleich 3 ist, wobei wir ein false erhalten. Insgesamt erhalten wir allerdings ein true, da nur eine Teilbedingung hierfür erfüllt sein muss.
Sehen wir uns die beiden Operatoren nun noch an einem Praxisbeispiel an.
7.3. Kombinationsoperatoren in der Praxis
Für dieses Beispiel habe ich das Vorherige geöffnet und es etwas umformuliert.
Nun geht es nicht mehr darum, eine Website betreten zu können, wenn man 18 ist, sondern einen Kinofilm ab 18 schauen zu dürfen. Wenn wir also 18 oder älter sind, steht in der Konsole „Du darfst den Kinofilm schauen“, falls nicht, steht darin „Du darfst den Kinofilm nicht schauen“:
Hier möchten wir jetzt eine Variable vom Typ bool hinzufügen. Bool ist einfach ein boolescher Wert. Das heißt, wir können in einen Boolean entweder ein true oder ein false speichern. Diese Variable nennen wir elternDabei und setzen sie anfangs auf false:
Bei mir war es in der Kindheit im Alter von 10 Jahren häufig so, dass ich Filme mit einer Altersfreigabe von 12 Jahren nicht im Kino ansehen durfte, in Begleitung meiner Eltern allerdings schon. Und genau das möchten wir jetzt einfach mal in unserem Beispiel nachprogrammieren.
Wir überprüfen also, ob der Nutzer 18 ist oder älter. Wenn das der Fall ist, darf er den Kinofilm sehen. Sollte das nicht der Fall sein, überprüfen wir, ob er 16 Jahre alt ist und die Eltern dabei sind. In diesem Fall lassen wir auf der Konsole ausgeben „Du darfst den Film ausnahmsweise anschauen, weil deine Eltern dabei sind“. Sollte dem auch nicht so sein, lassen wir den Satz „Du darfst den Kinofilm nicht schauen“ ausgeben.
Wir fügen also noch ein else-if hinzu und fragen erst einmal, ob der Nutzer 16 oder älter ist. Im Code prüfen wir hierzu, ob alter >= 16 ist und elternDabei gleich true. Wenn dem so ist, geben wir über die Konsole aus „Du darfst wegen deinen Eltern ausnahmsweise in den Kinosaal“. Falls das auch nicht zutreffen sollte, gibt das Programm den Satz „Du darfst den Kinofilm nicht schauen“ aus:
Wir haben also zuerst einmal die Bedingung gebildet, die vorgibt, dass man älter oder gleich 18 sein muss. Wenn dem nicht so ist, muss der Nutzer älter oder gleich 16 sein und zudem seine Eltern dabeihaben. Trifft dieser Fall zu, sagen wir, dass der Nutzer ausnahmsweise Eintritt erhält. Trifft der Fall hingegen auch nicht zu, sagen wir dem Nutzer, dass er den Kinofilm nicht schauen darf.
Im Moment ist alter auf 16 und elternDabei auf false gesetzt. Somit darf der Nutzer den Film also nicht sehen, wie wir auf der Ausgabe erkennen können:
Lassen wir nun einmal alter bei 16 und setzen elternDabei auf true:
Jetzt können wir in der Ausgabe sehen, dass der Zutritt genehmigt wird:
Setzen wir nun alter auf 18 und lassen elternDabei auf true, darf der Nutzer ganz normal den Film ansehen, da es mit 18 keine Rolle spielt, ob die Eltern dabei sind oder nicht:
So viel zu den Kombinationsoperatoren. An dieser Stelle sind wir auch schon am Ende dieses Blogbeitrags über die C# if Abfragen angelangt.
Mit dem neu gewonnenen Wissen hast du nun ein mächtiges Werkzeug zur Hand, mit dem du bereits jetzt deine Programme deutlich umfangreicher und spannender gestalten kannst.