CUBE.CODES: Schleifen mit for
Version vom 11. Januar 2022, 12:41 Uhr von Wolfgang Lentner (Diskussion | Beiträge)
Programm 1: für(... ) tue ...
for(i=1; i<1000; i=i+1) UI.log(i);
Das Sprachkonstrukt for(<Anfangsbefehl>; <Wiederholungsbedingung>; <Veränderung>) vor dem Befehl UI.log(i) steuert ähnlich dem while-Konstrukt, wie der Befehl UI.log(i) wiederholt wird. Man kann aber alle typischen Wünsche einer einzelnen Zeile unterbringen:
- Der <Anfangsbefehl> wird ausgeführt, bevor alles losgeht. Dabei setzt man meistens die Zählervariable auf einen gewünschten Anfangszustand. Man kann aber auch beliebige andere Befehle anfangs ausführen lassen.
- Die <Wiederholungsbedingung> wird immer überprüft, bevor der nachfolgende Befehl ausgeführt wird. Trifft die Bedingung zu, wird er (nochmal) ausgeführt, trifft er nicht (mehr) zu, wird der nachfolgende Befehl nicht mehr ausgeführt, also die Serie unterbrochen.
- Die <Veränderung> ist ein Befehl, der nach jeder Durchführung ausgeführt wird. Wir benutzen ihn meist, um die Zählervariable zu verändern. Würden wir die Situation nicht verändern, wäre die Wiederholungsbedingung ja immer richtig und wir hätten eine Endlosschleife.
Programm 2: Teste die folgenden Schleifen
for(i=0; i<100; i=i+2) UI.log(i); for(i=1; i<100; i=i+2) UI.log(i); for(i=1; i<1000; i=i*2) UI.log(i); for(i=100; i>-1; i=i-1) UI.log(i); for(i=1; i<10; i=i+1) UI.log("1/"+i); for(i=1; i>0; i=i/2) UI.log(i);
Programm 3: Man kann damit in einer Zeile auch einfach Wertetabellen ausgeben, die beliebig skaliert sind
for(i=0; i<100; i=i+1) UI.log(i+" - "+i*i); for(i=-10; i<=10; i=i+1) UI.log(i+" | "+i*i); for(i=0; i<1000; ++i) UI.log(i+" | "+(3*i+11)); for(i=-10; i<=10; i=i+0.5) UI.log(i+" | "+(2*i*i-i+2.5));
Programm 4: Teiler ermitteln
Auch unser Teilerprogramm können wir jetzt in einer einzigen Zeile verwirklichen
for(i=1; i<=20000; ++i) if(20000%i==0) UI.log(i);