Start > Informatik > C - Kurs > Schleifen (2)

Schleifen (2)


Sinn und Zweck

So nachdem wir uns jetzt bereits durch das Thema Schleifen gewunden haben, gibt es eine kleine Erweiterung zum Thema:
Wir können jetzt also unsere Schleifen hervorragend programmieren.

Wozu brauchen wir eine neue Art von Schleifen?

Dazu stellen wir uns mal die Frage, ob die beiden Aussagen dasselbe sind:
"Liste alle Zahlen bis 10 auf"
"Zähle solange bis eine bestimmte Bedingung erfüllt ist"

Na, Unterschied erkannt?
Klar, bei der zweiten Aussage kann es passieren, dass die Bedingung nie erfüllt wird und die Schleife unendlich lange läuft. Bei der ersten Version ist jedoch von vornherein klar, wie lange die Schleife laufen soll.

Beispiel

Nehmen wir den Countdown beim Start einer Rakete. Bei diesem Beispiel ist klar, dass exakt von 10 bis 0 heruntergezählt wird.
Dies kann man zwar auch mit einer while Schleife lösen, aber eine Schleife, die automatisch immer um einen herunterzählt ist praktischer.

    for (iCount = 10; iCount >= 0; iCount = iCount -1 ) {
       printf("beep");
    }
    printf("lift off");

Diese Schleife heißt for (engl. = für jedes) - Schleife. Man spricht von einer kopf-gesteuerten Schleife, weil die Bedingung, der Startwert und der Inkrement zu Beginn der Schleife (also am Kopf) festgelegt werden.

Syntax

Die Syntax einer Schleife hängt davon ab, welche Art von Schleife man programmieren will. Ich stelle hier nur die for - Schleifen vor.

Syntax einer for - Schleife (kopf  - gesteuert)

    for ( Startwert ; Bedingung ; Inkrement {
        //Anweisungen die wiederholt werden sollen
    }

Eingeleitet wird die kopfgesteuerte Schleife (Bedingung am Anfang) durch den Befehl for. Bei der kopf-gesteuerten Version wird zunächste die Bedingung geprüft, bevor die Schleife überhaupt durchlaufen wird.
Startwert: Hier wird angegeben, mit welchem Variablenwert die Schleifenvariable (im obigen Beispiel iCount) starten soll.
Bedingung: Hier steht die Bedingung, solange diese erfüllt ist wird die Schleife durchlaufen.
Inkrement: Hier steht, um wieviel die Zählvariable nach jedem Durchlauf erhöht werden soll

Anwendungsbeispiel einer Schleife

Nehmen wir nochmal das Beispiel aus dem vorigen Artikel: Beispiel der Digitalkamera aus dem Kapitel Arrays:
Eine Kamera nimmt ein Bild mit 3 Mio Pixel auf. Anschließend muss jeder Pixel gespeichert werden.
Dort hatten wir das Problem, wie man möglichst einfach 3.000.000 Pixel abspeichert:

Mit Hilfe einer Schleife geht das nun ganz einfach:

    int    aiDigiCam[3000000];
    int    iLoop;
    for (iLoop = 0; iLoop < 3000000; iLoop = iLoop +1) {
       aiDigiCam[iLoop] = 0;
    }

Was macht wohl dieser Code?
Richtig, er wiederholt die Anweisungen 3 Mio mal und in jedem Schritt wird die Zahl 0 in dem jeweiligen Array-Feld mit dem Index iLoop abgelegt.
Zu schwierig, dann bitte die vorhergehenden Kapitel nacharbeiten.

Infoblätter und Arbeitsblätter

for-Schleifen
Info: Dieses Arbeitsblatt enthält nochmal eine Erklärung mit Struktogrammen für die for-Schleife. Ebenfalls sind Übungen enthalten



Ticker
Last update:
June 29. 2017 19:48:11