2.9.5 Four Cool Cats (eine weitere Übung)
 
Eine kleine Übung In der MNU-Zeitschrift (Zeitschrift: Der mathematisch naturwissenschaftliche Unterricht Jahrgang 56 2003 Heft 8) findet sich unter der Ruprik  „Zu guter Letzt – alte und neue Fragen“ ein Aufgabe von F. K. Schmidt:

Auf den Ecken eines Quadrats sitzt je eine Katze. Alle laufen gleichzeitig mit gleicher Geschwindigkeit los. Jede hält dabei direkt und permanent auf die links von ihr laufende Katze zu. Wo treffen die Tiere zusammen und welche Länge hat die Bewegungslinie?

Mathematisch können und wollen wir auch nicht diese Aufgabe lösen. 'Experimentell' sollte es kein großes Problem sein diese Aufgabe zu lösen.
 
Lösung Da die Katzen über die gleiche Funktionaliät verfügen wie sie unsere Turtle hat, liegt es nahe, die Katzen als Objekte der Turtle zu modellieren. Nennen wir sie Mimi, Tiger, Morle und Pavarotti. Ihre Erzeugen, ihr Aufstellen im Quadrat und ihre Färbung zur besseren Unterscheidung organisieren wir alles im Konstruktor:
public FourCoolCats(String title) {
   super(title);

   mimi = new Turtle(tWin);
   mimi.jumpTo(-100,100); //Mimi sitzt links oben
   mimi.setColor(Color.MAGENTA);
   mimi.writeTo("Mimi",-120,110);

   tiger = new Turtle(tWin);
   tiger.jumpTo(100,100); //Tiger sitzt rechts oben
   tiger.setColor(Color.RED);
   tiger.writeTo("Tiger",80,110);
   morle = new Turtle(tWin);
   morle.jumpTo(100,-100); //Morle sitzt rechts unten
   morle.setColor(Color.BLACK);
   morle.writeTo("Morle",80,-120);

   pavarotti = new Turtle(tWin);
   pavarotti.jumpTo(-100,-100); //pavarotti links unten
   pavarotti.setColor(Color.BLUE);
   pavarotti.writeTo("Pavarotti",-120,-120);
        
   //Damit sind die Katzen im Uhrzeigersinn aufgestellt.
   //     Mimi           Tiger
   //     pavarotti      Morle
}
  Mit Hilfe der Methode writeTo(String text, double x, double y): void platzieren wir zur weiteren Kennzeichnung die Namen der Katzen an deren Startpositionen.
 
Download:
FourCoolCats. java
public void zeichne() {

   mimi.turnTo(tiger.getX(),tiger.getY());
   mimi.forward(1);

   tiger.turnTo(morle.getX(),morle.getY());
   tiger.forward(1);

   morle.turnTo(pavarotti.getX(),pavarotti.getY());
   morle.forward(1);

   pavarotti.turnTo(mimi.getX(),mimi.getY());
   pavarotti.forward(1);
}

Wir müssen eine Schrittweite 1 wählen um die Bedingung, dass die Katzen gleichzeitig laufen einigermaßen einhalten zu können. Die Bedingung ist nämlich hinreichend erfüllt, wenn während eines Schritts sich die Positionen der Katzen kaum ändern. Das Vorgehen hat allerdings den Nachteil, dass wir ca. 200 mal auf den Zeichne! - Schalter klicken müssen, um das neben stehende Bild zu bekommen. Wie wir das häufige Klicken ersparen können, lernen wir in dem nachfolgenden Kapiteln. Dort wird es Übungen geben, in denen wir unser Modell für die Lösung der Aufgabe modifizieren.
 

Bemerkung Das Mathematische Modell zu dieser Aufgabe unterscheidet sich zu unserem. Es liefert vier Wege für die Katzen, die aus unendlich vielen Schritten bestehen. Trotzdem konvergieren sie (treffen sich) und die Gesamtlängen der 4 Wege haben einen endlichen Wert. Das Paradoxon ist vergleichbar mit dem Rennen zwischen Achilles und der Schildkröte.
Mit dem Programm lässt es sich prächtig weiter spielen. Was passiert, wenn man den Katzen unterschiedliche Geschwindigkeiten gibt?
   
zu 3 Ablaufsteuerung am Beispiel der Turtle
3.1 Schleifen
3.1.1 Die for-Schleife
zur Startseite www.pohlig.de  (C) MPohlig 2006