Logo (Programmiersprache)

aus Wikipedia, der freien Enzyklopädie

Wechseln zu: Navigation, Suche

Die funktionale Programmiersprache Logo ist eine von Seymour Papert entwickelte Sprache aus den 60er Jahren. Als Interpretersprache galt Logo als leicht zu erlernen, hatte aber eine für die Zeit der Heimcomputer, als diese Sprache die größte Verbreitung fand, sehr hohe Leistungsfähigkeit, dank der dynamischen Listen aus Lisp, frei definierbaren und rekursiv aufrufbaren Funktionen und einiger anderer Elemente. Trotzdem konnte die Programmiersprache sich nicht gegenüber anderen ersten "Anfängerprogrammiersprachen" wie z. B. BASIC durchsetzen, was auch daran lag, dass sie kindgerecht entwickelt und daher von vielen unterschätzt wurde.

Für die damalige Zeit sehr fortschrittliche Elemente wie z. B. eine dynamische Datentyperkennung sorgten auch für Geschwindigkeitsnachteile. Außerdem widersprach die Philosophie der Programmiersprache den damals aufkommenden Gedanken der strukturierten Programmierung: Schleifen sind normalerweise nur über Rekursion oder in Listen eingebettete Programmteile realisierbar. Rekursion galt oftmals als schwer lesbar und beansprucht sehr viel Speicher und Rechenzeit. Ein in Daten eingebetteter und damit zur Laufzeit veränderlicher Code galt als Rezept für unvorhersagbare Programmeigenschaften und in Multiuser-Umgebungen (damit auch in Netzwerken) als Sicherheitsproblem.

In modernen Programmiersprachen wie Logowriter oder Lingo beispielsweise finden sich die Möglichkeiten dieser Programmiersprache allerdings wieder – teilweise in Form von Objekten.

Inhaltsverzeichnis

[Bearbeiten] Turtlegraphics-Befehlssatz

Ihre bekannteste Besonderheit ist Turtlegraphics, bei der sich eine oder mehrere virtuelle Schildkröten über den Bildschirm bewegen lassen, die bei Bedarf eine farbige Linie hinter sich herziehen. Mit diesen Linien kann dann eine Zeichnung erstellt werden.

Die wichtigsten Turtlegraphics-Befehle in LOGO
Befehl Kurzform Beschreibung
textscreen ts Text-Modus
fullscreen fs Graphik-Modus
home Die Schildkröte bewegt sich zur Mitte des Bildschirms mit Ausrichtung nach oben (0°)
clean Der Bildschirm wird gelöscht, die Position der Schildkröte ändert sich nicht
cleanscreen cs home und clean zusammen
hideturtle ht Die Schildkröte wird unsichtbar
showturtle st Die Schildkröte wird sichtbar
setpencolor farbewert setpc farbwert Der Schildkröte wird eine Zeichenfarbe zugewiesen
penup pu Der Stift wird von der Zeichenfläche genommen
pendown pd Der Stift wird auf die Zeichenfläche gesetzt
right winkel rt winkel Die Schildkröte dreht sich um einen bestimmten Winkel nach Rechts
left winkel lt winkel Die Schildkröte dreht sich um einen bestimmten Winkel nach Links
forward länge fd länge Die Schildkröte bewegt sich um eine bestimmte Anzahl von Einheiten nach vorne
back länge bk länge Die Schildkröte bewegt sich um eine bestimmte Anzahl von Einheiten zurück

Turtlegraphics ist prädestiniert für zweidimensionale geometrische Zeichnungen und fraktale Kurven von der Art der Drachenkurve oder der Hilbertkurve.

[Bearbeiten] Beispielprogramme in Logo

Ein einfaches Beispiel eines Programms, das eindrucksvolle Objekte erstellen kann:

Turtle-Grafik des nebenstehenden Programms
to   n_eck :ne :sz
        repeat :ne [
              rt 360 / :ne 
              fd :sz
        ]
end

to   mn_eck :ne :sz
        repeat :ne [
               rt 360 / :ne 
               n_eck :ne :sz
        ]
end

Aufrufen kann man das Programm zum Beispiel mit:

mn_eck 36 20


to   strahlenbüschel :anzahl :länge
             repeat :anzahl [
                    fd :länge 
                    back :länge 
                    rt 360 / :anzahl
             ]                
end

to   strichmännchen :länge
           
           fd :länge 
           lt 45 
           fd :länge 
           rt 90 
           fd :länge 
           rt 90 
           fd :länge 
           rt 90 
           fd :länge
           lt 45 
           fd :länge 
           lt 135 
           fd :länge 
           back :länge
           lt 90 
           fd :länge
           back :länge
           lt 135 
           fd :länge
           rt 45 
           fd :länge 
           back :länge
           lt 90 
           fd :länge
end

to   vierquadrate :länge
          
          fd :länge
          back :länge *2
          lt 90 
          fd :länge*2
          rt 90 
          fd :länge*2
          rt 90 
          fd :länge*4
          rt 90 
          fd :länge*2
          rt 90 
          fd :länge*3
          lt 90
          fd :länge *2
          lt 90 
          fd :länge *2
          lt 90 
          fd :länge *2
          rt 90 
          fd :länge 
          lt 90 
          fd :länge *2
          lt 90 
          fd :länge
          rt 90 
          fd :länge *2
          lt 90 
          fd :länge*2
          lt 90 
          fd :länge*2
end


Logo-Programme zur Erzeugung der Koch-Kurve und der Koch'schen Schneeflocke sind unter Koch-Kurve zu finden.

Noch ein Beispiel

to XY repeat 36 [pu fd 100 pd kr pu bk 100 pd] end to kr repeat 360 [fd 1 rt 1] end

[Bearbeiten] Erweiterter Befehlssatz im MSWLOGO

Zusätzlich zum Standard-Befehlssatz bieten neuere MSWLOGO-Versionen einen erweiterten Befehlssatz zur Erzeugung von dreidimensionalen Darstellungen.

Erweiterte Befehle des MSWLOGO
Befehl Kurzform Beschreibung
setpencolor [r g b] setpc [r g b] Dem Stift wird die Farbe in den RGB-Anteilen (0-255) zugeteilt.


[Bearbeiten] Vergleich Lisp - Logo

In LISP sieht ein Programm zur Berechnung der Fakultät beispielsweise so aus:

(defun ! (n)
  (cond ((zerop n) 1)
        ((>= n 1) (* n (! (1- n))))))

Aufruf:

(! 6)

In UCBLogo sieht das gleiche Programm nun so aus:

to ! :n
  output ifelse :n=0 [1][:n*! :n-1]
end

Aufruf:

! 6

In aUCBLogo kann man die Doppelpunkte weglassen:

to ! n
  output ifelse n==0 [1][n*! n-1]
end

Aufruf:

! 6

Alternativ kann man es auch so schreiben (für UCBLogo):

to fakultaet :n
  if :n = 0 [make "n 1]
  if :n > 1 [make "n :n * fakultaet :n - 1]
  output :n
end

Aufruf:

print fakultaet 6


[Bearbeiten] Weblinks

Persönliche Werkzeuge
Buch erstellen