Das Schneider CPC Systembuch

Einleitung

LOGO

Mit dem Kauf des ersten 3-Zoll-Diskettenlaufwerkes, bei den CPCs 664 und 6128 also mit dem Kauf des Computers selbst, erhält man außer Einleitung: CP/MCP/M auch noch eine weitere Programmiersprache: Einleitung: LOGO
Übergabe von Argumenten und Ergebnissen: LOGO:
LOGO
, in einer Version von Digital Research.

Einleitung: LOGO
Übergabe von Argumenten und Ergebnissen: LOGO:
LOGO
ist als eine Kindersprache verschrien. Tatsächlich wurde Einleitung: LOGO
Übergabe von Argumenten und Ergebnissen: LOGO:
LOGO
auch zunächst entwickelt, Kindern den Einstieg in's Computerleben zu erleichtern.

Man kann Einleitung: LOGO
Übergabe von Argumenten und Ergebnissen: LOGO:
LOGO
aber auch von seiner anderen Seite betrachten: Einleitung: LOGO
Übergabe von Argumenten und Ergebnissen: LOGO:
LOGO
ist eine verkürzte Ausgabe von LISP, 'der' Sprache der künstlichen Intelligenz.

Einleitung: LOGO
Übergabe von Argumenten und Ergebnissen: LOGO:
LOGO
scheint also sehr interessant zu sein: Auf der einen Seite extrem einfach, auf der anderen Seite aber auch sehr anspruchsvoll. Tatsächlich wächst in letzter Zeit das Interesse an Einleitung: LOGO
Übergabe von Argumenten und Ergebnissen: LOGO:
LOGO
deutlich, auch und gerade in den USA. Was dem Siegeszug von Einleitung: LOGO
Übergabe von Argumenten und Ergebnissen: LOGO:
LOGO
, zumindest in dieser Version, im Wege steht, ist die Arbeits-'Geschwindigkeit': Gerade die Grafikdarstellung, eine der Domänen von Einleitung: LOGO
Übergabe von Argumenten und Ergebnissen: LOGO:
LOGO
, ist extrem langsam.

Basic-Programmierern wird die Umstellung auf Einleitung: LOGO
Übergabe von Argumenten und Ergebnissen: LOGO:
LOGO
zunächst Schwierigkeiten bereiten. Hinter Einleitung: LOGO
Übergabe von Argumenten und Ergebnissen: LOGO:
LOGO
steckt ein viel strukturierteres Konzept. In Einleitung: LOGO
Übergabe von Argumenten und Ergebnissen: LOGO:
LOGO
gibt es kein Programm in dem Sinn, wie in Einleitung: BASIC
Anhang: Basic
Basic
. Aehnlich wie in Übergabe von Argumenten und Ergebnissen: FORTH:FORTH muss man sich hier sein Gesamtproblem in kleine Happen aufteilen und das Problem von unten her angehen: Zunächst werden sogenannte PROZEDUREN für die elementarsten Probleme definiert. Solche Prozeduren können sowohl Eingabe- als auch Ausgabeparameter haben, ähnlich den Die Fließkomma-Routinen: FunktionenFunktionen in Einleitung: BASIC
Anhang: Basic
BASIC
. Aufbauend auf den so definierten Prozeduren definiert man dann die 'zweite Generation', Prozeduren die bereits kompliziertere Aufgaben übernehmen können. Das geht dann so lange weiter, bis man zum Schluss nur noch eine Prozedur definieren muss, die dass gesamte Programm 'beinhaltet'. Zum Beispiel:

TO SPIEL
   TITELBILD
   SCHWIERIGKEITSSTUFE
   SPIELTEIL
   HISCORELISTE
   END

An diesem Beispiel erkennt man auch schon, wie eine LOGO-Prozedur in etwa aufgebaut sein muss: Am 'TO' erkennt man, dass die Definition einer Prozedur folgt. 'SPIEL' ist der Name der Prozedur. Das Ende der Definition wird durch 'END' angezeigt. Dazwischen stehen die Aufrufe von anderen, bereits definierten Prozeduren.

Dabei sind natürlich auch Schleifen und Unterprogramme: VariablenVariablen möglich. Insbesondere ist es möglich, Zahlen, Unterprogramme: VariablenVariablen oder Aehnliches als Basic und Maschinencode: ParameterParameter einer aufgerufenen Prozedur zu übergeben. Diese Prozedur kann nun ihre eigenen Unterprogramme: VariablenVariablen definieren, die den selben Namen haben können, wie Unterprogramme: VariablenVariablen im Haupt'programm'. Dadurch kann man viel flexibler und gefahrloser Programmieren, da das leidige Problem wegfällt, dass Unterprogramme: VariablenVariablen durch ein Unter'programm' unbeabsichtigt verändert werden. Zum Schluss kann eine Prozedur auch wieder Funktionswerte, also Ergebnisse an die rufende Prozedur zurückgeben. Die Prozedur 'SIN' übernimmt beispielsweise als Eingabe einen Winkel und liefert als Ausgabe den Sinus-Wert.

Dadurch, dass eine Prozedur ihre eigenen (Variablen: lokale Variablenlokalen) Variablen definieren und sich sogar selbst aufrufen kann, sind rekursive Problemlösungen möglich.

Eine weitere Die CPU Z80: Besonderheiten der Z80 im Schneider CPCBesonderheit von Einleitung: LOGO
Übergabe von Argumenten und Ergebnissen: LOGO:
LOGO
(und von LISP) sind die sogenannten Trees: ListenListen. Mehrere Zahlen oder Zeichenketten können in einer Trees: ListenListe zusammengefasst werden. Diese Trees: ListenListe wird dann einer Unterprogramme: VariablenVariable zugeordnet. Trees: ListenListen ersetzen in Einleitung: LOGO
Übergabe von Argumenten und Ergebnissen: LOGO:
LOGO
teilweise die dimensionierten Felder, die Einleitung: LOGO
Übergabe von Argumenten und Ergebnissen: LOGO:
LOGO
nicht kennt. Einige Probleme lassen sich durch Trees: ListenListen sehr viel galanter lösen als ohne.

Wer jedoch Einleitung: LOGO
Übergabe von Argumenten und Ergebnissen: LOGO:
LOGO
hört, denkt direkt auch an 'TURTLE GRAPHIC'. Diese 'Schildkroeten-Grafik' ist ein Zugeständnis der LOGO-Entwickler an die kindlichen Benutzer. Einleitung: LOGO
Übergabe von Argumenten und Ergebnissen: LOGO:
LOGO
kennt keinen koordinaten-, sondern einen vektor-orientierten Bildschirm.

Wer in Einleitung: BASIC
Anhang: Basic
Basic
gewöhnt ist, Punkt auf bestimmte (Die verwendeten Abkürzungen bedeuten: x:X,Y)-Kooerdinaten zu setzen, und Linien zu solchen Punkten zu ziehen, muss in Einleitung: LOGO
Übergabe von Argumenten und Ergebnissen: LOGO:
Logo
umdenken.

Gezeichnet wird ausschließlich von einem imaginaeren Tiechen, dass 'Turtle', also Schildkroete getauft wurde. Diese sitzt an einer bestimmten Stelle auf dem Bildschirm und schaut in eine bestimmte Richtung. Außerdem hat sie einen Stift in der Hand. Zunächst kannn man sich entscheiden, ob sie den Stift aufsetzen soll und welche Die Grafik: Farben
Die Bildausgabe: Tinten und Farben
Farbe
der Stift haben soll. Da CPC-LOGO in Die 3 verschiedenen Betriebsarten der PIO 8255: Modus 0
Die 3 verschiedenen Betriebsarten der PIO 8255: Modus 1
Die 3 verschiedenen Betriebsarten der PIO 8255: Modus 2
Modus
1 arbeitet, können bis zu vier Die Grafik: Farben
Die Bildausgabe: Tinten und Farben
Farben
gleichzeitig dargestellt werden.

Dann kann man die Schildkroete drehen, mit RT für rechts herum und LT für linksherum. Und man kann das wackere Tierchen auch noch loslaufen lassen: FD für vorwärts oder BK für rückwärts. Ist der Zeichenstift aufgesetzt, zeichnet die Schildkroete eine Linie.

Ein gleichseitiges Dreieck erhält man so in Einleitung: LOGO
Übergabe von Argumenten und Ergebnissen: LOGO:
LOGO
ganz einfach mit folgender Befehlsfolge:

FD 100   <- 100 Schritte vor
RT 120   <- um 120 Grad nach rechts drehen
FD 100
RT 120
FD 100

In Einleitung: BASIC
Anhang: Basic
Basic
muss man sich da mehr plagen. Vor allem muss man mit Sinus und Cosinus jonglieren.

Da der Bildschirm jedoch (physikalisch gesehen) Koordinaten-orientiert ist, muss Einleitung: LOGO
Übergabe von Argumenten und Ergebnissen: LOGO:
LOGO
intern ständig mit Sinus und Cosinus rechnen, um dem Anwender so einfache Befehle zur Verfügung zu stellen. Das führt dann dazu, dass Einleitung: LOGO
Übergabe von Argumenten und Ergebnissen: LOGO:
LOGO
, sowieso schon nicht der Schnellste, beim Zeichnen noch einmal langsamer wird.

Da dem Anwender außerdem nur etwa 8400 Datentypen: Bytes
Datenbreite: Bytes
Bytes
für Prozeduren und Unterprogramme: VariablenVariablen zur Verfügung stehen, ergeben sich zusammen mit der langsamen Programmbearbeitung zwei schwerwiegende Hindernisse für eine ernsthafte Anwendung. Um nur einmal hineinzuschnuppern, ist diese LOGO-Implementierung ja ganz gut. Für mehr ist sie leider auch nicht geeignet.

Valid HTML   Valid CSS