Step 12 - while

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.