Ein erstes Programm

Dieser erste Abschnitt der Einführung soll Ihnen beim Programmieren eines Computers helfen.Wenn Sie schon Programmiererfahrung haben, dann gehen Sie am besten wieder zur Einleitung zurück und wählen einen anderen Punkt.

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

   : PHASES  RED RED-&-YELLOW GREEN YELLOW ; 

(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

   PHASES

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

   : TRAFFIC-LIGHT  LAMP-POST BEGIN PHASES AGAIN ; 

BEGIN und AGAIN sind in Forth Standard-Worte. Probieren sie das aus, indem Sie eingeben:

   TRAFFIC-LIGHT

Sehen Sie sich an, wie es ohne Unterbrechung läuft. Halten Sie es an, indem Sie die Esc-Taste drücken.

Herzlichen Glückwunsch
- Sie haben soeben zum erstenmal einen Computer programmiert!

Das vollständige Programm

Wollen Sie erfahren, wie RED, GREEN und die anderen Worte aufgebaut sind, werfen Sie einen Blick auf deren Definitionen. Solche Texte nennt man den "Quelltext" des Programms.

Mit Zahlen umgehen

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

Wie gibt man den Zahlen Namen ?

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.):

  VARIABLE %WAIT

Wir haben diese Variable mit Hilfe des Speicherwortes ! auch gleich auf den Anfangswert 100 gesetzt, so wie in

  100 %WAIT !

Überprüfen Sie das jetzt sofort, indem den Wert über ? auslesen und auf dem Bildschirm ausgeben. Geben Sie hierzu ein:

  %WAIT ?

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:

  10 %WAIT !

und sehen Sie sich das Ergebnis über den Befehl

  TRAFFIC-LIGHT

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

  ! ( N L -- )

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.