i

Übungen: Gemischte Daten

Aufgabe 1: Gravitationsfeldstärke von Himmelskörpern

Bestehende Datei - gemischte_daten.rkt

Bei der Analyse von Himmelskörpern und deren Einfluss auf ihr Umfeld ist die Gravitationsfeldstärke (Symbol: $g$, Einheit: $\frac{m}{s^2}$) eine entscheidende Größe. Diese lässt sich für kugelförmige Körper mit folgender Formel berechnen: $$g = \frac{G \cdot M}{r^2}$$ wobei:

  • $G$ die Gravitationskonstante $= 6,6743 \cdot 10^{11}\ \ \frac{m^3}{kg \cdot s^{2}}$
  • $M$ die Masse des Himmelskörpers in $kg$
  • $r$ der Radius des Himmelskörpers in $m$

(a) Analysiere die Inhalte der unteren Tabelle mit sechs Himmelskörpern. Lege für die verschiedenen Himmelskörpertypen jeweils eine geeignete Record-Definition an.
(Hinweis: Die Bezeichnung planet ist in Racket bereits vorvergeben. Die Bezeichnung des Record-Datentyps könnte daher z. B. planett oder ein alternativer Name sein.)

Himmelskörpertyp Name Masse Radius Sonnensystem Planeten Zugehörigkeit Leuchtkraftklasse
Stern Sonne $1,989 \cdot 10^{30}\ kg$ $6,963 \cdot 10^5\ km$ das Sonnensystem - V
Stern Sirius A $3,978 \cdot 10^{30}\ kg$ $1,190 \cdot 10^6\ km$ Sirius-System - V
Planet Erde $5,972 \cdot 10^{24}\ kg$ $6,371 \cdot 10^3\ km$ das Sonnensystem - -
Planet Kepler-452b $1,965 \cdot 10^{25}\ kg$ $1,038 \cdot 10^4\ km$ Kepler-452-System - -
Mond Mond $7,346 \cdot 10^{22}\ kg$ $1,737 \cdot 10^3\ km$ das Sonnensystem Erde -
Mond Ganymed $1,482 \cdot 10^{23}\ kg$ $2,631 \cdot 10^3\ km$ das Sonnensystem Jupiter -

(b) Definiere einen Record für die Sonne, die Erde und den Mond.

(c) Schreibe eine Funktion, die Himmelskörper als gemischte Daten akzeptiert und die Gravitationsfeldstärke des übergebenen Himmelskörpers berechnet.


Aufgabe 2: Undefinierte Y-Achsenwerte

Bestehende Datei - gemischte_daten.rkt

Die untenstehende Racket-Funktion berechnet den y-Achsenwert für die Funktion $f = x^a$ bei der Übergabe von $x \in \mathbb{R}$ und $a \in \mathbb{Z}$.

;Berechnet den y-Wert für x^a
(: x-hoch-a (real integer -> real))
(check-expect (x-hoch-a 1 2) 1)
(check-expect (x-hoch-a 2 3) 8)
(check-expect (x-hoch-a 2 -3) 0.125)
(define x-hoch-a
  (lambda (x a)
        (expt x a)))

(a) Teste die Funktion mit den Übergabedaten $x = 0\ a = -3$ und $x = 0\ a = -17$. Welches Problem tritt hier auf? Erkläre anschließend, bei welchen Zahlenbereichen von $x$ und $a$ das Problem auftritt.


Anstelle von einer Fehlermeldung soll die Funktion nun einen Record vom Typ undefiniert zurückgeben:

(define-record undefiniert
  make-undefiniert)

(b) Ändere die Funktion x-hoch-a so ab, dass diese bei einem definierten y-Wert den entsprechenden Wert zurückgibt und bei einem undefinierten y-Wert einen Record vom Typ undefiniert.
Überprüfe deine Lösung mit den beiden nachfolgenden sowie den bereits vorhandenen Testfällen.

(check-expect (x-hoch-a 0 -3) (make-undefiniert))
(check-expect (x-hoch-a 0 -17) (make-undefiniert))

Suche

v
100.137.2.4.1.3 Übungen: Gemischte Daten
Kopieren durch Anklicken

Rückmeldung geben