repeat Schleife / Sprache Pascal

Newbii

Cadet 1st Year
Registriert
Apr. 2018
Beiträge
9
Hallo, ich habe eine Frage zu der Abbruch-Bedingung einer repeat-Schleife.

Muss diese immer ein boolean vom Wert "false" sein?

Code:
repeat
  statement
until false
 
Doch google ist mir schon ein Begriff. Wollte nur mal mit jemandem über das Thema kommunizieren, da ich ein Fernstudium mache und das Thema mich gerade etwas verwirrt.
Also kein Grund für Sarkasmus.
Danke.
 
Die Schleife wird solange wiederholt, bis die Bedingung eintritt. Sie unterscheidet sich also von den fußprüfenden Schleifen, die man sonst so in anderen Programmiersprachen findet. Dort ist es für gewöhnlich ein tue { } solange x.
 
Mal rein mit menschlicher Logik betrachtet: Die Schleife kann nur weiter durchlaufen werden oder nicht. Also kann die Bedingung nur 2 Zustände haben, damit bietet sich ein boolean an. Ein "bißchen" die Schleife weiter durchlaufen geht nicht.

Wie Du die Bedingung formulierst ist letztendlich Dir überlassen. Wenn Du einen Parameter auf true setzen möchtest, sagst Du zum Schluss halt until not true (wie auch immer die Pascal Syntax dafür ist, kA).
 
Ehrlicherweise verwirt mich deine Frage etwas. Willst du vielleicht wissen, ob die Abbruchbedingung immer eine Variable vom Typ boolean sein muss? Das stimmt nämlich nicht, sondern es kann auch ein Ausdruck sein, der entweder true oder false ist, also z.B. auch x=3 o.ä.

In anderen Programmiersprachen z.B. 'C' wird ein Zahlenwert von 0 auch als false interpretiert und ungleich 0 als true. Das ist in Pascal aber nicht möglich, insofern muss, falls der Ausdruck eine Variable ist, diese zwingend vom Typ boolean sein.

Edit: Wo hast du das Code-Beispiel her? Finde ich unglücklich. Besser wäre:

Code:
repeat
  statement
until boolean expression

'false' ist ja nur ein Zustand, den ein Ausdruck annehmen kann und 'until false' würde, wenn man es so programmieren würde, eine Endlosschleife ergeben.
 
Zuletzt bearbeitet von einem Moderator:
Danke für die Antworten.
Ich hatte nur ein Beispiel mit einer repeat Schleife, in der die Schleife endlos weiterlief, als die Abbruchbedingung „false“ war aber abgebrochen ist, als die Bedingung „true“ wurde.
Ich hatte beide Varianten bei der Schleife getestet, also die Werte der bool Variablen entsprechend getauscht.
Deshalb meine Frage, ob eine bool Variable als Abbruchbedingung einer repeat Schleife immer den „Wert“ true haben muss.
Ich kann das Programm oder die Schleife ja heute Abend mal posten.
 
Du kannst den Code für die Schleife einfach als Text lesen, dann sollte doch sofort klar sein wie es funktioniert:

Code:
repeat
  statement
until x > 10

Auf Deutsch:
"Wiederhole 'statement' solange, bis 'x' größer als 10 ist."

Heißt:
- Wenn x = 0 ist, dann wird die Schleife weiter ausgeführt, weil 0 nicht größer als 10 ist
- Wenn x = -5 ist, dann wird die Schleife weiter ausgeführt, weil -5 nicht größer als 10 ist
- Wenn x = 9 ist, dann wird die Schleife weiter ausgeführt, weil 9 nicht größer als 10 ist
- Wenn x = 10 ist, dann wird die Schleife weiter ausgeführt, weil 10 nicht größer als 10 ist
- Wenn x = 11 ist, dann wird die Schleife abgebrochen, weil 11 größer als 10 ist

Und sonst kann man auch die "lange" Version mit allen anderen Boolschen Ausdrücken schreiben:
Code:
repeat
  statement
until boolExpression = True
ist gleichbedeutend mit:
Code:
repeat
  statement
until boolExpression
Ob 'boolExpression' dabei eine Variable oder eine Funktionsaufruf ist, ist egal. Hauptsache es kommt True oder False raus.

Liest sich dann wie folgt:
"Wiederhole 'statement' solange, bis 'boolExpression' den Wert 'True' hat".
 
Zuletzt bearbeitet:
Zurück
Oben