Was ist überhaupt eine Schleife? Schleifen sind dazu da bestimmte Codeteile, im Fall der while- bzw. do-while-Schleife, eine unbestimmte Anzahl oft zu wiederholen.
Es gibt 2 verschiedene while-Schleifen. Die while und die do-while. Zuerst aber die einfachere, die while:
Der Aufbau der while Schleife ist im Endeffekt der gleiche wie der eines ifs ohne else-Teil. Man schreibt 'while(Bedingung)'. Die '{ }' umrahmen wieder den Teil vom Code der, in diesem Fall, wiederholt werden soll. Die Sache mit der Bedingung funktioniert genauso wie beim if. Jetzt zur Erklärung von den neuen Elementen des Beispielcodes:
In diesem Fall ist es unbedingt erforderlich der Variablen 'eingabe' beim Definieren einen Wert zuzuweisen, weil die Variable überprüft wird, bevor wir etwas daran verändern können.
Die Bedingung heißt 'eingabe != 51'. Das Programm springt allerdings aus der Schleife wenn man die Taste 3 drückt (die Bedingung 'eingabe != 51' ist nicht mehr wahr). Das liegt daran, das in der Schleife der Variablen der Rückgabewert der Funktion 'getch()' zugewiesen wird. Zuweisungen wurden schon früher besprochen. Der Rückgabewert von 'getch()' entspricht dem ASCII-Code der gedrückten Taste. Der ASCII-Code der Taste 3 ist eben 51. Das heißt, 'getch()' wartet nicht nur auf einen Tastendruck, sondern sagt uns auch noch welche Taste gedrückt wurde.
Willst du den ASCII-Code einer Taste wissen, fragst du entweder Google nach einer ASCII Tabelle oder verwendest dieses kleine Programm: ASCII VIEW (wichtig ist nur der dezimale Wert, die anderen sind nur ein Produkt langer Weile) oder compile dieses kleines Programm:
Da du die while-Schleife jetzt (hoffentlich) verstanden hast, kannst deinen Taschenrechner vom vorherigen Teil nehmen und so erweitern, das nach einer Rechnung gefragt wird, ob man nochmal eine Rechnung durchführen möchte oder nicht (j drücken für ja, eine andere Taste für nein). Ich werde eine neue Funktion in der Lösung verwenden, alle Zeichen auf dem Bildschirm überschreibt und den Curser wieder nach links oben in die Ecke setzt: 'system("CLS")'. Zusätzlich wird noch an geeigneten Stellen scanf durch getch() ersetzt. Lösung:
Der Unterschied zur while-Schleife ist der, dass die do-wihle-Schleife mindestens einmal ausgeführt wird, bevor die Bedingung geprüft wird und der Inhalt der Schleife dann bei entsprechender Bedingung nochmal ausgeführt wird. Dieses Codebeispiel macht das selbe wie das erste Codebeispiel von der wihle-Schleife weiter oben:
Zuerst schreiben wir 'do', öffnen die geschweifte Klammer '{', schreiben den zu wiederholenden Code, schließen die geschweifte Klammer '}' und schreiben dann 'while(Bedingung);'. Eigentlich ganz einfach und im Prinzip das selbe wie die while-Schleife, nur das die Bedingung eben erst nach einmaligem Durchlauf geprüft wird. Jetzt darfst du den Taschenrechnercode von eben so verändern, der er mit einer do-while-Schleife funktioniert. Lösung:
Vielleicht fragst Du dich jetzt, warum es eigendlich zwei Schleifen Typen gibt, wenn man doch mit beiden das gleiche erreichen kann. Nunja, der Sinn ist der, die entsprechende Schleife zu verwenden die den Code am leserlisten macht. Wenn eine Schleife auf jeden Fall ein mal ausgeführt werden soll, dann verwende auch die do-while. Da macht es einem Fremden leichter die Funktionsweise deines Programms zu verstehen.
© by Sascha "Brügä" Brügmann