Galileo Computing < openbook > Galileo Computing - Professionelle Bücher. Auch für Einsteiger.
Professionelle Bücher. Auch für Einsteiger.

 << zurück
C von A bis Z von Jürgen Wolf
Das umfassende Handbuch für Linux, Unix und Windows
– 2., aktualisierte und erweiterte Auflage 2006
Buch: C von A bis Z

C von A bis Z
1.116 S., mit CD, Referenzkarte, 39,90 Euro
Galileo Computing
ISBN 3-89842-643-2
gp Kapitel 10 Kontrollstrukturen
  gp 10.1 Verzweigungen mit der if-Bedingung
    gp 10.1.1 Anweisungsblock
  gp 10.2 Die Verzweigung mit else if
  gp 10.3 Die Verzweigung mit else
  gp 10.4 Der !-Operator (logischer Operator)
  gp 10.5 Logisches UND (&&) – Logisches ODER (||)
  gp 10.6 Bedingungsoperator ?:
  gp 10.7 Fallunterscheidung: die switch-Verzweigung
    gp 10.7.1 default
  gp 10.8 Die while-Schleife
    gp 10.8.1 Endlosschleife (while)
    gp 10.8.2 Fehlervermeidung bei while-Schleifen
  gp 10.9 Die do while-Schleife
  gp 10.10 Die for-Schleife
    gp 10.10.1 Beispiele für eine for-Schleife
  gp 10.11 Kontrollierte Sprünge
    gp 10.11.1 continue
    gp 10.11.2 break
  gp 10.12 Direkte Sprünge mit goto
  gp 10.13 Notationsstil
    gp 10.13.1 K&R-Stil
    gp 10.13.2 Whitesmith-Stil
    gp 10.13.3 Allman-Stil
    gp 10.13.4 GNU EMACS-Stil
    gp 10.13.5 Der Stil des Autors ;) (K&R-like)


Galileo Computing - Zum Seitenanfang

10.11 Kontrollierte Sprünge  downtop

Es gibt vier Möglichkeiten, eine Ablaufstruktur, wie etwa Schleifen, Funktionen, Bedingungen oder gar das Programm, unmittelbar zu verlassen. Über sie kann aber nicht in eine bestimmte Anweisung verzweigt werden, sondern lediglich zur nächsten Ablaufstruktur.

gp  continue – damit beenden Sie bei Schleifen nur den aktuellen Schleifendurchlauf.
gp  break – beendet die Schleife oder eine Fallunterscheidung. Befindet sich break in mehreren geschachtelten Schleifen, wird nur die innerste verlassen.
gp  exit – beendet das komplette Programm.
gp  return – beendet die Iteration und die Funktion, in der return aufgerufen wird. Im Fall der main()-Funktion würde dies das Ende des Programms bedeuten.

Es sei angemerkt, dass exit und return keine schleifentypischen Anweisungen sind, im Gegensatz zu break und continue. Auf continue und break soll noch etwas genauer eingegangen werden.


Galileo Computing - Zum Seitenanfang

10.11.1 continudowntop

Die continue-Anweisung beendet nur die aktuelle Schleifenausführung. Das bedeutet, dass ab dem Aufruf von continue im Anweisungsblock der Schleife alle anderen Anweisungen übersprungen werden und die Programmausführung zur Schleife mit der nächsten Ausführung zurückspringt:

/* continue1.c */
#include <stdio.h>
int main(void) {
   int i;
   for(i = 1; i <= 20; i++) {
     if(i % 2)        /* Rest bedeutet ungerade Zahl */
        continue;     /* printf überspringen         */
     printf("%d ", i);
   }
   printf("\n");
   return 0;
}

Bei diesem Beispiel überprüfen Sie, ob es sich bei der Variable i um eine ungerade Zahl handelt. In diesem Fall wird die continue-Anweisung ausgeführt. Die printf-Anweisung wird dabei übersprungen, und es geht zum nächsten Schleifendurchlauf. Die Ausgabe des Programms bestätigt Ihnen, dass nur die geraden Zahlen durchkommen. So konnten Sie sich mit continue praktisch eine else-Anweisung ersparen.

Bitte achten Sie bei continue auf die folgenden eventuell ungünstigen Seiteneffekte:

/* continue2.c */
#include <stdio.h>
int main(void) {
   int i=2;
   while(i <= 10) {
      if(i % 2)        /* Rest bedeutet ungerade Zahl */
         continue;     /* printf überspringen         */
      printf("%d ", i);
      i++;
   }
   return 0;
}

Dieses Programm hätte dasselbe ausführen sollen wie schon das Programmbeispiel zuvor. Mit dem Unterschied, dass es sich hier um eine Endlosschleife handelt. Denn sobald

if(i % 2)

wahr ist, also der Wert ungerade ist, springt das Programm wieder zum Schleifenanfang. Die Iteration (i++) wird danach nie mehr ausgeführt, da sich der Wert der Variable i nicht mehr ändern kann und somit immer ungerade bleibt.


Galileo Computing - Zum Seitenanfang

10.11.2 breatoptop

Bisher haben Sie die break-Anweisung nur bei der switch case-Verzweigung verwendet. Mit break können aber auch Schleifen vorzeitig beendet werden, allerdings sollte dies nur ausnahmsweise erfolgen. Denn im Regelfall sollten Sie eine Schleife immer mit einer Bedingung beenden.


Achtung   Ein oft gemachter Fehler ist das Setzen von break in einer verschachtelten Schleife. Wenn break in der innersten Schleife verwendet wird, wird auch nur diese Schleife abgebrochen.


 << zurück
  
  Zum Katalog
Zum Katalog: C von A bis Z
C von A bis Z
bestellen
 Ihre Meinung?
Wie hat Ihnen das <openbook> gefallen?
Ihre Meinung

 Buchtipps
Zum Katalog: Shell-Programmierung






 Shell-Programmierung


Zum Katalog: Linux-UNIX-Programmierung






 Linux-UNIX-Programmierung


Zum Katalog: C/C++






 C/C++


Zum Katalog: UML 2.0






 UML 2.0


Zum Katalog: Reguläre Ausdrücke






 Reguläre Ausdrücke


Zum Katalog: Linux






 Linux


 Shopping
Versandkostenfrei bestellen in Deutschland und Österreich
InfoInfo





Copyright © Galileo Press 2006
Für Ihren privaten Gebrauch dürfen Sie die Online-Version natürlich ausdrucken. Ansonsten unterliegt das <openbook> denselben Bestimmungen, wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


[Galileo Computing]

Galileo Press, Rheinwerkallee 4, 53227 Bonn, Tel.: 0228.42150.0, Fax 0228.42150.77, info@galileo-press.de