6.3 Die fußgesteuerte do-while-Schleife
Das Gegenstück zur kopfgesteuerten while-Schleife ist die fußgesteuerte do-while-Schleife. Hier die Syntax dieser dritten und letzten Schleife:
Beim Ausführen der do-while-Schleife werden zunächst die Anweisungen im Schleifenrumpf mindestens einmal abgearbeitet und so immer ausgeführt. Somit garantiert Ihnen diese Schleife, dass der Schleifenrumpf bzw. der Anweisungsblock stets ausgeführt werden und nicht übersprungen werden können. Anschließend wird mit while der Ausdruck ausgewertet. Ist dieser wahr (ungleich 0), werden erneut die Anweisungen hinter dem Schlüsselwort do ausgeführt. Gibt die Schleifenbedingung hingegen unwahr (gleich 0) zurück, wird die Schleife beendet, und das Programm fährt mit der Ausführung dahinter fort.
Anwendungszweck für do-while
Die do-while-Schleife wird hauptsächlich dann verwendet, wenn Anweisungen in einer Schleife mindestens einmal, aber eventuell auch mehrmals ausgeführt werden müssen. Da die do-while-Schleife die Schleifenbedingung erst am Ende abfragt, ist dies – anders als bei for/while-Schleifen – garantiert.
Den Programmablaufplan der do-while-Schleife sehen Sie in Abbildung 6.3.
Es folgt ein einfaches Listing zur do-while-Schleife:
00 // Kapitel6/do_while.c
01 #include <stdio.h>
02 int main(void) {
03 int auswahl = 0;
04 do {
05 printf("-1- Funktion 1 verwenden\n");
06 printf("-2- Funktion 2 verwenden\n");
07 printf("-3- Funktion 3 verwenden\n");
08 printf("-0- Programm beenden\n\n");
09 printf("Ihre Auswahl :\t");
10 if( scanf("%d", &auswahl) != 1) {
11 printf("Fehler bei der Eingabe...\n");
12 return 1;
13 }
14 switch( auswahl ) {
15 case 1 : printf("Funktion 1 bei der Arbeit\n");
16 break;
17 case 2 : printf("Funktion 2 bei der Arbeit\n");
18 break;
19 case 3 : printf("Funktion 3 bei der Arbeit\n");
20 break;
21 case 0 : printf("Beende Programm\n");
22 break;
23 default: printf("Falsche Eingabe!!!\n");
24 }
25 } while( auswahl != 0 );
26 printf("Auf Wiedersehen!\n");
27 return 0;
28 }
Die do-while-Schleife wird mit dem Schlüsselwort do in Zeile (04) eingeleitet. Anschließend wird der komplette Code bis zu Zeile (25) wie gewöhnlich ausgeführt. In diesem Beispiel wurde auch eine switch-Fallunterscheidung verwendet. Diese erzeugt eine Art Menüführung für die Konsole, in der Sie eine bestimmte Funktion über die Eingabe einer numerischen Ganzzahl auswählen können. In Zeile (25) wird diese in der numerischen Ganzzahl auswahl als Schleifenabbruchbedingung ausgewertet. Solange der Anwender hier nicht die numerische Ganzzahl 0 eingegeben hat, wird die do-while-Schleife erneut ab Zeile (04) – und damit das gesamte Programm – weiter ausgeführt. Mit der Eingabe der Ganzzahl 0 können Sie das Programm ordentlich beenden und mit Zeile (26) mit dem Programm fortfahren.
Das Programm bei der Ausführung sieht beispielsweise so aus:
–1- Funktion 1 verwenden
–2- Funktion 2 verwenden
–3- Funktion 3 verwenden
–0- Programm beenden
Ihre Auswahl : 2
Funktion 2 bei der Arbeit
–1- Funktion 1 verwenden
–2- Funktion 2 verwenden
–3- Funktion 3 verwenden
–0- Programm beenden
Ihre Auswahl : 0
Beende Programm
Auf Wiedersehen!