AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Kopf- und Fußgesteuerte Schleifen [Verständnisfrage]
Thema durchsuchen
Ansicht
Themen-Optionen

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

Ein Thema von xSkuLL KiiDx · begonnen am 16. Jan 2013 · letzter Beitrag vom 21. Jan 2013
Antwort Antwort
Seite 2 von 4     12 34      
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.541 Beiträge
 
Delphi 11 Alexandria
 
#11

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

  Alt 16. Jan 2013, 19:50
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?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen

Geändert von DeddyH (16. Jan 2013 um 19:58 Uhr) Grund: Rechtschreibfehler
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#12

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

  Alt 16. Jan 2013, 19:57
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 --
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#13

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

  Alt 16. Jan 2013, 20:11
-deleted-
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#14

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

  Alt 17. Jan 2013, 08:22
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
  Mit Zitat antworten Zitat
xSkuLL KiiDx

Registriert seit: 16. Jan 2013
15 Beiträge
 
#15

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

  Alt 17. Jan 2013, 13:39
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 :/
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#16

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

  Alt 17. Jan 2013, 14:53
@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
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#17

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

  Alt 17. Jan 2013, 14:59
@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;
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#18

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

  Alt 17. Jan 2013, 15:03
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
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.541 Beiträge
 
Delphi 11 Alexandria
 
#19

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

  Alt 17. Jan 2013, 15:12
Und ich dachte, das hätte ich in #11 bereits getan (alles gesagt, meine ich).
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#20

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

  Alt 17. Jan 2013, 15:31
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
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 4     12 34      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:31 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz