i

Die Funktion map

Verändern von Elementen in einer Liste

Für die Ergebnisse einer Informatikklausur hat die Lehrkraft folgende Liste angelegt:

(define klausurNoten
    (list "Ahmad" 11 "Bianca" 8 "Cleo" 11 "Dev" 7 "Emil" 3 "Felia" 5 "Giray" 7))
Nach etwas Überlegung beschließt sie, dass sie die Klausur doch etwas hart bewertet hat. Nun möchte sie jede Note in der Liste um einen Notenpunkt erhöhen.

Aufgabe 1: Verändern von Listenelementen

Zum Verändern von Listenelementen finden sich im Internet unter anderem die folgenden Beispiele:

> (map ceiling (list 1.3 2.1 -3.1 -5.7))
> (map natural? (list 42 17 24 4.1))
> (map string-length (list "Informatik" "Racket" "Funktion"))

(a) Mach dich mit der Funktion map vertraut indem du die Beispiele in der REPL ausführst und ggf. eigene Ausdrücke entwirfst.

(b) Beschreibe welchen Zweck die Funktion map erfüllt.

(c) Welche Eigenschaften müssen die beiden Operanden erfüllen um einen korrekten map-Ausdruck zu erzeugen?

(d) Können wir mittels der Funktion map einen Ausdruck schreiben, der jeden Wert in der Liste (list 0 1 2) erhöht? Begründe deine Meinung.


Aufgabe 2: Listenelemente um eins erhöhen

Neue Datei - listenFunktionen.rkt

Bisher fehlt uns eine Funktion mit derer wir über map die Werte in der Liste um eins erhöhen können. Das wollen wir nun ändern, der folgende Ausdruck soll die Erhöhung aller Listenelemente vornehmen:

(map add1 (list 0 1 2 3))

(a) Schreibe die Funktion add1 und überprüfe deine Funktion mit dem oberen Ausdruck.


Aufgabe 3: Neue Funktionen innerhalb von map

Bestehende Datei - listenFunktionen.rkt

Um nicht jedesmal wenn wir eine Liste verändern wollen eine neue Funktion definieren zu müssen, bietet uns Racket eine weitere Möglichkeit geeignete map-Ausdrücke zu entwerfen. So lassen sich Zahlen in eine Liste beispielsweise wie folgt erhöhen:

(map (lambda (x) (+ x 1)) (list 0 1 2 3))

(a) Führe den Ausdruck in der REPL aus und vergleiche das Ergebnis mit deinem Ergebnis aus Aufgabe 2.

(b) Vergleiche den ersten Operanden des map-Ausdrucks mit deiner definierten Funktion aus Aufgabe 2. Wo findest du Gemeinsamkeiten und wo Unterschiede?

(c) Verändere den Ausdruck so, dass dieser die Zahlen erst um zwei erhöht und anschließend verdreifacht.


Aufgabe 4: Noten um einen Notenpunkt erhöhen.

Bestehende Datei - listenFunktionen.rkt

Nun kennen wir alle Mittel die nötig sind um auch die Noten in der Notenliste zu erhöhen.

(a) Übertrage die Definition klausurNoten in deine Racket-Datei.

(define klausurNoten
    (list "Ahmad" 11 "Bianca" 8 "Cleo" 11 "Dev" 7 "Emil" 3 "Felia" 5 "Giray" 7))

(b) Erhöhe alle Noten um einen Notenpunkt indem du die Liste über einen map-Ausdruck verarbeitest. Ob du dafür eine neue Funktion definierst oder die Logik in den map-Ausdruck integrierst bleibt dir überlassen.

Suche

v
100.137.3.3.1 Die Funktion map
Kopieren durch Anklicken

Rückmeldung geben