Computer können die erstaunlichsten Aufgaben erledigen,
aber nur, wenn Sie ihnen bis ins kleinste Detail hinein hundertprozentig
genaue Anweisungen geben. Wir halten Forth für ein einfaches und natürliches
Mittel, das zu erreichen.
Wir werden auf dieser Seite ein paar grundlegende Worte
in WebForth einfügen, die wir benötigen, um eine Verkehrsampel
aufzubauen - RED RED-&-YELLOW GREEN YELLOW - die 4
Phasen, so wie sie in Groß Britannien verwendet werden. (Diese deutsche
Seite ist eine Übersetzung. Wir behalten die englischen Bezeichnungen
der hinzuzufügenden Forth-Befehle (siehe englischen Teil der WebForth-Site)
bei.)
Geben Sie eines dieser vier Worte ein und drücken
Sie dann die Eingabe-Taste, um zu sehen, was das Wort bewirkt. Der
Computer antwortet mit einem abschließenden OK, um
anzuzeigen, daß das Wort anstandslos ausgeführt wurde. (Drücken
Sie bei Ihren Eingaben am Ende der Zeile stets die Eingabe-Taste.
- Wir werden diese Bemerkung nicht mehr wiederholen.)
(Wenn Sie mit der Maus irgendwo anders außerhalb
des WebForth-Fensters hinklicken, hängen Sie WebForth von der Tastatur
ab. Es reagiert dann nicht mehr auf Tastatureingaben. Alle Browser verhalten
sich so. Wollen Sie die Verbindung zur Tastatur wieder herstellen, klicken
Sie einfach mit der Maus irgendwo auf die Fläche des WebForth-Fensters.)
Beachten Sie, daß wir RED-&-YELLOW
geschrieben haben, nicht RED & YELLOW. Das Ganze soll
als ein einziges Wort erscheinen. Genau wie im natürlichsprachlichen
Kontext auch (im Englischen wie im Deutschen) wird der Zwischenraum zur
Trennung von Worten verwendet.
Nun packen Sie diese Wortfolge in ein einhüllendes
Wort - PHASES. Wir erreichen das durch Verwendung von :
(Doppelpunkt oder "Kolon") vor dem Wort und ;
(Semikolon) danach wie folgt (WebForth reagiert auf Befehle, die es nicht versteht,
mit ? anstatt OK - zumeist, weil der Befehl
nicht hundertprozentig genau eingegeben wurde. Drücken Sie einfach
die Enter-Taste und geben Sie den Befehl nochmal genau ein.)
Damit haben Sie jetzt das Wort PHASES
aufgebaut, das Sie genauso verwenden können, wie Sie es mit den Worten
RED und GREEN getan haben. Probieren Sie
es aus, indem Sie
eingeben und Sie werden sehen, daß es genau die
von Ihnen erwartete Wortfolge ausführt.
Zur Vervollständigung unserer Verkehrsampel muß
diese Wortfolge noch solange wiederholt werden, bis sie ausgeschaltet wird.
Tun Sie das, indem Sie als neues Wort TRAFFIC-LIGHT einrichten,
ein Wort, das PHASES ständig wiederholt, und zwar
wie folgt
BEGIN und AGAIN sind in
Forth Standard-Worte. Probieren sie das aus, indem Sie eingeben:
Sehen Sie sich an, wie es ohne Unterbrechung läuft.
Halten Sie es an, indem Sie die Esc-Taste drücken.
Herzlichen Glückwunsch Mit nur wenigen Ausnahmen (wie :)
sind alle Worte voneinander unabhängig und stehen miteinander dadurch
in Verbindung, daß sie Zahlen auf dem Stack hinterlassen. Der Stack
ist ein einfacher Behälter zur Aufbewahrung von Zahlen und funktioniert
wie ein Ablagekasten derart, daß sich stets die zuletzt abgelegte
Zahl oben befindet.
Wenn Sie 2 2 + eingeben, fordern Sie WebForth
auf,
Versuchen Sie es jetzt.
Wie alle Forth-Worte holt sich auch "+"
die Zahlen, die es benötigt, vom Stack. (Wenn auf dem Stack gar keine
Zahlen bereitstehen, erhalten wir das ? zur Antwort.) Wenn
"+" in Aktion tritt, entfernt es die obersten
beiden Zahlen vom Stack, rechnet das Ergebnis aus und legt dieses anstatt
der beiden Zahlen auf den Stack. WebForth meldet sich dann mit "OK"
und wartet auf weitere Befehle.
Wenn Sie jetzt den Punkt, das Wort ".",
eingeben, entfernt WebForth das Ergebnis vom Stack und gibt es auf dem
Bildschirm aus.
Lassen Sie uns jetzt den Stack näher inspizieren.
Das Wort .S bedeutet gebe den Stackinhalt aus. Es
gibt alle auf dem Stack liegenden Zahlen, von der untersten bis zur obersten,
auf dem Bildschirm aus.
Geben Sie zur Probe 56789 43210 .S + .S CR .
ein.
Über das Wort ABORT können Sie
den Stack leeren..
Die Signale der Verkehrsampeln unseres Programms werden
mit einer Frequenz an- und abgeschaltet, die jenemWert entspricht, der
in dem mit %WAIT bezeichneten Speicherplatz aufbewahrt
wird.(Mit dem Kommando VARIABLE hatten wir den dafür
vorgesehenen Speicherplatz reserviert und ihm einen Namen gegeben.):
Wir haben diese Variable mit Hilfe des Speicherwortes
! auch gleich auf den Anfangswert 100 gesetzt,
so wie in
Überprüfen Sie das jetzt sofort, indem den Wert
über ? auslesen und auf dem Bildschirm ausgeben. Geben
Sie hierzu ein:
Vermindern Sie jetzt den Inhalt der Variablen namens %WAIT
von 100% auf 10% und sorgen Sie damit dafür, daß die Signale
zehnmal so schnell wechseln. Geben Sie hierzu ein:
und sehen Sie sich das Ergebnis über den Befehl an. Wie arbeitet eigentlich das Speicherwort "!"
? %WAIT legt die Speicheradresse auf den Stack. "!"
entnimmt dem Stack zunächst die Speicheradresse, dann die Zahl und
schließlich speichert es die Zahl in die Speicheradresse.
Zur Erinnerung an die Reihenfolge, mit der dieser Vorgang
abläuft, wird in der Forth-Literatur "!"
als
beschrieben. Dieser "Stackkommentar" ( N L -- )
erklärt uns einfach, daß "!"
erst die Speicheradresse L vom Stack holt, dann die Zahl
N, und daß es dann nichts mehr wieder auf den Stack legt.
Damit ist Abschnitt 1 der Einführung für Programmierneulinge
zu Ende. Klicken Sie hier, um zu Abschnitt 2
zu gelangen.
: PHASES RED RED-&-YELLOW GREEN YELLOW ;
PHASES
: TRAFFIC-LIGHT LAMP-POST BEGIN PHASES AGAIN ;
TRAFFIC-LIGHT
- Sie haben soeben zum erstenmal einen Computer programmiert!
Das vollständige Programm
Mit Zahlen umgehen
Wie gibt man den Zahlen Namen ?
VARIABLE %WAIT
100 %WAIT !
%WAIT ?
10 %WAIT !
TRAFFIC-LIGHT
! ( N L -- )