is-Logo Karel D. Robot
Wiederholungen - Automatische Robotersteuerung

S. Spolwig
2.4

[ Karel ]
Startseite

Ziele:
Schleifen (Iterationen) als Konstrukt für Aktionen, die mehrfach wiederholt werden.

Informationen
zur Vertiefung


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!

 

 

 

 

Algorithmen II

 

©  05. Oktober 2008    Siegfried Spolwig

page_top next page