In der Zeit, als Ihr Großvater noch hinter Ihrer Großmutter her war, lauschten die Menschen statt Sweety-Klingeltönen gerne deutschen Volksliedern. Um hier einen möglichen Trend nicht zu verschlafen, beschäftigen Sie sich gerade intensiv mit diesem Liedgut. Das Lied ``Der Mai ist gekommen'' (Lyra / Geibel) findet dabei Ihre besondere Aufmerksamkeit, denn im Text heißt es:
Als kühle(r) Naturwissenschaftler(in) stellen Sie sich nämlich sogleich die Frage, wie die Bäume ausschlagen. Und von dieser Frage ist es dann nicht mehr weit zur Informatik, denn der Biologe Aristid Lindenmayer hat eine mathematische Theorie entwickelt (Lindenmayer-Systeme), mit der sich die Entwicklung von Pflanzen bzw. Bäumen simulieren lässt.
Konstruiert wird dieser Baum nach der im folgenden beschriebenen rekursiven Vorschrift. Rekursiv bedeutet hier, daß für die Konstruktion eines Astes wieder die Konstruktionsvorschrift verwendet wird, und für dessen Äste ebenfalls - solange, bis die momentane Rekursionsebene der gewünschten maximalen Rekursionstiefe entspricht.
Die Stengel (also alles bis auf das Ende eines Astes) sollen bei jedem Schritt ihre Größe verdoppeln!
Nachstehend sind die enstehenden Bäume für die maximalen Rekursionstiefen 1 bis 4 zu sehen (der Baum auf der ersten Seite hat die maximale Rekursionstiefe 5).
Tiefe 1: Tiefe 2: Tiefe 3: Tiefe 4:
Schreiben Sie ein Oberon-Programm, das unter Verwendung der vorstehenden Konstruktionsvorschrift einen Baum zeichnet. Die zu verwendende maximale Rekursionstiefe muß dabei als Argument angegeben werden, der zu verwendende Winkel kann als Argument angegeben werden (sonst wird ein Default-Winkel verwendet). Desweiteren sollte mit der Option ``-o'' die Ausgabe in eine plot(5)-Datei möglich sein; die Voreinstellung ist die Ausgabe auf dem Bildschirm.
Usage: Trees [-a angle] [-o outfile] level
Die nachstehenden Abbildungen resultieren ebenfalls aus einer rekursiven Konstruktionsvorschrift und zeigen die Rekursionstiefen 1 bis 6:
mmo -c makefile +l plot +l x11
ssh -X IhrLogin@theseus.mathematik.uni-ulm.de(natürlich gilt dies für alle anderen Rechnernamen ebenso!)