i

Verarbeitung mit vordefinierten Funktionen

Einfügen und Entfernen von Daten

Es kommt oft vor, dass man neue Daten an bestimmten Stellen in eine Liste einfügen möchte oder dass man Daten an bestimmten Stellen wieder entfernen möchte. Wir lösen diese Probleme zuerst ganz allgemein. Danach kannst du die Lösungen auch auf Teilnehmerlisten anwenden.

Der REPL-Dialog verdeutlicht, was eine zu entwickelnde Funktion entfernenAnPos leisten soll:

> entfernenAnPos 2 [1, 2, 3, 4]
[1,3,4] : List number
> entfernenAnPos 0 [1, 2, 3, 4]
[1,2,3,4] : List number
> entfernenAnPos 8 [1, 2, 3, 4]
[1,2,3,4] : List number
> entfernenAnPos 4 ["dann", "fehlt", "etwas", "in", "der", "Liste"]
["dann","fehlt","etwas","der","Liste"]
    : List String

Der folgende Quelltext zeigt eine mögliche Implementierung mit Hilfe vordefinierter Listenfunktionen. Beachte, dass mit List a hier eine Funktion definiert wird, die auf Listen mit Elementen eines beliebigen Datentyps anwendbar ist.

module Listenverarbeitung exposing (..)

entfernenAnPos: Int -> List a -> List a
entfernenAnPos pos liste =
    let
        vorher = List.take (pos-1) liste
        nachher = List.drop pos liste
    in
    vorher ++ nachher

Aufgabe 1

(a) Analysiere die Definition der Funktion entfernenAnPos und erkläre sämtliche Bestandteile.

(b) Teste die Funktion anschließend mit unterschiedlichen Funktionsaufrufen (so wie im oben gezeigten REPL-Dialog).

Aufgabe 2

Entwickle analog eine Definition zur Funktion einfuegenAnPos. Der folgende REPL-Dialog verdeutlicht das gewünschte Verhalten dieser Funktion.

> einfuegenAnPos 2 0 [1, 4, 5, 3]
[1,0,4,5,3] : List number
> einfuegenAnPos 1 0 [1, 4, 5, 3]
[0,1,4,5,3] : List number
> einfuegenAnPos 0 0 [1, 4, 5, 3]
[0,1,4,5,3] : List number
> einfuegenAnPos 8 0 [1, 4, 5, 3]
[1,4,5,3,0] : List number
> einfuegenAnPos 2 "o" ["T", "o", "o", "r"]
["T","o","o","o","r"]
    : List String

Aufgabe 3

Teste die Funktionen entfernenAnPos und einfuegenAnPos auch mit Daten zu Teilnehmerlisten.

Suche

v
110.2.9.2.1.2
inf-schule.de/fp_elm_alteversion/elm_programme/listen/teilnehmerliste/lernstrecke/einfuegenlentfernen
inf-schule.de/110.2.9.2.1.2
inf-schule.de/@/page/Gsq5ezbo9OnG7Oog

Rückmeldung geben