This page (revision-21) was last changed on 03-Feb-2023 15:21 by Carsten Strotmann 

This page was created on 29-Jul-2010 13:57 by Carsten Strotmann

Only authorized users are allowed to rename pages.

Only authorized users are allowed to delete pages.

Page revision history

Version Date Modified Size Author Changes ... Change note
21 03-Feb-2023 15:21 27 KB Carsten Strotmann to previous

Page References

Incoming links Outgoing links

Version management

Difference between version and

At line 51 changed one line
!! Glossary
! Glossary
At line 89 changed one line
!! Worte zur Fehlerbehandlung
!!! Worte zur Fehlerbehandlung
At line 111 added 35 lines
!!! Fallunterscheidung in FORTH
!!Strukturierung mit IF ELSE THEN / ENDIF
An dieser Stelle soll kurz die vielfältigen Möglichkeiten gezeigt werden, mit denen eine Fallunterscheidung in FORTH getroffen merden kann. Kennzeichnend für eine solche Programmsituation ist, daß von verschiedenen Möglichkeiten des Programmflusses genau eine ausgesucht werden soll.
Ausgehend von einer übersichtlichen Problemstellung, einem Spiel, werden die notwendigen Grundlagendefinitionen und die Entwicklung der oben beschriebenen Kontrollstruktur beschrieben.
Als Beispiel dient ein Spiel mit einfachen Regeln:
Bei diesem Trinkspiel, das nach dem Artikel "Ultimate CASE-Statement" ([Vierte Dimension 2/87|http://forth-ev.de/filemgmt/visit.php?lid=116], Seite 40 ff) auch CRAPS genannt wird, geht es darum, einen Vorrat von gefüllten Gläsern unter den Mitspielern mit Hilfe des Würfels zu verteilen und leerzutrinken:
* Bei einer EINS wurde ein Glas aus dem Vorrat in der Tischmitte genommen und vor sich gestellt.
* Bei einer ZWEI oder einer DREI bekam der Nachbar/ die Nachbarin links ein Glas des eigenen Vorrates zugesehoben.
* Bei einer VIER oder einer FÜNF wurde dem Nachbarn/ der Nachbarin rechts ein Glas des eigenen Vorrates vorgesetzt.
* Bei einer SECHS wurden alle Gläser, die der Spieler / die Spielerin vor sich stehen hatte, leergetrunken.
Zuordnung ist also: 1=nehmen, 2/3=links, 4/5=rechts, 6=trinken und entsprechend der Augenzahl des Würfels soll eine der 6 möglichen Aktionen ausgeführt werden. Das Programm soll sich darauf beschränken, das Ergebnis dieses Würfelns einzulesen und auszuwerten. Daraufhin wird eine Meldung ausgegeben, welche der sechs Handlungen auszuführen ist.
Für ein solches Programm ist eine Zahleneingabe notwendig. Diese wurde hier mit dem Wort F83-NUMBERS realisiert:
{{{
: F83-number? ( string -- d f )
number? ?dup
IF
0< IF extend THEN
true exit
THEN
drop 0 0 false ;
: input# ( string -- n )
pad c/l 1- >expect
pad F83-number? 2drop ;
}}}