„Logo (Programmiersprache)“ – Versionsunterschied

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springen Zur Suche springen
[ungesichtete Version][ungesichtete Version]
Inhalt gelöscht Inhalt hinzugefügt
DodekBot (Diskussion | Beiträge)
Zeile 265: Zeile 265:
[[Kategorie:Programmiersprache]]
[[Kategorie:Programmiersprache]]
* [http://wiki.laptop.org/go/Turtle_Art Turtle Art] für den OLPC mit graphischer Programmierung
* [http://wiki.laptop.org/go/Turtle_Art Turtle Art] für den OLPC mit graphischer Programmierung
* [http://pagesperso-orange.fr/logoplus/dlogo.htm ] Eine kostenlose Version der Sprache Logo für Windows


[[ar:لغة اللوجو]]
[[ar:لغة اللوجو]]

Version vom 3. April 2008, 18:47 Uhr

Die 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. 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.

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.

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

Turtle-Grafik des nebenstehenden Programmes
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.

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.


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