Verarbeitung mit vordefinierten Funktionen
Vordefinierte Listenfunktionen verwenden
Es gibt eine ganze Reihe vordefinierter Funktionen zur Verarbeitung von Listen (siehe Elm - List). Einige dieser Funktionen werden in den folgenden Beispielen verwendet.
Beispiel - den Mittelwert berechnen
Ziel ist es, die Durchschnittsnote (hier als Mittelwert der erreichten Punktzahlen) zu bestimmen. Wir benutzen hierzu vordefinierte Listenfunktionen.
> import Notenliste exposing (..)
> notenliste
[14,7,12,10,15,4,8,13,10,7,5,2,9,9,12]
: List Int
> List.length notenliste
15 : Int
> List.sum notenliste
137 : Int
> ...
9.133333333333333 : Float
Aufgabe 1
(a) Beschreibe, was die im REPL-Dialog benutzten vordefinierten Funktionen leisten.
(b) Der Ausdruck zur Berechnung des Mittelwerts fehlt noch im REPL-Dialog. Ergänze diesen Ausdruck. Beachte, dass man eine Division durchführen muss und dass man dabei geeignete Typumwandlungen vornehmen muss.
(c) Definiere eine Funktion für die Mittelwertberechnung.
Beispiel - die mittlere Note bestimmen
Die mittlere Note erhält man so: Man sortiert zunächst die Notenliste und nimmt bei einer ungeraden Anzahl von Noten genau in der Mitte der Auflistung und bei einer geraden Anzahl von Noten die beiden Noten genau in der Mitte der Auflistung.
Fall 1: ungerade Anzahl von Noten [14,7,12,10,15,4,8,13,10,7,5,2,9,9,12] -> [2,4,5,7,7,8,9,9,10,10,12,12,13,14,15] -> [2,4,5,7,7,8,9] [9] [10,10,12,12,13,14,15] -> [9]
Fall 1: gerade Anzahl von Noten [10,14,7,12,10,15,4,8,13,10,7,5,2,9,9,12] -> [2,4,5,7,7,8,9,9,10,10,10,12,12,13,14,15] -> [2,4,5,7,7,8,9] [9,10] [10,10,12,12,13,14,15] -> [9,10]
Zur Bestimmung dieser mittleren Noten kann man folgende vordefinierte Listenfunktionen verwenden.
> import Notenliste exposing (..)
> List.sort notenliste
[2,4,5,7,7,8,9,9,10,10,12,12,13,14,15]
: List Int
> List.drop 7 (List.sort notenliste)
[9,10,10,12,12,13,14,15]
: List Int
> List.take 1 (List.drop 7 (List.sort notenliste))
[9] : List Int
Aufgabe 2
(a) Teste die im REPL-Dialog benutzten vordefinierten Funktionen mit weiteren Funktionsaufrufen. Beschreibe möglichst präzise, was sie leisten.
(b) Entwickle einen analogen Ausdruck für eine Notenliste mit einer geraden Anzahl von Noten.
(c) Definiere eine Funktion zur Bestimmung der mittleren Note für eine beliebige Notenlste.