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-SchleifenInfo:
Dieses Arbeitsblatt enthält nochmal eine Erklärung mit Struktogrammen
für die for-Schleife. Ebenfalls sind Übungen enthalten