i

Definitionen

Eigene Definitionen erstellen

Zu Mikas ersten vier Notenpunkten (7, 4, 10 und 13) sind mittlerweile noch einige weitere dazugekommen. Seine neue Liste enthält nun die Noten: 7, 4, 10, 13, 10, 11, 8 und 12. All diese Noten jedes Mal einzutippen, wenn man sie in einer Funktion verwenden möchte, wird schnell lästig. Racket bietet mit dem Schlüsselwort define die Möglichkeit, eigene Definitionen vorzunehmen.

Aufgabe 1: Funktionsweise von define

Neue Datei - definitionen.rkt

(a) Mache dich mit der Funktionsweise von define vertraut. Führe dazu die nachfolgenden Ausdrücke nacheinander in der REPL aus.

> (+ 2 vier)

> (define vier 4)

> vier

> (+ 2 vier)

(b) Übertrage den untenstehenden Code in das Definitionsfenster und ergänze die mit ... beschriebenen Lücken. Nutze als Notenliste Mikas bisherige Noten (7, 4, 10, 13, 10, 11, 8, 12).

(define notenliste ...)

;Fügt eine neue Note an mikasNotenliste an
(: neueNote (natural -> (list-of natural)))
(define neueNote
  (lambda (x)
    (append ... (list x))))

(c) Füge mit der Funktion neueNote nacheinander die Notenpunkte 6 und 9 zur Liste hinzu. Welche Noten befinden sich anschließend in der Definition der Notenliste? Erkläre die Funktionsweise von neueNote anhand der REPL-Ausgaben.

(d) Versuche, das Programm so abzuändern, dass das Rückgabedatum von neueNote die Definition von notenliste abändert und die neue Notenliste definiert. Welche Schwierigkeiten begegnen dir?

(e) Beschreibe, worin sich eine Definition in Racket von einer Variable in einer anderen dir bekannten Programmiersprache unterscheidet.
Du bist dir noch unsicher? - Dann versuche einmal in der REPL eine neue Definition von notenliste anzulegen.


Aufgabe 2: Vielfältige Definitionen

Bestehende Datei - definitionen.rkt

(a) Analysiere den untenstehenden Programmcode und überlege, welches Ergebnis du für den Ausdruck (* (funktion liste) negativ) erhalten wirst. Überprüfe deine Vermutung anschließend.

(define liste (list 24 12 36 24 50))

(define negativ -1) 
  
(define rechne -)

(define zahl (rechne 12 12))

(define funktion
  (lambda (l)
    (rechne zahl (first l))))

(b) In Aufgabenteil (a) wurde define an fünf Stellen im Programmcode zur Definition verschiedenster Programmierelemente genutzt. Wähle aus, welche Programmierelemente in den entsprechenden Zeilen definiert wurden.

  • Zeile 1:
  • Zeile 3:
  • Zeile 5:
  • Zeile 7:
  • Zeile 9:

Suche

v
100.137.3.2.1 Definitionen
Kopieren durch Anklicken

Rückmeldung geben