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.

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)

programm1: Programm
programm1 = [VW 2, RE, VW 4, LI, VW 2]

akteur: Akteur
akteur = (0,0,N)

zustand: Zustand
zustand = (akteur, programm1)

exeProgramm: Zustand -> Zustand
exeProgramm ((posx, posy, richtung), programm) =
    case programm of 
        [] ->
            ((posx, posy, richtung), programm)                                -- (1)
        befehl::restProgramm -> 
            case befehl of
                LI ->
                    case richtung of
                        N -> exeProgramm ((posx, posy, W), restProgramm)      -- (2)
                        O -> ...
                        S -> ...
                        W -> ...
                RE -> 
                    case richtung of
                        N -> exeProgramm ((posx, posy, O), restProgramm)      -- (3)
                        O -> ...
                        S -> ...
                        W -> ...
                VW x -> 
                    case richtung of
                        N -> exeProgramm ((posx, posy+x, N), restProgramm)    -- (4)
                        O -> ...
                        S -> ...
                        W -> ...
                            
test =
   exeProgramm (akteur, programm1)
> import Interpreter exposing (..)
> 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
dev.inf-schule.de/deklarativ/fp_elm/elm_programme/typdefinition/interpreter/lernstrecke/automatisierung
dev.inf-schule.de/8.2.2.8.2.1.4
dev.inf-schule.de/@/page/f1l9ycSsbXlzecGE

Rückmeldung geben