Lua Logo
Schleifen

Das Wort Schleife sagt uns ja schon viel. Es wird alles was dort drin steht mehrfach ausgeführt

for – Schleife (numerische Form)


Die for – Schleife hat zwei Formen. Die erste besprechen wir jetzt und die zweite, wenn wir mehr über Tables wissen.

Was steht oben?
    
    for variable = anfang, ende, sprungWeite do
        Block
    end
    
Wir haben:


Die for – Schleife zählt vom Anfang ausgehend bis zum Ende jeweils die Sprungweite zur Variablen dazu. Führt dann den Block aus und prüft am end angekommen ob die Variable gleich dem Ende ist. Ist das nicht der Fall geht das ganze von vorne los. Das soll jemand verstehen!


Machen wir ein Beispiel:
    
    anfang = 5; ende = 11; sprungWeite= 0.5;        –– man beachte: Das Dezimalzeichen ist ein Punkt
    
Als Block lassen wir uns die Variable ausdrucken.
    
    for i = 5110.5 do
         print(i)
    end
    

Machen wir noch mal ein Bildchen

Schleifen


Als erstes wird 5 ausgedruckt. Aha, er zählt also die Sprungweite beim ersten Mal nicht dazu.
Dann zählt er jeweils zu unserer Variablen, die i heißt, 0.5 dazu. Ist die Schleife bei 11 angekommen, hört sie auf.
Um das zu kontrollieren habe ich nach der Schleife noch die Anweisung gegeben "Ende" zu drucken. Ich glaub ja auch nicht alles.


Das ganze geht natürlich auch rückwärts. Wir wollen also von 11 nach 5 zählen. Was machen wir dann mit der Sprungweite? Wenn wir zu 11 0.5 dazu zählen haben wir 11.5. Das klappt also nicht. Wir müssen 0.5 abziehen. Wie machen wir das?

wir nehmen das "–"

Dient zur Negation von Werten
Aus plus wird minus und umgekehrt.
    
    c = - a
        
    wenn a == 2, dann c == -2
    
Wir benutzten unseren oben erwähntes (noch mal –)
Damit drehen wir das Vorzeichen der Sprungweite um und zählen dann jeweils –0.5 zu 11 zu.
Warum erklärt dieser I... das so kompliziert? Das hat schon seine Gründe. Jetzt ein wenig umständlich, dafür später leichter.
     
    for i = 115, -0.5 do
         print(i)
    end
    
Nun: die Durchgänge


Diesmal ohne Bildchen. Selbst probieren.


Was wir noch nicht wussten: Unsere Variable, die wir hier i genannt haben, ist in diesem Block eine locale Variable. Das heißt außerhalb existiert sie nicht mehr.
Probieren wir mal anstatt print ("Ende") das print (i) zu machen. Da sind wir ja außerhalb des Blocks.

Das war\'s.


while – Schleife

while heißt während oder so lange
    
    while Bedingung do
        Block
    end
    
Während die Bedingung erfüllt ist mache den Block. Im Umkehrschluss heißt das: ist die Bedingung nicht mehr erfüllt, dann höre auf.

Der Reihe nach:

Als Beispiel bauen wir unsere for – Schleife jetzt mal in eine while –Schleife um.
    
    while i  <= 11 do
         print (i) 
    end
    
Kommt das Programm jetzt an der Schleife an sag er sofort: "Das es i gibt nicht"
Machen wir ihm noch eine Variable
    
    i = 5 –– das ist ja unser Anfang
    
bevor wir noch eine Pleite erleben, Zählen wir sie auch direkt rauf.
    
    i = i + 0.5
    

Nur wo packen wir das hin, damit das das gleiche macht wie bei der for – Schleife?
Es muss hinter unseren print – Befehl, da er ja bei for zuerst 5 ausdruckt.

Daher:
    
    i = 5
    while i  <= 11 do
         print (i)
         i = i + 0.5
    end 
    
Wir probieren im Editor und siehe da, es klappt.

Was passiert jetzt genau?

Irgendwann ist i nicht mehr kleiner oder gleich 11. Dann ist Ende

Als Übung die andere Schleife machen. Die mit dem Herunterzählen.


Uff noch eine. Was uns dort wohl erwartet? Nicht viel.

repeat – Schleife
repeat heißt wiederhole
until heißt bis
    
    repeat
        Block
    until Bedingung
    
Im Grunde genommen ist eine repeat – Schleife das gleich wie eine while – Schleife.
Nur mit einem kleinen aber feinen Unterschied. Man könnte es eigentlich sehen.
Die Bedingung steht unten. Das heißt zum einen, die Schleife wird im Gegensatz zur while – Schleife mindestens einmal durchlaufen. Zum anderen muss die Bedingung auch etwas anders aussehen um das gleiche zu erreichen.

Das erste nehme ich vorweg, das zweite ist eine Übung.
    
    i = 5
    repeat
         print (i)
         i = i + 0.5
    until i > 11
    
Hier wird also die Schleife durchgeführt bis eine Bedingung erfüllt ist. (hier wenn i größer als 11 ist)
Bei der while – Schleife. Wird die Schleife durchlaufen solange eine Bedingung erfüllt ist.
Die Vervielfältigung der auf diesen Seiten enthaltenen Informationen und Grafiken ist untersagt, ausgenommen davon ist sämtlicher auf diesen Seiten angezeigter Quellcode.
Siehe auch: Haftungsausschluss
Copyright © Robert Schmitz 2006