Berndt Wischnewski | Richard-Wagner-Str. 49 | 10585 Berlin | ||
Tel.: 030 - 3429075 | FAX : 030 34704037 | email: webmaster@peacesoftware.de | Ust-ID: DE135577379 |
C Kurs - too many ifs - I think I switchIm Kapitel if Abfragen haben wir gelernt, wie wir eine if - else -if -else -if -else ...Leiter bauen, dies wird aber recht unpraktisch wenn man 20 , 100, oder sonstwievele Bedingungen abfragen muss. Für diese Fälle bietet C das switch Element, mit dem man solche Fälle viel bequemer programmieren kann.Auf gut deutsch heißt dass multiple branching. Die switch Anweisung wird in der Praxis häufig benutzt um Tastatureingaben oder die Menü-Auswahl zu bearbeiten, aber jede andere Aufgabe, die viele Auswahlmöglichkeiten bietet ist genauso willkommen. Also aufgepasst, die switch Anweisung funktioniert wie folgt:
Jetzt der Reihe nach, in der ersten Zeile steht: switch(expression)
mit expression ist eine Variable oder der Rückgabewert einer Funktion z.
B. Der Sinn ist völlig klar: Zur Schreibweise, wenn es sich nur um eine oder wenige gleichlautende Anweisungen handelt, schreibt man einen case Block gerne in einer Zeile. Das ist syntaktisch völlig OK und sieht außerdem noch übersichtlich aus. Beispiel: switch(x) Zwei Bemerkungen zum case Block:1. im Unterschied
zu einer if Abfrage wird in den cases immer nur auf Gleichheit geprüft
und 2. die abgefragte Konstante im case Block darf nur einmal
abgefragt werden. Die folgen beiden Beispiele sind also völlig
falsch und ergeben Syntaxfehler. switch(x) Die break Anweisung beendet einen case Block. Durch weglassen der break Anweisung kann man trickreiche switch Konstrukte schreiben. Der switch "fällt dann nach unten durch", bis zum nächsten break oder bis zum Ende des switches. Hier ein Beispiel: x = 1; Jetzt passiert folgendes: der erste case ist wahr(x gleich 1),
also wird Als letztes Syntaxelement folgt der default Block hier "fällt" man rein, wenn alle case Blöcke nicht zutreffen. Der default Block ist optional, man muss ihn nicht in das switch Konstrukt einfügen. Er steht meistens am Ende des switches, er darf aber auch am Anfang oder irgendwo in der Mitte zwischen den cases stehen. Wenn man dann die break Anweisung wegläßt, werden alle folgenden Anweisungen auch ausgeführt. Als erstes Beispiel die normale Form: x = 99; default:
x = 99; In diesem kurzen Beispiel steht die default Anweisung oben und wird nicht mit einem break beendet. Da beide folgenden cases nicht zutreffen, wird der default block zuerst ausgeführt, es wird y gleich Null gesetzt. Da kein break vorhanden ist, wird die nächste Anweisung, mychar = 'a'; auch ausgeführt. Danach steht break und es ist Schluß. Zum Schluß noch die obligatorischen Testaufgabe indem Sie auf Next klicken, da die Möglichkeiten mit multiple choice und Texteingabe sehr beschränkt sind als Hausaufgabe vielleicht zusätzlich folgendes:
|
Programmieren Sie doch mal den Mac: |