7.4. Verschachtelte Schleifen

Es gibt keinerlei Einschränkungen bezüglich der Anweisungen, die im Körper einer Schleife vorkommen dürfen. Deswegen ist es auch möglich, daß eine Schleife eine oder mehrere Schleifen enthält. Die Konstruktion, bei der Schleifen durch übergeordnete Schleifen kontrolliert werden, heißt "verschachtelte Schleifen". Verschachtelte Schleifen gehören zum Standard-Repertoir des versierten C-Programmierers; viele Problemstellungen lassen sich nur mit ihrem Einsatz lösen.

Der Verschachtelungstiefe, also der Anzahl an Ebenen von abhängigen Schleifen, sind prinzipiell keine Grenzen gesetzt. Allerdings führt eine Verschachtelungstiefe von mehr als drei Ebenen zu schwer verständlichem Code und zwingt zu "unsauberem" Vorgehen, sobald die ganze Konstruktion ausgehend von der innersten Schleife verlassen werden soll.

Um sich das Verhältnis von äußerer und innerer Schleife besser vorzustellen zu können, kann man den Vergleich mit einer Uhr heranziehen. Der äußeren Schleife entspricht dabei der Stundenzeiger, der inneren der Minutenzeiger; während der Stundenzeiger um eine Einheit vorrückt, absolviert der Minutenzeiger einen kompletten Umlauf. Genauso vollzieht die innere Schleife sämtliche Schleifendurchläufe während eines einzigen Durchlaufs der äußeren Schleife. Folgendes Beispiel soll das Verhältnis von zwei verschachtelten Schleifen veranschaulichen:


/* loopdemo.c
 * demonstriert die Arbeitsweise verschachtelter
 * Schleifen 
 */

#include <stdio.h>

int main(void){

int iInnerCount, iOuterCount;

 for( iOuterCount = 1; iOuterCount <= 3; iOuterCount++ ){
	 printf("\n%d. Durchlauf der äußeren Schleife\n\n",
		iOuterCount);

	 for( iInnerCount = 1; iInnerCount <= 3;
	 	iInnerCount++ )
		printf("%d. Durchlauf der innernen Schleife\n",
		iInnerCount);
	}

 return 0;
}

Die Bildschirmausgabe dieses Beispiels belegt, daß die innere Schleife vollständig abgearbeitet wird, bevor der Zähler der äußeren Schleifen erneut inkrementiert wird:


1. Durchlauf der äußeren Schleife

1. Durchlauf der innernen Schleife
2. Durchlauf der innernen Schleife
3. Durchlauf der innernen Schleife

2. Durchlauf der äußeren Schleife

1. Durchlauf der innernen Schleife
2. Durchlauf der innernen Schleife
3. Durchlauf der innernen Schleife

3. Durchlauf der äußeren Schleife

1. Durchlauf der innernen Schleife
2. Durchlauf der innernen Schleife
3. Durchlauf der innernen Schleife