Situation
RD1 soll von C,1 genau 8 Schritte vor gehen. Die
Primitivlösung dafür wäre, 8 mal 'Vor' als Sequenz untereinander in eine Prozedur zu
schreiben. Für Aktionen, die öfter wiederholt werden sollen, gibt es
praktische verschiedene Sprachkonstrukte: Schleifen.
1.
Wiederholung mit Zählschleife
Anwendung: Wenn vorher zahlenmäßig
feststeht, wie oft wiederholt wird.
|
Allgemein ausgedrückt
|
Übersetzt in die Programmiersprache
|
mit Zähler von 1 bis 8 wiederhole
Vorwärts |
for zaehler := 1 to 8 do
begin
RD1.Vor;
end; |
1. Aufgabe
Schreiben Sie eine neue Prozedur ZumBaum1
a) Deklarieren Sie
procedure ZumBaum1;
b) Schreiben Sie den Code
procedure
TControlFrm.ZumBaum1;
var zaehler : integer; // Zählvariable deklarieren
begin
for zaehler := 1 to 8 do
// bei 1 anfangen und weiterzählen bis 8
begin // was im Block steht, wird wiederholt
RD1.Vor;
end;
end; |
c) Rufen Sie die Prozedur im Testbutton auf.
Starten und testen!
2.
Wiederholung mit selbststeuernder (vorprüfender) Schleife
Situation
RD1 soll solange im Kreis herum laufen wie
die Batterie reicht.
Anwendung: Wenn vorher NICHT feststeht, wie
of wiederholt wird.
Die Aktion wird solange wiederholt, wie die Bedingung erfüllt
ist.
Die Bedingung wird vor der Aktion geprüft, d.h. die Aktion wird
möglicherweise nie ausgeführt.
|
Allgemein ausgedrückt
|
Übersetzt in die Programmiersprache
|
solange Batterie NICHT leer
wiederhole
Vorwärts
Nach links drehen
Vorwärts
Nach links drehen
Vorwärts
Nach links drehen
Vorwärts
Nach links drehen
|
while NOT RD1.BatterieLeer do
begin
RD1.Vor;
NachLinksDrehen;
RD1.Vor;
NachLinksDrehen;
RD1.Vor;
NachLinksDrehen;
RD1.Vor;
NachLinksDrehen;
end; |
2. Aufgabe
Schreiben Sie eine neue Prozedur
ZumBaum2
a) Deklarieren Sie
procedure ZumBaum2;
b) Schreiben Sie den Code
procedure
TControlFrm.ZumBaum2;
//
----------------------------------------------------------
begin
RD1.SetGeschwindigkeit(5);
// etwas mehr Tempo bitte!
while NOT RD1.BatterieLeer
do // Bedingung prüfen,
ob wahr
begin
RD1.Vor;
NachLinksDrehen;
RD1.Vor;
NachLinksDrehen;
RD1.Vor;
NachLinksDrehen;
RD1.Vor;
NachLinksDrehen;
end;
end; |
c) Rufen Sie die Prozedur im Testbutton auf.
Starten und testen!
|