Einfache Beispielaufgaben zu MSW-Logo
Quadrat 2
Dreieck 1
Dreieck 2
Treppe 1
Treppe 2
Treppe 3
Treppe 3b
Summe 1
Strasse
Haus
Randomstreet
Kette
Neue Puzzle-Übungen: Dreieck1
Dreieck2
Quadrate1
Stollen
Eine ganz wichtige Übung besteht darin, zu den Zeichnungen das jeweilige Programm selbst mit MSW-Logo zu entwickeln.
Erst wenn es gar nicht klappt, sollte man die Lösung studieren und es erneut versuchen.
Ebenso nützlich kann es sein, wenn man die angegebene Lösung in der Weise nachvollzieht, dass man eine entsprechende Zeichnung von Hand erstellt.
In der Kursarbeit steht auch kein Rechner zur Verfügung. Ohne eine solche Zeichnung kann man dann relativ leicht "den Faden verlieren".
Einfache Logo-Befehle (Grafik)
fd 100 | Igel geht um 100 Pixel vorwärts (fd=forward) |
rt 90 | Igel dreht sich nach rechts um 90° (rt=right) |
lt 120 | Igel dreht sich nach links um 120° (lt=left) |
pu | Stift hoch d.h. Igel hinterlässt nun keine Spur (pu=penup) |
pd | Stift runter d.h. Igel hinterlässt wieder eine Spur (pd=pendown) |
Globale Variablen
Beim Aufruf von Prozeduren können lokale Variablen eingesetzt werden, um Werte an die Prozedur zu übergeben wie z.B. bei quadrat :a .
Beim Aufruf quadrat 100 gsd1 :a besitzt die innerhalb von quadrat benutzte Variable :a den Wert 100. Bei gsd1 :a also außerhalb von quadrat ist diese Variable aber schon nicht mehr gültig.
Innerhalb von Prozeduren kann durch die Anweisung make "neu 5 eine weitere Variable neu definiert werden, die hier z.B. den Wert 5 bekommt.
Solche Variablen heißen globale Variablen, weil sie auch außerhalb (insbesondere auch "oberhalb") der Prozedur gültig bleiben und ihren Wert behalten.
Zufallszahlen
Würfelt man mit einem Würfel, so erhält man bei jedem Wurf eine Zahl zwischen 1 und 6.
Welches die nächste Zahl sein wird, ist vom "Zufall" abhängig.
Würfelt man sehr oft und zählt die Ergebnisse, so kommt jede der Zahlen etwa gleich oft vor.
Bei einem Würfel kommt also bei insgesamt z.B. 6000 Würfen jede der Zahlen von 1 bis 6 etwa 1000-mal vor.
In Logo gibt es dafür die Funktion random :n .
:n muss einen ganzzahligen Wert größer als 1 haben.
Mit random 3 bekommt man z.B. einen der Zahlenwerte 0, 1, 2 zurück.
Mit make "z random 6 make "z :z+1 erhält man in :z z.B. die Zahlen von 1 bis 6 wie bei einem Würfel.
Befehle zur Steuerung des Programmablaufs (Ifelse - Verzweigung)
Der Programmablauf kann durch bestimmte Ergebnisse gesteuert werden.
Der Igel kann z.B. immer um 30 Pixel vorwärtsgehen und dann vom Zufall gesteuert ("Münzwurf" - random 2) entweder nach links oder nach rechts gehen.
Dieser alternative Ablauf lässt sich z.B. so realisieren
repeat 50 [fd 30 make "z random 2 ifelse :z=0 [left 65] [right 65] ] Allgemein:
ifelse BEDINGUNG [ ANWEISUNG(EN) für den Fall, dass die Bedingung erfüllt ist ] [ ANWEISUNG(EN) für den Fall, dass die Bedingung nicht erfüllt ist ]
Bedingungen sind z.B. :a = :b oder :a < :b oder :a > :b (:a und :b müssen natürlich mit Werten belegt sein).