Willkommen beim fünften Teil des C-Kurses! |
Doch zum Anfang eine kleine Übungsaufgabe, ob man noch fit vom
letzten Kursteil ist. Das folgende Programm ist ein kleines, aber feines
Modul, das die Inhalte zweier Variablen tauscht. Ein Klassiker sozusagen:
|
Aufgerufen wird das Modul mit:
swap ( &a , &b ); |
wobei a und b zwei Integer-Variablen sind. Versuchen sie zu verstehen, wieso man hier mit Adressen arbeitet und welche Vorteile dieses Verfahren haben könnte.
Genug der Übung und frisch ans Werk.
Diesmal befassen wir uns mit Schleifen und bedingten Anweisungen.
Schleifen: |
Prinzipiell gibt es zwei Arten von Schleifen: Die vorprüfenden und die nachprüfenden Schleifen. Die vorprüfenden Schleifen prüfen vor dem Schleifenkörper und die nachprüfenden Schleifen nach dem Schleifenkörper, ob eine Bedingung wahr ist.
Wenn der Schleifenkörper aus einem Befehl besteht, können
die geschweiften Klammern weggelassen werden.
while |
while ( Bedingung )
|
Der Schleifenkörper wird solange wiederholt, solange die Bedingung
erfüllt ist.
Die Prüfung der Bedingung erfolgt immer vor der Ausführung
des Schleifenkörpers.
Beispiel:
|
Der Schleifenkörper wird nun solange durchlaufen, bis die Bedingung
nicht mehr wahr ist, d.h. bis i > 10 ist. Hier wird vor jedem Durchgang
geprüft, ob die Bedingung zutrifft.
do |
do
|
Hier gilt das selbe, wie bei while-Schleifen, nur das nach der Ausführung des Schleifenkörpers die Bedingung geprüft wird, ob ein erneutes durchlaufen der Schleife nötig ist. Man muß immer beachten: Hinter dem while [Bedingung] steht immer ein Semikolon!
Beispiel:
|
for |
for ( Initialisierung ; Bedingung
; Anweisung )
|
Bei einer for-Schleife wird zuerst die Initialisierung abgearbeitet.
Solgange die Bedingung wahr ist, wird der Schleifenkörper
und anschließend die Anweisung ausgeführt. Danach wird
wieder die Bedingung geprüft, und so weiter.
Sieht alles sehr kryptisch aus. Also schreiben wir das ganze etwas
um und erhalten als equivalent folgenden Ausdruck:
|
Als Praxisbeispiel:
|
Hier haben wir den Eingangssatz angewendet das, wenn der Schleifenkörper
aus einem Befehl besteht, die geschweiften Klammern wegfallen können.
Oberes Beispiel ist, wenn wir unsere Erläuterung einer for-Schleife
anschauen, das selbe wie das Beispiel der while-Schleife. Nur etwas kürzer
:-)
|
|
Bedingte Anweisungen |
Im Gegensatz zu den Schleifen, wo ein Schleifenkörper solange abgearbeitet
wird, solange die Bedingung wahr ist, wird in bedingten Anweisungen die
Anweisung einmal abgearbeitet, wenn die Bedingung wahr ist. Bei vergleichen
bitte immer auf die Variablentypen achten!
if |
if ( Bedingung )
|
Wenn die Bedingung wahr ist, wird der Befehls-Körper1 abgearbeitet. Wenn die Bedingung nicht zutrifft wird die Alternative im Befehls-Körper2 abgearbeitet.
Natürlich kann man das else weglassen, dann wird keine Alternative ausgeführt.
Beispiel:
|
...oder als 2. Beispiel ....
|
Warum das Doppel-Gleichzeichen ? Ein einfaches Gleichzeichen ist immer eine Zuweisung, z.B. b = 3. Würde nun in der Klammer t = 2 stehen, so würde t erst der Wert 2 zugeordnet werden und dann eine Überprüfung auf wahr erfolgen, der ist bei positiven Werten ungleich Null immer wahr!
Wird nun ein Vergleich angestellt muß nun ein Doppel-Gleichzeichen
stehen!
if & else if |
Jetzt steht natürlich die Frage im Raum, was ist, wenn man mehrere
Abfragen kombinieren will ? Als eine Methode empfiehlt sich der Gebrauch
von else if-Konstrukten.
if ( Bedingung1 )
|
Hier wird erst die erste Bedingung geprüft. Trifft diese nicht zu, wird die zweite geprüft. Wenn ja, so wird der Befehls-Körper2 ausgeführt. Trifft keine der Bedingungen zu, so wirde der Befehls-Körper3 ausgeführt.
Zu beachten ist: Wird eine Bedingung auseführt, so werden die anderen Fälle ignoriert.
Beispiel:
|
Man kann sich jetzt natürlich vorstellen, das es etwas ermüdend
sein kann, wenn man sehr viele Fallunterscheidungen machen will. Auch für
solche Probleme wurde gesorgt....
switch & case |
switch ( Variable )
{
break;
break;
|
Hier wird eine Variable auf Gleichheit untersucht. Mit der switch-Anweisung
gibt man die zu untersuchende Variable an. Als erstes wird geprüft
ob die Variable dem Term1 entspricht, wenn ja, so wird Aktion1 ausgeführt.
Diese können beliebeig viele sein. Abgeschlossen werden die Aktionen
mit einem break! Solange kein break auftritt werden alle weiteren Befehle
abgearbeitet.
Danach wird der nächste Vergleich angestellt, u.s.w. Hinter dem
Schlüsselwort default steht kein Vergleich, da diese Aktionen ausgeführt
werden, wenn sich keine Übereinstimmungen in den oberen Fällen
ergab. Also ein Default-Anweisung, solange kein anderer Fall eintritt.
Da dieser als letztes angefhrt wird, benötigt man hier keine break-Anweisung.
Beispiel:
|
War ein bischen viel Theorie auf einmal, oder ? Am besten versucht man
zu jeder Schleifenart ein kleines Beispielprogramm zu schreiben. Natürlich
kann man auf die Beispiele zurückgreifen. Bitte daran denken, das
die Beispiele keine vollständigen Programme sind!
Hausaufgaben |
1) Schreiben sie ein Programm, welches eine eingegebene Zahl als Wortlaut
auf den Bildschirm ausgibt. Z.B.:
Eingabe => 5
Ausgabe => fuenf |
2) Schreiben sie je ein Programm mit den verschiedenen Schleifentypen,. die die Zahlen von 2 bis 7 auf dem Bildschirm ausgeben.
Überlegen sie auch, woher bestimmte Überraschungen herrühren
könnten.
...das Obligatorische |
Autor: Sebastian Cyris \ PCD Bascht
Dieser C-Kurs dient nur zu Lehrzwecken! Eine Vervielfältigung ist ohne vorherige Absprache mit dem Autor verboten! Die verwendete Software unterliegt der GPL und unterliegt der Software beiliegenden Bestimmungen zu deren Nutzung! Jede weitere Lizenzbestimmung die der benutzten Software beiliegt, ist zu beachten!