is-Logo

Karel D. Robot
Workshop - Aufgabenblatt 2

S. Spolwig
Chr. Steinbrucker

[ Startseite ]

Aufgabe 5 b  - Rekursion - Lösung
 

Fügen Sie der Klasse TMyRobot eine Methode UmDieSperre hinzu, die Robby von A nach B fahren läßt.

procedure TMyRobot.UmDieSperre_rekursiv;
Var SpaltenAnzahl: Integer;
begin
  SpaltenAnzahl := 0;
  ZuDerSperre_rekursiv (SpaltenAnzahl);
  RechtsDrehen;
  RechtsDrehen;
  RechtsDrehen;

  UmgeheDieSperre;

  RechtsDrehen;
  RechtsDrehen;
  RechtsDrehen;
  VonDerSperreWeg_rekursiv (SpaltenAnzahl);
end;

procedure TMyRobot.UmgeheDieSperre;
begin
  If RechtsFrei
    Then
      Begin
        RechtsDrehen;
        Vor;
        Vor;
        RechtsDrehen;
      End
    Else
      Begin
        Vor;
        UmgeheDieSperre;     // hier ist der Selbstaufruf
        Vor;
      End;
end;

procedure TMyRobot.UmDieSperre_iterativ;
Var SpaltenAnzahl,
    ZeilenAnzahl : Integer;
begin
  ZuDerSperre_iterativ (SpaltenAnzahl);
  RechtsDrehen;
  RechtsDrehen;
  RechtsDrehen;

  UmgeheDieSperre;

  RechtsDrehen;
  RechtsDrehen;
  RechtsDrehen;
  VonDerSperreWeg_iterativ (SpaltenAnzahl);
end;

procedure TMyRobot.ZuDerSperre_rekursiv(var Anzahl: Integer);
begin
   If VorneFrei
     Then
       Begin
         Anzahl := Anzahl + 1;
         Vor;
         ZuDerSperre_rekursiv(Anzahl);
       End;
end;

procedure TMyRobot.VonDerSperreWeg_rekursiv(var Anzahl: Integer);
begin
  If (Anzahl > 0)
    Then
       Begin
         Vor;
         Anzahl := Anzahl - 1;
         VonDerSperreWeg_rekursiv(Anzahl)
       End;
end;

procedure TControlFrm.Aufgabe3IterativSpeedButtonClick(Sender: TObject);
begin
  RD1.UmDieSperre_rekursiv;
end;


 23. Feb. 06   GI-FIBBB  HU Berlin        Christian Steinbrucker u. T. Kreichauf