AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Elementare Kontrollstrukturen in Delphi

Ein Thema von TheOneAndOnlyDavidEye · begonnen am 17. Feb 2007 · letzter Beitrag vom 20. Feb 2007
Antwort Antwort
Seite 1 von 2  1 2   
TheOneAndOnlyDavidEye

Registriert seit: 17. Feb 2007
7 Beiträge
 
#1

Elementare Kontrollstrukturen in Delphi

  Alt 17. Feb 2007, 23:26
Hallo liebe Delphi Freunde und Anhänger von David Eye.

Ich arbeite gerade an einem Projekt, Turorial bzw einer Wiederholung von Delphi für die schriftliche Abiturprüfung.

Mein Ziel ist es, für das Ober-Thema: "Algorithmen und Datenstrukturen - Mit Übungsbeispielen (Delphi)" zu dem Unterthema
-->"Elementare Kontrollstrukturen - Schleifen"
eine Präsentation zu entwerfen, die im Großen und Ganzen das komplette Thema abdeckt. Ich habe auch schon eine genau Vorstellung wie das aussehen soll.
Meine Frage - Bitte an Euch, Programmiererfreunde, ist jetzt: Könnt ihr mir bei der Erstellung des Aufbaus und der Themen helfen.

<<< Das Ergebnis werde ich Euch natürlich vortragen und zur Verfügung stellen. Ist bestimmt auch für die Allgemeinheit sehr nützlich! >>>

Meine Grobeinteilung, an welcher Ihr Euch bitte orientieren sollt, sieht so aus:

-Abweisende Schleifen (While...Do)
-Nicht-abweisende Schleifen (Repeat...Until)
-Zähler-Schleifen (For...To...Do; For...Downto...Do)


ES IST WIRKLICH ALLES WAS IHR ZU DEM THEMA >>> SCHLEIFEN <<< ZU SAGEN HABT, W I C H T I G ! ! !

Ich bedanke mich schonmal im Voraus für Eure Mitarbeit
und freue mich auf viele Beiträge!
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.919 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Elementare Kontrollstrukturen in Delphi

  Alt 17. Feb 2007, 23:46
Mal von der Abgrenzung der jeweiligen Schleifen zueinander könntest Du ein wenig im tiefen Schmutz wühlen: Relativ harmlose, weil meist schnell gefundene, aber dennoch gern gemachte Fehler bei Repeat- und While-Schleifen: Vergessen, die Abbruch-Bedingung zu setzen (while i < 15 und dann vergessen, i zu erhöhen ...). Richtig dreckig wird es, wenn man globale Variablen nutzt, um die Abbruchbedingung herbeizuführen. Man denke jetzt an eine Variable, die sowohl innerhalb der Schleife genutzt wird, um die Abbruchbedingung zu schaffen ( inc(i), z.B. ) als auch in einer der Routinen, die innerhalb der Schleife abgearbeitet werden - und dort dann für einen gänzlich anderen Zweck.

Was Du in diesen Zusammenhang auch noch streifen könntest wäre die Frage "iterativ vs. rekursiv". In der Theorie lässt sich das eine durch das andere ersetzen, in der Praxis -sprich: am konkreten Beispiel- wird man jedoch üblicherweise gute Gründe für die eine oder andere Variante finden.

Du könntest auch kurz ein Szenario skizzieren, das eintreten würde, wenn es keine Schleifen gäbe. (Lass' den Rechner mal auf die Eingabe eines Nutzers warten ohne Schleifchen). Somit könntest Du - wenn auch mit einem Augenzwinkern - eine Lanze für die Schleifen dieser Welt brechen und ihre Bedeutung ins rechte Licht rücken.
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
TheOneAndOnlyDavidEye

Registriert seit: 17. Feb 2007
7 Beiträge
 
#3

Re: Elementare Kontrollstrukturen in Delphi

  Alt 18. Feb 2007, 00:27
Danke Dir für deinen Beitrag.

Du scheinst ein richtiger Profi in diesem Gebiet zu sein. Das bin ich und sind meine Mitschüler, die das Abitur schreiben aber leider nicht. Du musst mir quasi deinen ganzen Beitrag auf Schüler-Niveau erklären, damit ich verstehe, was du meinst.

Tut mir leid, aber ich verstehe z.B. nicht:
-was du mit rekursiv gegen iterativ meinst
-was das problem ist mit variablen, wenn man global-definierte benutzt

Da wir selbst nie so tief in die Materie einblicken, da wir auch Accsess, PHP-HTML, EXCEL im Abitur schreiben (in den 5 Stunden jeweils Aufgaben aus diesen Bereichen) kann ich auch nicht so viel Details beschreiben, sondern muss immer einen Grundüberblick geben, auf:
-die Synthax
-Regeln
-Anwendungen
-Aufgabenstellung
-Probleme(was du ja schon zum Teil angesprochen hast)
  Mit Zitat antworten Zitat
Daniel
(Co-Admin)

Registriert seit: 30. Mai 2002
Ort: Hamburg
13.919 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Elementare Kontrollstrukturen in Delphi

  Alt 18. Feb 2007, 00:39
Ich bin kein Delphi-Profi, ich erwecke bestenfalls hin und wieder den Anschein, einer zu sein.


Das mit den globalen Variablen wäre ein krasses Negativ-Beispiel geworden. Wenn Ihr aber nicht so tief einsteigt, solltest Du vielleicht anderen Dingen den Vorzug lassen und Dich auf die typischen, auch für Neulinge nachvollziehbaren, Anwendungsfälle dieser Schleifen konzentrieren. Die Problematiken, die sich aus globalen Variablen ergeben können wenn man nicht Acht gibt, könnten ein eigenes Referat füllen.

Dann zu Deiner zweiten Frage: Als "rekursiv" werden Programmteile bezeichnet, die sich selbst wieder aufrufen und damit auch eine Form von Schleife erzeugen. Diese daraus entstehenden Schleifen haben verschiedene Eigenschaften wie zum Beispiel einen gewissen, "speziellen" Verbrauch des Speichers. Wenn allerdings niemand in Eurer Klasse so recht weiß, was ein Stack/Callstack ist und was dort prinzipiell passiert, dann ist es vermutlich wenig sinnvoll, dieses Thema "mal eben so" anzureißen.


Wie lang soll das Ganze denn werden? Zu den Schleifen an sich würd' mir jetzt nicht so viel einfallen, ich glaube, da wäre ich nach wenigen Minuten durch.
Daniel R. Wolf
mit Grüßen aus Hamburg
  Mit Zitat antworten Zitat
Benutzerbild von Hador
Hador

Registriert seit: 11. Dez 2004
Ort: Recke
682 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Elementare Kontrollstrukturen in Delphi

  Alt 18. Feb 2007, 00:55
Zitat von TheOneAndOnlyDavidEye:
-was du mit rekursiv gegen iterativ meinst
Siehe Wikipedia Iterativ Rekursiv

Zitat von TheOneAndOnlyDavidEye:
-was das problem ist mit variablen, wenn man global-definierte benutzt
Stell dir einfach mal vor, du hast eine globale Variable i vom Typ Integer. Diese benutzt du irgendwo für eine Schleife als Zählvariable. Irgendwann später brauchst du dann in einer anderen Methode auch eine Integer-Variable und denkst dir toll ich hab ja schon eine. Nimmst die und wenn du Pech hast, schaffst du dir damit eine Endlosschleife, da du evtl. den Wert der Zählervariable nun gleichzeitig irgendwo anders veränderst. Es gibt noch hunderte ähnluiche Szenarien wo soetwas Probleme geben kann. Daher gilt eigentlich immer: So global wie nötig, so lokal wie möglich.

EDIT: Roter Kasten
Lars Kiesow
http://www.larskiesow.de

Computer gehorchen deinen Befehlen, nicht deinen Absichten.
  Mit Zitat antworten Zitat
Benutzerbild von HeikoAdams
HeikoAdams

Registriert seit: 12. Jul 2004
Ort: Oberfranken
661 Beiträge
 
FreePascal / Lazarus
 
#6

Re: Elementare Kontrollstrukturen in Delphi

  Alt 18. Feb 2007, 02:52
Ich würde auch kurz darstellen, in welchen Fällen es sinnvoll ist, Kopfgesteuerte Schleifen (While, For) zu nutzen und wann es sinnvoll ist, Fußgesteuerte Schleifen (Repeat) zu verwenden. Es sind schon einigen Programmierern graue Haare gewachsen, nur weil sie zuerst den falschen Schleifentyp verwendet haben
Aber vorsichtig, das kann leicht zu einer (unnötigen) Grundsatzdiskussion ausarten.
Jeder kann ein Held werden und Leben retten!
Einfach beim NKR oder der DKMS als Stammzellenspender registrieren! Also: worauf wartest Du noch?
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#7

Re: Elementare Kontrollstrukturen in Delphi

  Alt 18. Feb 2007, 06:06
Die while- und repeat-Schleifen von Pascal sind genau wie in den anderen Programmiersprachen. Interessant ist ein Vergleich der for-Schleifen von Pascal und C. C hat naemlich gar keine for-Schleife. Das was es hat ist vollstaendig ueber die while-Schleife definiert. In Pascal is die for-Schleife wirklich ein eigenes Konstrukt das z. B. die untere und obere Grenze nur einmal auswertet.
  Mit Zitat antworten Zitat
TheOneAndOnlyDavidEye

Registriert seit: 17. Feb 2007
7 Beiträge
 
#8

Re: Elementare Kontrollstrukturen in Delphi

  Alt 18. Feb 2007, 17:15
Zusammenfassung zum Thema "Schleifen":

Es gibt verschiedene Arten von Schleifen, die sind u.a.
-zählgesteuerte Schleife (Zählerschleife)
-kopfgesteuerte Schleife (abweisende Schleife)
-fußgesteuerte Schleife (nicht-abweisende Schleife)

Begriffsklärung:

Schleifen sind Anweisungen, die innerhalb eines Programmablaufs mehrfach ausgeführt werden können. Dadurch vermeidet man die mehrfache Aufnahme von identischen Anweisungen und kann zur Laufzeit bestimmen, wie oft diese Anweisungen ausgeführt werden sollen.

1. Die zählgesteuerte Schleife:

Anwendung:
Sie wird angewandt, wenn die Anzahl der Wiederholungen(Schleifendurchläufe) von vorneherein(z.B. durch Eingabe) feststeht oder vom Computer berechnet werden kann.

Synthax:
FUER Zaehvariable = Anfangswert BIS Endwert WIEDERHOLE Anweisung
-->
For i:=1 To 10 Do
begin
anweisung1;
anweisung2;
...;
end;

oder

For i:=10 Downto 1 Do
begin
anweisung1;
anweisung2;
...;
end;

Hinweise:


-Die Zaehlvariable wird bei jedem Schleifendurchlauf vom Anfangswert zum Endwert um 1 erhöht. (Es gibt auch die Möglichkeit, die Zaehlvariable um 1 zu vermindern)
-Die Zaehlvariable darf nur innerhalb der Zählerschleife benutzt werden und hat nach der Schleife keinen Wert


2. Die kopfgesteuerte Schleife:

Anwendung:
Sie wird angewandt, wenn die Anzahl der Wiederholungen von vorneherein nicht feststeht, sondern sich erst während der Ausführung des Wiederholungsteils ergibt.

Synthax:

SOLANGE Bedingung WIEDERHOLE Anweisung
-->
While A > 0 Do zaehler:=zaehler+1;

Hinweise:
-ist eine Schleife mit Abbruchbedingung am Anfang
-bei ihr wird am Anfang des Schleifenkörpers abgefragt, ob die Schleife ausgeführt werden soll (=abweisende Schleife)


3. Die fußgesteuerte Schleife:

Anwendung:
Sie wird ebenfalls angewandt, wenn die Anzahl der Wiederholungen von vorneherein nicht feststeht, sondern sich erst während der Ausführung des Wiederholungsteils ergibt.

Synthax:
WIEDERHOLE Anweisung BIS Bedingung
-->
Repeat R:=R+1 Until R<1;

Hinweise:
-ist eine Schleife mit Abbruchbedingung am Ende
-bei ihr wird am Ende des Schleifenkörpers abgefragt, ob die Schleife noch mal ausgeführt werden soll(=nicht-abweisende Schleife)
-jede fußgesteuerte Schleife kann durch eine kopfgesteuerte Schleife ersetzt werden(aber nicht umgekehrt!)
-im Gegensatz zur kopfgesteuerten Schleife wird die fußgesteuerte Schleife mindestens einmal durchlaufen

--> Die Abfrage ist bei der fuß- und der kopfgesteuerten Schleife genau umgekehrt:
-fußgesteuerte: Wiederhole ... bis die Note gleich 6
-kopfgesteuerte: Solange die Note ungleich 6 wiederhole...


Wahl des richtigen Schleifentyps:

-Nutzen Sie die Zählerschleife, wenn Sie wissen, wie oft die Schleife auszuführen ist
-Wählen Sie die kopfgesteuerte Schleife, wenn die Schleife unter Umständen gar nicht ausgeführt werden muss und Sie nicht wissen, wie oft sie ausgeführt werden soll
-Verwenden Sie die fußgesteuerte Schleife, wenn die Schleife mindestens eimal auszuführen ist und Sie nicht wissen, wie oft sie ausgeführt werden soll
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#9

Re: Elementare Kontrollstrukturen in Delphi

  Alt 18. Feb 2007, 18:12
Sieht schon ganz gut aus. Trotzdem Kritik (eher Anregungen) : bei Downto würde ich noch einen Satz dazuschreiben. Einer, der noch nie was von Schleifen gehört hat, dem müsste man etwas mehr helfen. Auf Anhieb ist das nicht klar, bzw. selbsterklärend. Dann würde ich noch einen weiteren Satz formulieren, wegen der bedingten Gleichheit von While und Repeat. Würde ein Beispiel bringen mit IF und letztenendes selbem Ergebnis.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#10

Re: Elementare Kontrollstrukturen in Delphi

  Alt 18. Feb 2007, 18:15
Interessant ist auch, was mit der Schleifenvariablen ist, wenn die Schleife per Break; abgebrochen wird.
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 09:46 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