Programmieren in C

Funktionen in C
If, else und switch-case

Du möchtest wissen, wie die Befehle if, if else und switch-case in C funktionieren? Hier erklären wir dir, wann du diese Befehle verwenden kannst an einem einfachen Beispiel.

 

Einfaches Beispiel zum Fallunterscheidungsprinzip

Stell dir vor, du möchtest Pizza bei einem Lieferdienst bestellen und verwendest dazu deren Software. Du klickst ganz einfach an, was du möchtest und erhältst es. Doch wie funktioniert das? Verantwortlich dafür ist das Fallunterscheidungsprinzip. Es funktioniert nach dem wenn – dann -Prinzip und sorgt dafür, dass du dein Essen bekommst. Die Implementierung von Bedingungen und Wahlmöglichkeiten ermöglicht dabei deine Lieferung.

Schauen wir uns dazu doch erst einmal dieses simple Beispiel einer digitalen Speisekarte an. Der Einfachheit halber verwenden wir kein GUI, sondern arbeiten mit der Kommandozeile.

If in C

Zuerst starten wir wie immer unsere main-Funktion. Dann deklarieren wir eine Variable, die wir später benutzen werden. Danach folgt die Ausgabe unseres Begrüßungsbildschirms für die Speisekarte. Darauffolgend lesen wir mittels der scanf-Funktion, einen Wert über die Kommandozeile ein und speichern ihn in choice.

if in C
if in C

Nun fügen wir das if ein, das unsere Bedingung einleitet. In die geschweiften Klammern hinter diesem if setzen wir einen Anweisungsblock, der unsere printf-Anweisung enthält. Diese gibt dem Kunden später die gewünschte Speisekarte aus, aber nur, wenn der Benutzer auch mit seiner Eingabe die Bedingung erfüllt. Diese schreiben wir immer in die runden Klammern zwischen dem if und dem Anweisungsblock. In unserem Fall handelt es sich um die Bedingung eine eins einzugeben.

Sollte der Kunde jedoch etwas anderes als eine eins eingeben und damit die Bedingung nicht erfüllen, so überspringen wir den gesamten Anweisungsblocks, der innerhalb der geschweiften Klammern steht, und fahren mit dem nachstehenden Programmcode fort. In unserem Fall handelt es sich dabei um ein weiteres if. Die Bedingung zur Ausführung dieses Blockes ist die Eingabe einer 2. Das hat also zur Folge, dass bei einem Programmablauf immer nur einer der beiden Blöcke durchlaufen wird. Schließlich kann unser Benutzer nicht gleichzeitig zwei Werte für die gleiche Variable festsetzen.

 

If else C

Da wir hier nur zwei Möglichkeiten haben und sowieso immer eine der beiden ausgeführt wird, können wir statt zwei if-Bedingungen auch else verwenden.

if else C
if else C

Dazu fragen wir erst – wie gehabt – unsere erste if-Bedingung ab. Danach wird allerdings nicht einfach der nachfolgende Code ausgeführt, sondern, falls die Bedingung nicht erfüllt wurde, wird stattdessen der else-Block mit Anweisungen ausgeführt. Diesen fügen wir ein, indem wir direkt hinter die schließende geschweifte Klammer des Anweisungs-Blocks der if-Bedingung ein else schreiben und dessen Anweisungs-Block anhängen.

Der Vorteil ein solches Konstrukt zu verwenden liegt darin, dass wir Rechenleistung und damit auch Zeit sparen, da keine zweite Bedingung überprüft werden muss. Allerdings kann eine solche Regelung auch Probleme verursachen, wenn mehr als eine Möglichkeit vorliegt.

If else if C

Sollte unser Gast zum Beispiel die vegane Option 3 wählen, so würde er im Moment trotzdem die vegetarische Karte angezeigt bekommen. Das liegt daran, dass unser Code im else-Block IMMER ausgeführt wird, wenn keine eins eingegeben wird. Das heißt, unser Gast könnte ebenso gut eine 300 eingeben – es würde keinen Unterschied machen.

if else if C
if else if C

Schwieriger wird es erst, wenn die vegetarische Karte noch einmal auf eine vegane Karte reduziert werden soll. Dazu brauchen wir nämlich eine weitere if-Bedingung, die wir in den else-Block hineinschreiben.

Switch-case C

Noch schwieriger wird es, wenn wir nicht nur die Karte programmieren wollen, sondern die Kunden direkt die Pizzen über das System bestellen lassen möchten. Nun haben wir eine Unmenge an Möglichkeiten und es wäre nicht ratsam, für jede dieser Möglichkeiten eine if-Abfrage zu programmieren. Stattdessen bedienen wir uns eines Systems, dass extra für diese Fälle konstruiert wurde. Es nennt sich Switch-Case und ermöglicht uns aus einer Vielzahl von Alternativen zu wählen. Wir entfernen also die nun nutzlosen if-Abfragen aus unserem Programm und ersetzen sie durch switch.

switch-case C, switch c
switch-case C

Direkt hinter dieses switch schreiben wir unseren Wert, den wir vergleichen wollen. Dieser muss in jedem Fall die Form einer ganzzahligen Konstante annehmen. Danach listen wir alle unsere Möglichkeiten – also unsere cases – auf. Diese enthalten die Anweisungen für alle Fälle, die sich ergeben können. Also in unserem Fall für jede wählbare Pizza. Damit unser Fall aber eingeleitet werden kann, müssen wir hinter case den Wert angeben, der Bedingung für diesen ist. Wenn unser Benutzer eine eins eingibt, wird nun also eine Pizza Margherita bestellt, falls er eine zwei eingibt eine Pizza Carciofini usw.

switch C, switch-case c
switch C

Nachdem wir alle wählbaren Pizzen bearbeitet haben, stehen wir aber immer noch vor dem Problem, was wir mit ungültigen Eingaben, wie zum Beispiel Werten über sechs, unter null oder Buchstaben machen. Dafür gibt es zum Glück eine ganz einfache Lösung. Denn geben wir einen case als sogenannten default an, so wird dieser immer ausgeführt, sollte keiner der definierten, anderen Fälle zutreffen.

Nun kennst du das Prinzip, aber etwas ganz Wichtiges gilt es noch zu beachten. Würdest du dein Programm jetzt ausführen und der Benutzer gäbe eine Zahl ein, würden ab dem zutreffenden Fall alle Fälle ausgeführt werden. Damit das nicht geschieht, musst du nach den Anweisungen bei allen – bis auf den letzten Case – ein break einfügen. Dieser Befehl sorgt nämlich dafür, dass das Programm aus der Liste springt und mit dem nachfolgenden Code fortfährt.

Hallo, leider nutzt du einen AdBlocker.

Auf Studyflix bieten wir dir kostenlos hochwertige Bildung an. Dies können wir nur durch die Unterstützung unserer Werbepartner tun.

Schalte bitte deinen Adblocker für Studyflix aus oder füge uns zu deinen Ausnahmen hinzu. Das tut dir nicht weh und hilft uns weiter.

Danke!
Dein Studyflix-Team

Wenn du nicht weißt, wie du deinen Adblocker deaktivierst oder Studyflix zu den Ausnahmen hinzufügst, findest du hier eine kurze Anleitung.