Step 12 - while

Spendenaufruf des DRK Ortsvereins Spielberg e.V.

16. April 2023

 

Hallo liebe Besucherin, hallo lieber Besucher!

In einem ganz anderen Kontext möchte ich hier nun bewerben:
Der Verein, für den ich auch einstehe, benötigt Spenden:


Bitte bei der Überweisung den Verwendungszweck beachten!

Der neuste Stand gibt es hier zu sehen!

Nicht, was wir geben, sondern was wir teilen, macht uns reich. (Mother Teresa)

 

 

Programmsteuerung 4: Die "while"-Schleife

Eine while-Schleife wiederholt alle Befehlszeilen zwischen begin und end so lange, bis die Bedingung false ist. Es wird dabei zuerst nach der Bedingung gefragt und dann erst, insofern diese wahr ist, die Anweisungen bearbeitet. Daher wird diese Schleife auch als "abweisende Schleife" bezeichnet.
Die Struktur:
  while Bedingung do
  begin
    // Anweisungen
  end;
  // (ent)sprechend: während irgendwas wahr ist mache irgendwas

  // Wann endet diese Schleife?
  while true do
  begin
     // Anweisungen
  end;
 
Kleines Beispiel zum Dividieren mit unbestimmten Zahlen, aber mit einem Ergebnis in Ganzzahlen und mit Rest: Vorausgesetzt sind hier die Variablen divident:Real, divisor:Real, ergebnis:Integer. Wer möchte, kann die Variablentypen nochmals bei Step 04 nachlesen, also was "Real" genau für Werte haben kann.
var
  dividend,
  divisor,
  ergebnis : Integer;
begin  
  //  ...
  while (dividend = divisor) or  (dividend > divisor) do
  begin
    dividend := dividend - divisor;
    ergebnis := ergebnis + 1;
  end;
  ShowMessage('Lösung: '+ (IntToStr(ergebnis)) + 'Lösung: '' Rest: '+(FloatToStr(dividend)));
end;
Dieses Beispiel ist hier nur sehr kurz aufgelistet. Die "Vollversion" findest du gerne unter GitHub.
Viel Spaß ;)
 
Es ist wichtig, die while-Schleife genau von der if-Anweisung zu trennen. In meinem Kurs früher habe ich viele Schüler gehabt, die damit erstmal eine Schwierigkeit hatten, da der Aufbau sehr ähnlich ist und es wirklich aufs Detail ankommt. Ich darf mich beim Implementieren fragen, möchte ich die Ausführung nur einmal haben (dann nehme ich "if" - "wenn") oder soll es so lange wiederholt werden, bis meine Bedingung "false" ist. Beim letzteren Gedanken gehört auch dazu, dass ich mir überlege, ob es denn "false" werden kann. Andernfalls habe ich eine sogenannte "Endlosschleife" programmiert, die ggf. das Programm zum "hängen" oder sogar zum Absturz bringen kann.