Logo (Programmiersprache)

Logo (Programmiersprache)

Die funktionale Programmiersprache Logo ist eine von Seymour Papert entwickelte Sprache aus den 1960er 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

Turtlegraphics

Ihre bekannteste Besonderheit ist Turtle-Grafik, 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[1]
Befehl Kurzform Beschreibung
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
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.
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 Löscht den Bildschirm und versetzt die Schildkröte in die Ausgangsposition zurück
penup pu Der Stift wird von der Zeichenfläche genommen.
pendown pd Der Stift wird auf die Zeichenfläche gesetzt.
hideturtle ht Die Schildkröte wird unsichtbar.
showturtle st Die Schildkröte wird sichtbar.
setpencolor [r g b] setpc [r g b] Dem Stift wird die Farbe in den RGB-Anteilen (0-255) zugeteilt.


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

Das erste Bild wird beispielsweise – allerdings ohne die Farbe — von dem folgenden Programm erzeugt:

to   n_eck :ne :sz                        ; Definiert eine neue Funktion n_eck mit zwei Parametern
        repeat :ne [                        ; Wiederholt den folgenden Codeblock :ne mal 
              rt 360 / :ne          ; Dreht das Turtle um einen Winkel von 360° / :ne nach rechts
              fd :sz                        ; Bewegt das Turtle um :sz nach vorne und malt dabei eine Linie
        ]
end

to   mn_eck :ne :sz                    ; Definiert eine neue Funktion mn_eck mit zwei Parametern
        repeat :ne [                        ; Wiederholt den folgenden Codeblock :ne mal
               rt 360 / :ne         ; Dreht das Turtle um einen Winkel von 360° / :ne Grad
               n_eck :ne :sz          ; Führt n_eck aus und malt so das oben definierte n_eck
        ]
end

mn_eck 36 20                            ; Führt mn_eck aus und malt so das oben definierte mn_eck

Durch den Aufruf von n_eck mit einem großen Parameter :ne entsteht der Eindruck eines Kreises. mn_eck dreht das Turtle oft ein wenig und malt dann einen Kreis, sodass der Eindruck eines großen Kreises entsteht, der wiederum kleine Kreise enthält.

Logo und Lisp

Die Syntax von Logo orientiert sich an der von Lisp, einer 1958 am MIT entstandenen, listenbasierten Programmiersprachenfamilie. Typisch für Lisp ist die Klammerung aller Ausdrücke. Auf diese wurde in Logo verzichtet. Im direkten Vergleich anhand eines Programms zur Berechnung der Fakultät wird die Ähnlichkeit beider Sprachen sichtbar:

Lisp Logo Erläuterung
(defun ! (n) to ! :n Definiere eine neue Funktion ! mit einem Parameter n
 (cond Eine Bedingung eröffnen. Macht man in Logo zeilenweise.
  ((zerop n) 1)  if :n = 0 output 1 Bei n=0 soll 1 zurückgegeben werden
  ((>= n 1) (* n (! (- n 1))))  if :n >= 1 output :n * ! (:n - 1) und sonst n mal der rekursive Aufruf für n-1.
 ) In Lisp muss man explizit die cond-Klammer schließen
) end Die Funktionsdefinition schließen
(! 6) ! 6 Die Funktion aufrufen

In Logo werden Operatoren in Infix-Notation verwendet, außerdem müssen Rückgabewerte explizit mit output gesetzt werden. Verwendet man die in Logo durch Ausschreiben verfügbare Präfix-Notation (n * m entspricht z. B. PRODUCT n m) sowie die optionale Klammernsetzung, werden die beiden Codes noch ähnlicher.

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

Siehe auch

Einzelnachweise

  1. In verschiedenen Varianten von Logo haben diese Befehle zum Teil uneinheitliche Namen. Diese Tabelle bezieht sich auf MSWLogo (derrel.net, abgerufen am 9. Februar 2011)

Weblinks

Wikibooks Wikibooks: Logo – Lern- und Lehrmaterialien
 Commons: Logo – Sammlung von Bildern, Videos und Audiodateien

Wikimedia Foundation.

Игры ⚽ Поможем решить контрольную работу

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Programmiersprache/Zeittafel — Jahr Name Entwickler, Hersteller Vorläufer, Vorgänger 1840 Erstes Programm Ada Lovelace * 1946 Plankalkül Konrad Zuse * 1952 A 0 Grace Hopper * …   Deutsch Wikipedia

  • LOGO — Der Ausdruck Logo bezeichnet: griechischer Wortstamm mit den Bedeutungen „Lehre“, „Wort“, „Rede“, „Sinn“, siehe Liste griechischer Wortstämme in deutschen Fremdwörtern das Wortzeichen im Unterschied zum Piktogramm als Bildzeichen, siehe… …   Deutsch Wikipedia

  • Logo — Der Ausdruck Logo bezeichnet: griechischer Wortstamm mit den Bedeutungen „Lehre“, „Wort“, „Rede“, „Sinn“, siehe Liste griechischer Wortstämme in deutschen Fremdwörtern das Wortzeichen im Unterschied zum Piktogramm als Bildzeichen, siehe… …   Deutsch Wikipedia

  • LOGO — 〈EDV〉 Programmiersprache, die als Lehr und Lernsprache bes. im Schulunterricht verwendet wird [Etym.: zu grch. logos »Wort«] …   Lexikalische Deutsches Wörterbuch

  • LOGO — das; [s] Kunstw. in Anlehnung an gr. lógos »Wort«> eine Programmiersprache hauptsächlich für Unterrichtszwecke (zur Einführung in den Umgang mit Computern) …   Das große Fremdwörterbuch

  • Programmiersprache Perl — Perl Paradigmen: prozedural, modular, teilweise objektorientiert Erscheinungsjahr: 1987 Entwickler: Larry Wall, Perl Porter Aktuelle  …   Deutsch Wikipedia

  • Programmiersprache Haskell — Haskell Basisdaten Paradigmen: funktional, nicht strikt, modular …   Deutsch Wikipedia

  • Programmiersprache Java — Java Objektorientierte Programmiersprache Basisdaten Paradigmen: Objektorientierte Programmiersprache Aktuelle  …   Deutsch Wikipedia

  • Programmiersprache Smalltalk — Smalltalk Logo von Smalltalk Basisdaten Entwickler: diverse Aktuelle Version: Smalltalk 80  (1980) …   Deutsch Wikipedia

  • logo — folgerichtig; stimmig; logisch; schlüssig; kohärent; konsequent * * * lo|go 〈Adj.; nur allein stehend u. präd.; umg.〉 1. klar, logisch, selbstverständlich 2. einverstanden, in Ordnung ● logo!; das ist doch logo! * * * lo|go <indekl. Adj.>… …   Universal-Lexikon

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”