
Eine Laufvariable nimmt nacheinander eine vorgegebene Anzahl von Werten an,
die bestimmt werden durch einen Anfangswert, eine Schrittweite und
einen Endwert.
Der Datentyp der Laufvariable und entsprechend der Typ von Anfangswert,
Endwert und Schrittweite unterliegt häufig Beschränkungen.
Zulässig sind in der Regel ordinale Datentypen wie int.
Der Wert der Laufvariablen darf innerhalb des Aktionsteils nicht
verändert werden !
Die Zählschleife ist ein Spezialfall der Iteration:
Pseudocode
FOR laufvariable:=anfangswert UNTIL endwert STEP schrittweite DO
anweisungsfolge
END DO
Die Zählschleife ist ein Spezialfall des verallgemeinerten Zyklus:
laufvariable := anfangswert
LOOP
WHEN laufvariable > endwert THEN EXIT
anweisungsfolge
laufvariable := laufvariable + schrittweite
END LOOP
C
for (laufvariable=anfangswert; abbruchbedingung; korrektur_laufvariable)
anweisung; /* einzelne Anweisung oder Anweisungsblock */
Beispiel:
#define n ...
int produkt[n];
int i, n;
for (i=0; i<n; i++) { i = 0, 1, 2, ..., n-1 }
kaufe(produkt[i]);
for (i=n; i>0; i--) { i = n, n-1, ..., 2, 1 }
count_down(i);
Unendliche Schleife:
for(;;)
{ ... }
Zu beachten ist, daß abbruchbedingung in jedem
Iterationsschritt neu ausgewertet wird, der Rahmen einer "normalen"
Zählschleife kann damit gebrochen werden. C erlaubt es, eine Zählschleife gleichzeitig über mehrere Steuervariablen zu betreiben: Die Steuervariablen werden in jedem Iterationsschritt gemeinsam verändert.
Beispiel:
int string_equal(const char *s1, const char *s2)
/* Ermittlung, ob Zeichenketten s1 und s2 identisch */
{
char *p1, *p2;
for ( p1=s1, p2=s2; *p1 && *p2; p1++, p2++ )
if ( *p1 != *p2 )
return 0; /* ungleich */
return *p1 == *p2; /* beide gleich lang ? */
}
Die Möglichkeiten der for-Anweisung in C sprengen die von anderen
Sprachen her bekannten Mechanismen einer Zäschleife.
int pow(int base, int exponent)
/* Potenzierung: Berechnung von base^exponent */
{
int result = 1;
for ( ; exponent > 0; exponent /= 2) {
if ( exponent % 2 )
result *= base;
base *= base;
}
return result;
}
Das obige Beispiel zeigt, daß die Initialisierung der Laufvariablen
auch au&sszlig;erhalb der for-Anweisung erfolgen kann. Zulässig in C++, nicht zulässig in C:
for ( int i = 1; i < 3; ++i )
printf("%d", i);