![]() |
Elementare Kontrollstrukturen in Delphi
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! :cheers: |
Re: Elementare Kontrollstrukturen in Delphi
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. |
Re: Elementare Kontrollstrukturen in Delphi
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) |
Re: Elementare Kontrollstrukturen in Delphi
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. |
Re: Elementare Kontrollstrukturen in Delphi
Zitat:
![]() ![]() Zitat:
EDIT: Roter Kasten :gruebel: |
Re: Elementare Kontrollstrukturen in Delphi
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 :wink:
Aber vorsichtig, das kann leicht zu einer (unnötigen) Grundsatzdiskussion ausarten. |
Re: Elementare Kontrollstrukturen in Delphi
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.
|
Re: Elementare Kontrollstrukturen in Delphi
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 |
Re: Elementare Kontrollstrukturen in Delphi
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.
|
Re: Elementare Kontrollstrukturen in Delphi
Interessant ist auch, was mit der Schleifenvariablen ist, wenn die Schleife per Break; abgebrochen wird.
|
Re: Elementare Kontrollstrukturen in Delphi
Da hat Nikolas Recht. Zum Break gesellt sich allerdings dann noch Exit. Allerdings : wie weit soll man da jetzt gehen ? Daniels Anmerkung ist auch nur relativ zu sehen. Also das mit den globalen Variablen. Das wird von Delphi teilweise schon abgefangen :
Zitat:
|
Re: Elementare Kontrollstrukturen in Delphi
Zitat:
|
Re: Elementare Kontrollstrukturen in Delphi
vielen dank für Eure rege Anteilnahme.
Ich bin immer offen für Kritik und nehme alle Vorschläge gerne an. Nur solltet ihr mir bitte nicht sagen, was ich tun sollte...ich möchte ja, dass ihr an diesem Projekt MITarbeitet. nehmt euch ruhig einen punkt raus...einen quote...und schreibt dann dazu etwas, also auch schon formuliert. somit sollte dann am ende ein "werk" entstanden sein, wo jeder mit zufrieden ist, jeder seinen senf dazugegeben hat und man dies dann auch als "Lehrmittel" benutzen kann ;) Schließlich soll diese Zusammenfassung dazu dienen, dass man auch wirklich über das Thema "Schleifen" bescheid weiß, wenn man es sich durchgelesen hat...und wenn man mal Fragen hat, bzw Probleme nimmt man einfach diese Zusammenfassung zur Hand und kann damit arbeiten. Ich beschäftige mich gerade damit, Übungsaufgaben zu lösen...damit ich auch richtig in die MAterie reinkomm. Habe nämlich vor einem Jahr das letzte mal Delphi benutzt. Danach wurde mein Können mit php und html beschmutzt :P |
Re: Elementare Kontrollstrukturen in Delphi
ok...hier mal eine zusammenfassung...das meiste hast du ja schon:
Schleifen: :arrow: Beeinflussen den Programmablauf :arrow: Sparen Programmiercode (zB du musst eine Anweisung 1000 mal ausführen... enteder du schreibst 1000 mal das gleiche hin oder du löst das in 2 Zeilen mit ner schleife). :arrow: Es gibt 3 Arten von Schleifen: 1) For-Schleife: - wird verwendet wenn mann von vorneherein weiß wie oft die Schleife wiederholt werden soll. - Aufbau: For Laufvariable := Startausdruck TO Endausdruck DO Anweidung(en); - Eine ordinale Laufvariable, ein Startausdruck und ein Endausdruck wird benötigt - bei jedem Durchgang wird die Laufvariable um eins erhöt - Laufvariable kann (muss aber nicht) in den Anweisungen verwendet werden (kann allerdings nicht verändert werden) - Wenn mehrere Anweisungen ausgeführt werden sollen müssen diese in einem Anweisungsblock zusammenganommen werden (begin...end) - Wenn der Startausdruck kleiner als der Endausdruck ist wird die schleife überhaupt nicht ausgeführt - Wenn statt dem Schlüsselwort DO das Schlüsselwort DOWNTO steht wird der Wert der Luafwariablen bei jedem Durchgang um eins veringert - Da Char-Variablen ordinal sind können auch diese als Laufvariable verwebdet werden:
Delphi-Quellcode:
- Ab Delphi 2005: Vereinfachte For-Schleife: For...in:
var c: char
for c := 'a' to 'f' do showmessage(c);
Delphi-Quellcode:
2) Repeat-Schleife:
var s: String; c: char;
s := 'ABCDEF'; for c in s do showmessage(c); - Flexible Schleife - Aufbau:
Delphi-Quellcode:
- Umgangssprachliche Übersetzung: Wiederhole .. Bis ..
REPEAT [i]Anweisung(en);[/i] UNTIL [i]Boolescher-Ausdruck[/i];
- Solange der Boolesche Ausdruck False ist wird die Schleife ausgeführt - Oder andersrum gesagt: Die Schleife wird so lange ausgeführt bis der Boolesche Ausdruck True ist - Wenn mehrere Anweisungen ausgeführt werden sollen ist es nicht notwendig diese in begin..end einzufassen - Es gibt keinen Schleifen-Zähler (Laufvariable) - Der Boolesche Ausdruck wird erst am Schluss überprüft... d.h. die Schleife wird mindestens einmal ausgeführt und erst am Schluss entschieden ob sie noch einmal ausgeführt werden soll 3) While-Schleife: - Auch Flexibel - Aufbau:
Delphi-Quellcode:
- Umgangssprachliche Übersetzung: Solange .. tue ..
WHILE [i]Boolescher-Ausdruck[/i] DO [i]Anweisung(en)[/i];
- Solange der Boolesche Ausdruck True ist wird die Schleife ausgeführt - Wenn er False ist wird die Schleife nicht mehr ausgeführt - Begingung wird am Anfang der Schleife überprüft.. es kann also sein das die Schleife überhaupt nicht ausgeführt wird - Mehrere Anweisungen in der Schleife müssen mit begin..end zusammengefasst werden :arrow: Eine Schleife die nie abgebrochen wird nennt man Endlosschleife :arrow: 2 weitere Kontrollfunktionen für eine Schleife: Break und Continue: - lassen sich in allen 3 Schleifenarten einsetzen - beenden vorzeitig den schleifendurchlauf - break: bricht die komplette schleife ab - continue: bricht nur den aktuellen Durchlauf ab und macht beim nächsten weiter |
Re: Elementare Kontrollstrukturen in Delphi
ah danke.
kannst du mir das mit dem booleschem ausdruck und der break-continue sache mal an einem beispiel zeigen? ich versteh nicht so recht, wie das dann mit den variablen funktioniert, weil die ja als typ, boolean bekommen müssen oder so und außerdem bei break und continue...was es da mit auf sich hat?! |
Re: Elementare Kontrollstrukturen in Delphi
Zitat:
|
Re: Elementare Kontrollstrukturen in Delphi
danke für den tipp. ich blick nur leider nicht durch, wo ich jetzt nach was suchen muss. borland hp? delphi hp?
sorry, aber bist du bitte so nett und sagst mir den link etc wo ich das finde, was mir weiterhilft? ich hab heut wohl zu lange an delphi gehockt...mir raucht der schädel und ich mach jez auch ma schluss. |
Re: Elementare Kontrollstrukturen in Delphi
Zitat:
|
Re: Elementare Kontrollstrukturen in Delphi
Als kleines Schmakerl vielleicht noch:
![]() |
Re: Elementare Kontrollstrukturen in Delphi
danke michael.
du hast wirklich ahnung, nur leider überteigt das die kompetenzen von mir und meinen mitschülern :D aber ich werde wohl erwähnen, dass die for to do schleife auch rückwärts läuft, selbst wenn kein for..DOWNto gesetzt wurde...ist das richtig? wie formuliere ich da am besten einen satz draus-mit einer erklärung, die nicht so viel von codes oder sowas erwähnt, weil wir davon keine ahnung haben? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:42 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