Dies ist eine alte Version des Dokuments!


Kontrollstrukturen und logische Operatoren

Mithilfe der for-Schleife lässt sich also ein Anweisungsblock eine feste Anzahl oft wiederholen. Wir können 3 Äpfel essen, 5 Äpfel oder 7 Äpfel. Was jedoch, wenn wir essen wollen bis wir satt sind, aber nicht wissen wieviel wir dafür essen müssen?

Die while-Schleife

Mithilfe der while-Schleife ist es uns möglich, eine bestimmte Aktion solange zu wiederholen bis eine von uns gestellte Bedingung erfüllt ist. Konkret können wir also Äpfel essen bis wir satt sind.

while Bedingung do
  -- Anweisungen
end

Für unser Beispiel:

while HabeIchHunger() do
  EsseEinenApfel()
end

Die while-Schleife beginnt damit, unsere Bedingung zu prüfen. HabeIchHunger? Wenn die Antwort auf diese Frage Nein ist, die Funktion HabeIchHunger() also false zurück gibt, dann wird unser Anweisungsblock übersprungen und wir essen keinen Apfel. Wenn unsere Funktion HabenWirHunger() jedoch true zurückgibt, gleichbedeutend mit Ja, ich habe Hunger!, dann wird der Anweisungsblock ausgeführt und wir essen einen Apfel. Im Anschluss wird die Bedingung erneut geprüft: Habe ich (noch) Hunger? und gegebenenfalls der Anweisungsblock ausgeführt. Das geschieht bis die Bedingung HabeIchHunger nicht mehr erfüllt (false) ist.

Angenommen wir einigen uns darauf, dass wir 9 Äpfel essen müssen um satt zu sein, könnte unser Beispiel so aussehen:

  -- Die Anzahl an Äpfel die wir gegessen haben
  -- Notiz: wir nehmen ae um den Umlaut Ä zu vermeiden
  anzahlAepfel = 0
 
  -- Wir definieren eine Funktion mit dem Namen HabeIchHunger
  function HabeIchHunger()
    -- Ist die Anzahl an Äpfel die wir gegessen haben gleich 9?
    if anzahlAepfel == 9 then
      -- Ja, wir haben 9 Äpfel gegessen und haben keinen Hunger mehr
      -- Die Antwort auf HabeIchHunger ist demnach false
      return false
    end
    -- Wir haben noch Hunger und beantworten unsere Frage mit Ja (true)
    return true
  end
 
  function EsseEinenApfel()
    -- Die Anzahl gegessener Äpfel wird erhöht
    anzahlAepfel = anzahlAepfel + 1
  end
 
  -- solange HabeIchHunger() true liefert, essen wir munter Äpfel
  while HabeIchHunger() do
    EsseEinenApfel()
  end
 
  -- Wir geben bekannt dass wir satt sind
  print "Ich bin satt!"

Natürlich ließe sich auch eine for-Schleife verwenden um die 9 Äpfel zu essen, aber wie gehen davon aus das es sich um eine Person handelt, die nur hinspüren kann ob sie Hunger hat und nicht weiss wieviele Äpfel noch gegessen werden müssen bis sie satt ist.