Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Kopf- und Fußgesteuerte Schleifen [Verständnisfrage] (https://www.delphipraxis.net/172671-kopf-und-fussgesteuerte-schleifen-%5Bverstaendnisfrage%5D.html)

DeddyH 16. Jan 2013 19:50

AW: Kopf- und Fußgesteuerte Schleifen [Verständnisfrage]
 
OK, dann noch ein paar Details. Zum Thema Struktogramm: http://de.wikipedia.org/wiki/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?

Sir Rufo 16. Jan 2013 19:57

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:
// Start
Wert := 8;
while Wert < 10 do
begin
  Wert := Wert + 1;
end;
// Ende
wird dann zu (es werden immer nur die Veränderungen eingetragen, dadurch sieht man, was sich wo ändert)
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 --

Medium 16. Jan 2013 20:11

AW: Kopf- und Fußgesteuerte Schleifen [Verständnisfrage]
 
-deleted-

Popov 17. Jan 2013 08:22

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:
while Cola-In-Der-Dose do
begin
  Ein-Schluck-Trinken;
end;
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.

Jetzt ein Beispiel für die Fußgesteuerte repeat until Schleife:

Delphi-Quellcode:
repeat
  Fleißig-Arbeiten
until Uhrzeit >= 16:30 Uhr;
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.

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 ;)

xSkuLL KiiDx 17. Jan 2013 13:39

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 :/

p80286 17. Jan 2013 14:53

AW: Kopf- und Fußgesteuerte Schleifen [Verständnisfrage]
 
Zitat:

Zitat von xSkuLL KiiDx (Beitrag 1199432)
@Sir Rufo: das hab ich nicht ganz verstanden ^^ also bei den Codes versteh ich noch net so viel :/

was daran ist denn unverständlich?

Gruß
K-H

Popov 17. Jan 2013 14:59

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;

p80286 17. Jan 2013 15:03

AW: Kopf- und Fußgesteuerte Schleifen [Verständnisfrage]
 
Zitat:

Zitat von Popov (Beitrag 1199367)
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

Über die sprachliche Ausgestaltung kann geteilter Meinung sein, aber eigentlich ist damit alles gesagt.

Gruß
K-H

DeddyH 17. Jan 2013 15:12

AW: Kopf- und Fußgesteuerte Schleifen [Verständnisfrage]
 
Und ich dachte, das hätte ich in #11 bereits getan (alles gesagt, meine ich).

p80286 17. Jan 2013 15:31

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.
Seite 2 von 4     12 34      

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