Berndt Wischnewski | Richard-Wagner-Str. 49 | 10585 Berlin | ||
Tel.: 030 - 3429075 | FAX : 030 34704037 | email: webmaster@peacesoftware.de | Ust-ID: DE135577379 |
C Kurs - Schleifen - unendliche Breaks und Continuitäten
Für alle drei Arten von Schleifen, for Schleife, while Schleife und do-while Schleife existieren noch zwei wichtige Anweisungen, nämlich break und continue. Die break Anweisung steht irgendwo im Schleifenrumpf meist in Verbindung mit einer if Abfrage. Läuft das Programm in sie hinein, bricht sie die Schleife ab. Stößt man im bei der Abarbeitung der Schleife auf eine break Anweisung wird die Schleife ohne weiteres verlassen und das Programm danach vortgesetzt. Sinn der break Anweisung ist es also, die Schleife abzubrechen, wenn ein bestimmter Zustand eintritt, ohne eine Orgie von if ... else... Abfragen einbauen zu müssen. Hier ein Beispiel, in dem ein mögliche Fehler, die Quadratwurzel einer negativen Zahl, abgefangen und die Schleife dann beendet wird:
Bei geschachtelten Schleifen bezieht sich break natürlich nur auf die aktuelle Schleife. Wenn man die übergeordneten Schleifen auch mit abbrechen will, muß man sich was ausdenken, in etwa so:
Die letzten 5 Zeilen des Outputs lauten:
Die continue Anweisung springt weiter zum Anfang der Schleife, überspringt also die Anweisungen, die zwischen continue und dem Schleifenende liegen. Der Zweck der continue Anweisung ist es, auf einfache Art die weitere Ausführung des Schleifenrumpfes bis zum nächsten Durchgang zu unterbrechen. Im Gegensatz zu break, wird die Schleife nicht verlassen. Hier ein Beispiel:
Sowohl break als auch continue dürfen mehrmals an verschiedenen Stellen in der Schleife stehen, hier liegt, wie im Beispiel eben zu sehen, auch der Vorteil.
Endlosschleifen: Zum einen gibt es ungewollte Endlosschleifen, man programmiert einen logischen Fehler in die Schleife, startet das Programm und wundert sich ein paar Minuten lang, dass nichts mehr passiert. Das Programm muß man dann leider abschießen. Dann startet man es neu, entweder im Debugger, oder mit printf Anweisungen an verschiedenen Stellen und findet dann z.B. so etwas:
oder etwa so:
Dann gibt es noch beabsichtigte Endlosschleifen, dem Programmierer ist keine Abbruchbedingung eingefallen (oder zu viele). Diese müssen dann mit einer oder mehreren break Anweisungen beendet werden:
oder:
Alle drei Schleifenarten, for while und do-while, ebenso wie break, continue und Endlosschleifen werden Sie des öfteren benutzen, machen Sie sich also damit vertraut.
Folgender Fehler kommt bei der Programmierung von Schleifen machmal vor, ich habe ihn selber schon oft genug gemacht, deshalb hier der Hinweiß:
Sehen Sie es? Hinter for(i = 0; i < 666; i++) steht noch ein Semikolon ;! Das heist lieber Compiler, lasse doch mal in einer Schleife i von Null bis 666 laufen, danach führe dann diesen seltsamen alleine stehenden Block in geschweiften Klammern aus (ein mal). Dies ist aber korrekter C Kode, kein Syntaxfehler. Es ist aber wahrscheinlich nicht dass, was Sie eigentlich tun wollten, deshalb bekommen Sie hoffentlich eine Warnung von Compiler, es sei denn Sie haben den warning level des Compilers sehr niedrig eingestellt.
|
Wenn Sie unbedingt Windows programmieren wollen (oder müssen) dann ist der Petzold auf jeden Fall das richtige: |