News Ticker

C 11: Kontrollstrukturen, Schleifen

Im letzten Artikel wurden schon einige Kontrollstrukturen vorgestellt - nämlich die Verzweigungen. Dies ist gut, wenn man an einer Stelle im Programm verschiedene Wege, abhängig vom Ausdruck, gehen möchte. Will man jedoch einen bestimmten Teil sehr oft wiederholen, braucht man Schleifen. Es gibt 3 Schleifen-Strukturen in C. Als erstes gibt es while. Auf Deutsch würde man sagen: "Solang dieser Ausdruck wahr ist, mache folgendes!". Dann gibt es do-while. Das würde auf Deutsch so aussehen: "Mach erstmal das. Wenn du damit fertig bist, schaust du, ob der Ausdruck wahr ist. Wenn ja, machst du das gleiche nochmal.". Zum Schluss gibt es for-Schleifen, welche genau wie while funktionieren.

Genug Theorie, hier ein Beispiel:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <stdio.h>
 
int main()
{
  int i = 1;
 
  while(i<=3)
  {
    printf("%d. while\n", i);
    i++;
  }
 
  i = 1;
  do
  {
    printf("%d. do-while\n", i);
    i++;
  } while(i<=3);
 
  for(i=1; i<=3; i++)
    printf("%d. for\n", i);
 
return 0;
}

Hier sind einige ganz wichtige Sachen zu erwähnen. Die while-Schleife prüft, ob i kleiner gleich 3 ist. Das ist wahr. Damit wird der Schleifenkörper (alles zwischen den geschweiften Klammern) ausgeführt. Wichtig: nicht vergessen, die Ausdrucksvariable zu verändern, sonst läuft die Schleife ewig.

Danach wird i wieder auf 1 gesetzt, damit die nächste Schleife genau so ausgeführt werden kann. Hier wird jedoch erst ausgeführt und dann geprüft. Der Unterschied zur while-Schleife ist also, dass eine do-while-Schleife immer mind. einmal ausgeführt wird.

Zuletzt kommt for an die Reihe. Hier wird die Variable im Schleifenkopf wieder auf 1 gesetzt., danach folgt der schon gesehene Wahrheitsausdruck und danach die Addition. Somit fasst diese Schleife jegliche Verwaltung der Schleife im Kopf zusammen, sodass im Körper wirklich nur der Code steht, den man auch wirklich braucht. Erinnert euch an Blöcke: wenn nur eine Zeile im Block steht, können die geschweiften Klammern weggelassen werden. So auch in dieser for-Schleife.

Alle Schleifen produzieren das gleiche Ergebnise, wie euch die Ausgabe beweisen wird.

Nicht direkt zu den Schleifen, aber besonders interessant in Verwendung mit diesen, sind die folgenden Statements: continue und break. Ein continue bricht den aktuellen Durchlauf der Schleife ab und macht mit dem nächsten weiter. Das break kennen wir schon von dem switch-Statement. Es bricht die ganze Schleife (also nicht nur den aktuellen Durchlauf) ab und führt den der Schleife folgenden Code aus.