Brückenkurs Websites und Webapps/for-Schleife

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<language>Javascript</language>
Sehr oft müssen in einem Programm gleichartige Anweisungen wiederholt werden. 

'''Beispiel:'''

Die Funktion ''print'' gibt auf der Konsole 5 mal das Wort "Guten Tag!" aus:

<code id="58cef5ddc3c1e">
function print(){

  console.log("Guten Tag!");
  console.log("Guten Tag!");
  console.log("Guten Tag!");
  console.log("Guten Tag!");
  console.log("Guten Tag!");

}
</code>
<run id="58cef5ddc3cf4">
print();
</run>

Das wiederholte Aufschreiben von Code ist sehr mühsam. Außerdem sind die so entstandenen Programme nicht sehr flexibel: Was machen wir z.B., wenn durch einen Parameter von außen vorgegeben werden soll, wie oft die Wiederholung ausgeführt wird?

Mit Hilfe der Kontrollstruktur '''for-Schleife''' können wir Wiederholungen bequemer formulieren (es gibt auch andere Arten von Schleifen, z.B. die while-Schleife, die wir hier aber nicht behandeln). 

Die oben gezeigte Funktion ''print'' lässt sich mit einer for-Schleife z.B. wie folgt schreiben:

<code id="58cef5ddc3c88">
function print(){

  for(var i=0; i<5; i++){

    console.log("Guten Tag!");
  }

}
</code>
<run id="58cef5ddc3d57">
print();
</run>

Eine übliche allgemeine Notation einer for-Schleife sieht z.B. wie folgt aus:

 for( var i = startwert; i < obergrenze; i++) {
    ...
 }

Anstelle von ... werden die Anweisungen eingesetzt, die wiederholt werden sollen. 

Die Anweisung '''i++''' ist eine Abkürzung für die Anweisung '''i=i+1'''. 

Eine for-Schleife durchläuft mehrere ''Iterationen''. In jeder Iteration werden alle Anweisungen zwischen den Klammern {...} ausgeführt. 

Für das oben gezeigte Muster gilt: 
# Vor der ersten Iteration erhält ''i'' den Wert ''startwert''. Das ist die '''Anfangszuweisung'''.
# Nach der Iteration wird der Wert von ''i'' um 1 erhöht (''i++''). Das ist die '''Wiederholungszuweisung'''.
# Es wird geprüft, ob die Bedingung ''i<obergrenze'' erfüllt ist. Das ist die '''Wiederholungsbedingung'''.
# Wenn die Wiederholungsbedingung erfüllt ist, wird eine weitere Iteration durchgeführt. 
# Die Schritte 2 bis 4 werden wiederholt, bis die Wiederholungsbedingung nicht mehr erfüllt ist. In diesem Fall werden keine weiteren Iterationen durchgeführt.

Sie können das an folgendem Beispiel nachvollziehen:

<code id="58cef85107e61">
function print(){

  for(var i=0; i<5; i++){

    console.log(i);
  }

}
</code>
<run id="58cef85107f12">
print();
</run>

Für die for-Schleife gibt es verschiedene Variationen:
* Sie dürfen anstelle von ''i'' andere Variablennamen einsetzen. 
* Sie dürfen für ''startwert'' und ''obergrenze'' beliebige Werte einsetzen.
* Sie dürfen die Wiederholungszuweisung ändern. Beispiele:
** ''i=i+2'' bedeutet: ''i'' wird nach jeder Iteration um 2 erhöht. 
** ''i--'' oder ''i=i-1'' bedeutet: ''i'' wird nach jeder Iteration um 1 erniedrigt.
* Sie dürfen die Wiederholungsbedingung ändern: statt ''i<5'' dürfen Sie z.B. ''i>5'' schreiben.

'''Beispiele'''

Anderer Startwert, andere Obergrenze (5, 10): 
<code id="58cefc1ebc44a">

function print(){
  
  for(var i=5; i<10; i++){
    console.log(i);
  }  

}
</code>
<run id="58cefc1ebc5b2">
print();
</run>


Andere Wiederholungszuweisung (i=i+5):
<code id="58cefc1ebc4c2">

function print(){
  
  for(var i=0; i< 55; i = i + 5){
    console.log(i);
  }  
}
</code>
<run id="58cefc1ebc620">
print();
</run>


Andere Wiederholungsbedingung (i>=0)
<code id="58cefc1ebc52f">

function print(){
  
  for(var i=10; i>=0; i--){
    console.log(i);
  }  
}
</code>
<run id="58cefc1ebc689">
print();
</run>


'''Aufgaben'''

Schreiben Sie eine Funktion, die 10 mal den Text "Sonne, Mond und Sterne" auf der Konsole ausgibt!
<code id="58cf00c2d8e0d"></code>
<run id="58cf00c2d903b"></run>


Schreiben Sie eine Funktion, die folgenden Text auf der Konsole ausgibt:
 Schritt 0
 Schritt 1
 Schritt 2
 Schritt 3
 Schritt 4
 Schritt 5
<code id="58cf00c2d8ec9"></code>
<run id="58cf00c2d90dc"></run>


Schreiben Sie eine Funktion, die folgenden Text auf der Konsole ausgibt:
 21. März 2017
 22. März 2017
 23. März 2017
 ...
 31. März 2017

Anstelle von ... sollen die entsprechenden Tage eingesetzt werden.
<code id="58cf00c2d8f65"></code>
<run id="58cf00c2d9177"></run>


Schreiben Sie eine Funktion, die folgendes Muster auf der Konsole ausgibt:
 6
 ---
 12
 ---
 18
 ---
 24
 ---
 ...
 60
 ---

Anstelle von ... sollen die übrigen Werte eingesetzt werden.
<code id="58cf02f525749"></code>
<run id="58cf02f525874"></run>


Schreiben Sie eine Funktion, die einen Parameter ''anzahl'' erwartet. Die Funktion soll so oft den Text "Test" auf die Konsole schreiben, wie es der Wert des Parameters vorgibt. '''Tipp:''' Setzen Sie den Namen des Parameters als ''obergrenze'' in der Wiederholungsbedingung ein!
<code id="58cf02f5257d0"></code>
<run id="58cf02f5258f0"></run>



'''Zusatzaufgabe'''
Lösen Sie noch einmal Aufgabe 3 aus dem Arbeitsblatt [[Brückenkurs_Websites_und_Webapps/Zeichenketten | Zeichenketten]]. Verwenden Sie diesmal eine for-Schleife!

<code id="58cf1c749791d">
function bmi(gewicht, groesse){

 var ergebnis = gewicht / (groesse * groesse);
 return ergebnis;

}
</code>
<code id="58cf1c74979c2"></code>
<run id="58cf1c7497a74"></run>