Ausführung von Befehlen
Die neuen Daten zur Beschreibung verwenden
Wir nutzen jetzt die neuen Daten zur Beschreibung von Bewegungen mit Hilfe der eingeführten Befehle.
module Interpreter exposing (..)
type Befehl
= LI -- links
| RE -- rechts
| VW Int -- vorwärts ...
type alias Programm = List Befehl
type Richtung
= N -- Norden
| O -- Osten
| S -- Süden
| W -- Westen
type alias Akteur = (Int, Int, Richtung)
type alias Zustand = (Akteur, Programm)
akteur: Akteur
akteur = (0,0,N)
programm1: Programm
programm1 = [VW 2, RE, VW 4, LI, VW 2]
zustand: Zustand
zustand = (akteur, programm1)
Der Akteur, der mit Hilfe von Befehlen gesteuert werden soll, lässt sich mit seinen Koordinaten und der Angabe der Bickrichtung beschreiben.
In der Animation sieht man z.B. die Beschreibung (0,0,N)
zur Ausgangslage des Akteurs.
Zum Herunterladen: wege_im_gitternetz2.ggb
Aufgabe 1
Führe das oben gezeigte Programm [VW 2, RE, VW 4, LI, VW 2]
mit Hilfe der Schaltflächen aus und beobachte und erläutere die Beschreibung der Lage des Akteurs.
Die Wirkung der Befehle beschreiben
Wenn der Akteur die Lage (0,0,N)
hat und das aktuelle Programm [LI, ...]
mit einem LI
-Befehl beginnt,
dann befindet der Akteur sich nach Ausführung des LI
-Befehl in der Lage (0,0,W)
und im Programm fehlt der LI
-Befehl.
Wir nennen das Tupel aus der Lage des Akteurs und des auszuführenden Programm einen Zustand. Die Ausführung von Programmen können wir dann mit Hilfe von Zustandsänderungen beschreiben. Hier einige exemplarische Beschreibungen von Zustandsänderungen:
Ausführung des LI-Befehls:
((3,0,N), [LI, ...]) -> ((3,0,W), [...])
((2,1,O), [LI, ...]) -> ...
...
Ausführung des RE-Befehls:
((0,1,N), [RE, ...]) -> ((0,1,O), [...])
((-1,1,O), [RE, ...]) -> ...
...
Ausführung des VW-Befehls:
((2,1,N), [VW 2, ...]) -> ((2,3,N), [...])
((0,-1,O), [VW 2, ...]) -> ...
((-2,4,S), [VW 2, ...]) -> ...
((1,3,W), [VW 2, ...]) -> ...
...
Aufgabe 2
Ergänze die fehlen Zustandsbeschreibungen.