Unsere Datenschutzrichtlinie wird in Kürze aktualisiert. Bitte sehen Sie sich die Vorschau an.

C++

Verzweigung mit Switch (case default)

Testen Sie unsere 2016 Kurse

10 Tage kostenlos!

Jetzt testen Alle Abonnements anzeigen
Nicht immer ist der Einsatz von if-Anweisungen notwendig bzw. übersichtlich. Aus diesem Grund gibt es Möglichkeiten, strukturierte Bedingungsbäume zu bilden. Wie das funktioniert, sehen Sie in diesem Film.

Transkript

Ich möchte Ihnen jetzt eine elegante Fallunterscheidung darstellen, wie man man das auch machen kann. Wir hatten ja hier das Beispiel mit den If-Anweisungen. If 'i = 1', dann das machen, 'i=2' das da, 'i1=3' und so weiter. Das ist ein bisschen mühsam, das so zu schreiben. Das geht natürlich auch ganz elegant, wenn man gerade so eine Struktur hat. If-Anweisung ist ja nicht verboten, das kann man ruhig so machen, aber effizienter ist es mit einer switch-Anweisung an dieser Stelle zu arbeiten. Die kann man aber nur einsetzen, wenn man hier eine Konstante hat, also einen Zahlenwert, der sich evaluiert zu einem Zahlenwert und nicht eine boolesche Formel, wie vorher. Aber mit 'if i=1', 'if i=2' und so weiter, hatte ich eigentlich nichts anderes gemacht, als diesen Wertebereich einfach abzufragen. So, die switch-Anweisung steht hier mal in geschweiften Klammern und jetzt muss man hier innen die Fallunterscheidungen einbauen. Das geschieht mit der case-Anweisung. Und hier kann ich jetzt 'case1' schreiben. Das muss hier wie gesagt, sich zu einem Wert berechnen lassen, einen ganzzahligen Wert. Und ich mache jetzt hier mal ein 'break', das bedeutet dann Abbruch dieser Fallunterscheidung. Dann kann ich die nächste case-Anweisung reinschreiben, 'break', Abbruch der Fallunterscheidung. Und es gibt noch eine Möglichkeit, das entspricht dann dem 'else' des 'default:'. Da kann ich mir das 'break' hier unten sparen, das brauchen wir nicht mehr. Wenn ich hier oben ein 'break' weglasse, das ist ziemlich tückisch, das zeige ich Ihnen nachher noch, dann funktioniert das Programm zwar trotzdem noch, aber anders als erwartet. Also, jetzt machen wir erst einmal ein 'cout'. Wie vorher eigentlich das Gleiche:'1', so und ich kopiere das hier einfach mit Ctrl+C, ich mag das immer gerne so ein bisschen abkürzen, wenn es die gleiche Struktur hat, dann schreibt sich das schneller '2' und hier unten machen wir noch unseren 'default:'. Sonst, denke ich, könnte ich natürlich hier...1,2,3,4,5,6,7,8,9,10, und so weiter, einbauen, aber das ist jetzt erstmal genug. Und das 'cout' machen wir auch ein bisschen eleganter da unten hin und da haben wir unseren Zahlenvorschub für alle. So probieren wir doch das Ganze gleichmal aus. Starten ohne Debug. Mache ich doch jetzt mal hier und jetzt müsste ich hier eine Zahl eingeben. '1', dann kommt 'eins' raus und das Ganze stoppt wieder, das werden wir auch bald lösen, dass das hier erstmal nicht aufhört. Da machen wir das erstmal so, '2'. Und Sie sehen schon ich muss jetzt hier wieder alle Varianten austesten, sonst... ... den Rest schenke ich mir jetzt, das funktioniert ganz gut. Wenn ich das jetzt hier mal temporär rauskommentiere, damit Sie sehen was passiert, wenn man das vergisst. Es kann auch Absicht sein, deshalb hat man das ja auch eingeführt, also ich gebe jetzt '1' ein, jetzt kommt hier 'einszwei' raus. Und wenn ich jetzt nochmal starte und ich gebe jetzt hier '2' ein, dann kommt hier 'zwei' raus. Also was macht er? Er läuft hier rein, gibt 'eins' aus, wenn man '1' eingibt hier oben. Läuft aber dann durch, er fällt durch diese nächste case-Anweisung durch, und führt die dann auch noch mit aus. So machmal ist es ganz praktisch, sowas zu machen. Man kann ja mehrere case-Anweisungen auch drüber schreiben, um verschiedene Fälle abzufangen. Das ist so die Idee, oder das bei '1' eben noch etwas zusätzlich gemacht wird und bei '2' aber auch, aber im Normalfall hat man erstmal hier ein 'break'. Beim anderen muss man ein bisschen aufpassen, mir passiert's auch häufiger, dass man diese Dinger nicht vergisst, sonst wundert man sich später. was denn da eigentlich in der Ausführung passiert. Also lieber alles nochmal doppelt kontrollieren. Aber so haben wir jetzt mal diese switch-Anweisung kennengelernt, wirklich eine elegante Methode. Hier kann man übrigens auch Characters dann reinschreiben. Könnte hier auf 'a', 'b', 'c' abprüfen. Strings allerdings nichts, weil das ist kein einzelner Wert, Characters aber schon, das ist immer, wenn man irgendeine Zahl zuordnen kann, kann ich das auch hier reinschreiben. Bei Enumerations funktioniert das natürlich dann auch entsprechend. Und so kann man mit switch-Anweisungen sehr elegant arbeiten. Der Compiler, also der Übersetzer übersetzt das nachher in eine Sprungtabelle, die indirekt angesteuert wird, also egal wie die Tabelle...wie lang sie ist. Das wird hier alles gleich schnell ausgeführt, Bei einer if-Anweisung dauert es umso länger, je weiter hinten die if-Anweisung ist, wenn der Compiler das nicht optimieren kann. Also da muss man auch noch ein bisschen darauf achten, wenn es mal um zeitkritische Programme geht.

C++

Machen Sie sich mit den einfachen Grundlagen zu C++ vertraut und lernen Sie anhand zahlreicher Übungs- und Codebeispiele die Klassenkonzepte, Prozeduren und Funktionen kennen.

9 Std. 3 min (143 Videos)
Derzeit sind keine Feedbacks vorhanden...
 

Video-Training auf DVD mit Bonusmagazin

+ Tutorial to go: Mit Videos für iPod, iPhone & Co.

Dieser Online-Kurs ist als Download und als Streaming-Video verfügbar. Die gute Nachricht: Sie müssen sich nicht entscheiden - sobald Sie das Training erwerben, erhalten Sie Zugang zu beiden Optionen!

Der Download ermöglicht Ihnen die Offline-Nutzung des Trainings und bietet die Vorteile einer benutzerfreundlichen Abspielumgebung. Wenn Sie an verschiedenen Computern arbeiten, oder nicht den ganzen Kurs auf einmal herunterladen möchten, loggen Sie sich auf dieser Seite ein, um alle Videos des Trainings als Streaming-Video anzusehen.

Wir hoffen, dass Sie viel Freude und Erfolg mit diesem Video-Training haben werden. Falls Sie irgendwelche Fragen haben, zögern Sie nicht uns zu kontaktieren!