s n h m r u
i

Automatisierung der Befehlsausführung

Eine Implementierung ergänzen

Die im letzten Abschnitt entwickleten Zustandsänderungen bei der Ausführung von Befehlen nutzen wir jetzt (in verallgemeinerter Form), um die Ausführung eines kompletten Programms zu programmieren. der folgende Quelltext liefert das Grundgerüst.

type Befehl 
    = LI                    -- links
    | RE                    -- rechts
    | VW Int                -- vorwärts ...
<p>type alias Programm = List Befehl</p>
<p>type Richtung<br />
= N     -- Norden<br />
| O     -- Osten<br />
| S     -- Süden<br />
| W     -- Westen</p>
<p>type alias Akteur = (Int, Int, Richtung) </p>
<p>type alias Zustand = (Akteur, Programm)</p>
<p>programm1: Programm<br />
programm1 = [VW 2, RE, VW 4, LI, VW 2]</p>
<p>akteur: Akteur<br />
akteur = (0,0,N)</p>
<p>zustand: Zustand<br />
zustand = (akteur, programm1)</p>
<p>exeProgramm: Zustand -> Zustand<br />
exeProgramm ((posx, posy, richtung), programm) =<br />
case programm of<br />
[] -><br />
((posx, posy, richtung), programm)                                -- (1)<br />
befehl::restProgramm -><br />
case befehl of<br />
LI -><br />
case richtung of<br />
N -> exeProgramm ((posx, posy, W), restProgramm)      -- (2)<br />
O -> ...<br />
S -> ...<br />
W -> ...<br />
RE -><br />
case richtung of<br />
N -> exeProgramm ((posx, posy, O), restProgramm)      -- (3)<br />
O -> ...<br />
S -> ...<br />
W -> ...<br />
VW x -><br />
case richtung of<br />
N -> exeProgramm ((posx, posy+x, N), restProgramm)    -- (4)<br />
O -> ...<br />
S -> ...<br />
W -> ...</p>
<p>test =<br />
exeProgramm (akteur, programm1)<br />
> test
((4,4,N),[]) : Zustand

Aufgabe 1

Analysiere den Quelltext und erkläre die mit (1)..(4) markierten Programmzeilen.

Aufgabe 2

Ergänze die fehlenden Teile im Quelltext. Teste anschließend mit unterschiedlichen Daten.

Suche

v
8.2.2.8.2.1.4 Automatisierung der Befehlsausführung
Kopieren durch Anklicken

Rückmeldung geben