![]() |
AW: Kopf- und Fußgesteuerte Schleifen [Verständnisfrage]
OK, dann noch ein paar Details. Zum Thema Struktogramm:
![]() Die dort genannte "Zählergesteuerte Schleife" ist in Delphi die For-Schleife. Sie hat einen Start- und einen Endwert für die interne Zählvariable. Ist der Endwert kleiner als der Startwert, wird die Schleife gar nicht erst durchlaufen. Für die angesprochene Variable kommen nur ordinale Datentypen in Frage, das sind Typen, die einen klar definierten Vorgänger und Nachfolger haben, wie ganze Zahlen, einzelne Zeichen oder Aufzählungstypen. Die "Abweisende (vorprüfende – kopfgesteuerte) Schleife" ist die While-Schleife. Sie hat mindestens eine Schleifenbedingung, welche vor Eintritt in die Schleife geprüft wird/werden. Ist die Kombination dieser Bedingungen nicht (mehr) erfüllt, wird die Schleife nicht durchlaufen. Die "Nicht abweisende (nachprüfende – fußgesteuerte) Schleife" ist die Repeat-Schleife. Diese wird zunächst auf jeden Fall durchlaufen, anschließend wird die Kombination der Bedingungen geprüft. Ist diese weiterhin erfüllt, wird die Schleife erneut durchlaufen, und zwar solange, bis dies nicht mehr der Fall ist. Hier ist Delphi/Pascal übrigens ein Sonderfall gegenüber anderen Sprachen, da es sich hier um eine Abbruchbedingung handelt und nicht wie bei der While-Schleife um eine Schleifenbedingung. Hilft Dir das weiter? |
AW: Kopf- und Fußgesteuerte Schleifen [Verständnisfrage]
Für die Erklärung/Darstellung baut man sich mit einer Excel Tabelle einen "Papiercomputer" und stellt die aktuelle Programmzeile und den Wert der Variablen dar.
z.B. für dieses hier (kopfgesteuerte Schleife)
Delphi-Quellcode:
wird dann zu (es werden immer nur die Veränderungen eingetragen, dadurch sieht man, was sich wo ändert)
// Start
Wert := 8; while Wert < 10 do begin Wert := Wert + 1; end; // Ende
Code:
Programmschritt | Vergleich | Wert
-----------------+-----------+------ -- Start -- | | ? Wert := 8 | | 8 Wert < 10 | true | Wert := Wert + 1 | | 9 Wert < 10 | true | Wert := Wert + 1 | | 10 Wert < 10 | false | -- Ende -- |
AW: Kopf- und Fußgesteuerte Schleifen [Verständnisfrage]
-deleted-
|
AW: Kopf- und Fußgesteuerte Schleifen [Verständnisfrage]
Ich weiß nicht ob es schon erwähnt wurde, aber...
Kopfgesteuerte Schleife: while TRUE do ... auf deutsch solange WAHR führe-aus ... Fußgesteuerte Schleife: repeat ... until TRUE auf deutsch wiederhole ... bis WAHR Der Hauptunterschied ist, dass bei while do zuerst überprüft wird, erst dann wird die Anweisung ausgeführt, bei repeat until wird zuerst die Anweisung ausgeführt und dann erst geprüft ob sie Wiederholt werden soll. Also, bei while do kann es vorkommen, dass die Anweisung kein einziges mal ausgeführt wird, wenn die Bedingung False ist, bei repeat until immer mindestens ein mal ausgeführt, und erst dann wird geprüft ob die Schleife wiederholt wird. Zuerst ein Beispiel für die Kopfgesteuerte while do Schleife:
Delphi-Quellcode:
Hier wird zuerst geprüft ob noch Cola in der Dose ist, wenn ja, dann wird ein Schluck getrunken. Das alles wird wiederholt bis keine Cola mehr in der Dose mehr ist. Dann wird kein Schluck genommen und die Schleife wird beendet.
while Cola-In-Der-Dose do
begin Ein-Schluck-Trinken; end; Jetzt ein Beispiel für die Fußgesteuerte repeat until Schleife:
Delphi-Quellcode:
Hier geht man zuerst zu Arbeit, arbeitet fleißig und guckt alle 10 Minuten auf die Uhr. Solange die Uhrzeit nicht 16:30 Uhr oder größer ist, wird wiederholt fleßig gearbeitet.
repeat
Fleißig-Arbeiten until Uhrzeit >= 16:30 Uhr; Also, im ersten Beispiel wird erst geprüft ob noch Cola in der Dose ist und erst dann solange getrunken bis sie leer ist, im zweiten Beispiel wird zuerst zu Arbeit gegangen und dann geprüft ob schon Feierabend ist ;) |
AW: Kopf- und Fußgesteuerte Schleifen [Verständnisfrage]
Vielen Dank Freund ! (: Hilft schon mal ein wenig. Bin jetzt von der Schule nachhaus gekommen und werde später die Power Point mal anfangen (hab eig vor sie heute fertig zu stellen ^^). Zum Vergleich zwischen den zwei Schleifen dachte ich ich mach eine Tabelle mit jeweils den verschiedenen Eigenschaften ! Meint ihr das is gut ?
Dann hab ich noch überlegt es mit Grafiken zu erklären also Pfeile undso ^^ da is mir aber bis jetz noch nix eingefallen. Meld mich gegen Abend nochmal und werd die Power Point vielleicht dann hier reinstellen das ihr mir Verbesserungsvorschläge geben könnt (; @Sir Rufo: das hab ich nicht ganz verstanden ^^ also bei den Codes versteh ich noch net so viel :/ |
AW: Kopf- und Fußgesteuerte Schleifen [Verständnisfrage]
Zitat:
Gruß K-H |
AW: Kopf- und Fußgesteuerte Schleifen [Verständnisfrage]
@xSkuLL KiiDx
Nun ja, für einen der es verstanden hat, ist es eigentlich ganz simpel. Bei der einen Schleife ist die Abfrage oben, bei der anderen unten. Bei der einen wird zuerst abgefragt, erst dann die Anweisung ausgeführt, bei der anderen wird zuerst die Anweisung ausgeführt und dann geprüft ob sie wiederholt werden soll. Kennst du GoTo? Verwendet man heute nicht mehr, weil man alles eigentlich auch anders lösen kann. Aber vielleicht kann man es nutzen um Schleifen zu erklären. Denn letztendlich kann man mit GoTo und If Then sowohl While do, wie auch Repeat Until nachbauen: Mit GoTo kann man irgendwo hin springen. Dazu muss man zuerst eine Sprungmarke setzten. Das macht man mit Label.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
label Sprungmarke; var i: Integer; begin ShowMessage('Beispiel mit While do'); i := 0; while i < 3 do begin ShowMessage('Der Wert ist: ' + IntToStr(i)); i := i + 1; end; ShowMessage('Beispiel mit GoTo'); i := 0; Sprungmarke: if i < 3 then begin ShowMessage('Der Wert ist: ' + IntToStr(i)); i := i + 1; GoTo Sprungmarke; end; end;
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
label Sprungmarke; var i: Integer; begin ShowMessage('Beispiel mit repeat until'); i := 0; repeat ShowMessage('Der Wert ist: ' + IntToStr(i)); i := i + 1; until i > 3; ShowMessage('Beispiel mit GoTo'); i := 0; Sprungmarke: i := i + 1; ShowMessage('Der Wert ist: ' + IntToStr(i)); if i < 3 then GoTo Sprungmarke; end; |
AW: Kopf- und Fußgesteuerte Schleifen [Verständnisfrage]
Zitat:
Gruß K-H |
AW: Kopf- und Fußgesteuerte Schleifen [Verständnisfrage]
Und ich dachte, das hätte ich in
![]() |
AW: Kopf- und Fußgesteuerte Schleifen [Verständnisfrage]
Du mußt Verständnis für einen leicht beschränkten alten Sack haben, ich habe mich nie so recht mit den korrekten aber teilweise sehr abstrakten Formulierungen anfreunden können.
Alleine bei Kopf-Gesteuert fällt mir eher Headbanging und Kopfbahnhof ein als while irgendwas do wasüberflüssiges. :-) Gruß K-H |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:19 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz