Wenn Sie nicht in einer Ubungsgruppe sind, lösen Sie diese Aufgaben zur Vorbereitung auf den ersten Test.
(+ (* 2 4) (- 4 6)) (* (+ 2 2) (/ (* (+ 3 5) (/ 30 10)) 2))) (- 9) (- 9 1 2) (= (+ (* 9 9) (* 12 12)) (* 15 15))Schreiben Sie folgende Ausdrücke in Racket und werten Sie sie durch Racket aus (
*
steht fuer die Multiplikation):
3+(4*5) (3+4)*5 3+4*5*6+7-8
Gegeben sind die Funktionen
(define (f x) (- 2 x)) (define (g x) (* 3 (f (* x 2))))Berechnen Sie das Ergebnis folgender Ausdrücke zuerst ohne Zuhilfenahme von Racket, und überprüfen Sie es dann mit Racket:
(f 5) (g 3) (g2 3)Berechnen Sie, welches Ergebnis Aufrufe von f, g und g2 ergeben, wenn Sie die letzte Ziffer ihrer Matrikelnummer als Argument übergeben.
Schreiben Sie eine Funktion schilling-euro
, die aus einem
gegebenen Schilling-Wert die Menge an Euro berechnet (muss nicht auf
zwei Nachkommastellen gerundet werden), und eine
Funktion euro-schilling
für die umgekehrte Berechnung.
Schreiben Sie eine Funktion (ringflaeche1 raussen
rinnen)
, die die Fläche eines Rings mit dem Aussenradius
raussen und dem Radius des freibleibenden Kreises rinnen berechnet.
Schreiben Sie eine Funktion (ringflaeche2 radius breite)
,
bei der die Masse des Rings durch einen Radius radius
angegeben sind, um den herum auf beiden Seiten
eine jeweils breite
/2 breite Fläche bedeckt ist.
(define (foo x) (if (< x 2) (* x x) (+ x 3)))Berechnen Sie das Ergebnis folgender Ausdrücke zuerst ohne Zuhilfenahme von Racket, und überprüfen Sie es dann mit Racket:
(foo 0) (foo 1) (foo 2) (foo 3)Schreiben Sie eine Funktion
(myabs x)
, die den
Absolutwert von x zurückgibt. Schreiben Sie eine Funktion (mysgn x),
die für positive Werte 1, für negative Werte -1, und für 0 0
zurückgibt. Rufen sie dabei nicht abs oder sgn auf.
(define (bar x y) (if (= x 0) 0 (+ x (* y (bar (- x 1) y)))))Berechnen Sie das Ergebnis folgender Ausdrücke zuerst ohne Zuhilfenahme von Racket, und überprüfen Sie es dann mit Racket:
(bar 0 10) (bar 1 10) (bar 2 10) (bar 3 10)Schreiben Sie eine Funktion
(fact n)
, die n!, also die
Faktorielle von n berechnet. Schreiben Sie eine Funktion (ggt a
b)
, die den größten gemeinsamen Teiler mit dem Euklidischen
Algorithmus berechnet.
(ringflaeche2 11 4) (fact 5) (ggt 42 18) (ggt 18 42)Gegeben ist die Funktion
(define (tarai x y z) (if (< y x) (tarai (tarai (- x 1) y z) (tarai (- y 1) z x) (tarai (- z 1) x y)) y))Zeichnen Sie den Aufrufbaum des Aufrufs
(tarai 3 2 1)
.
i! * z = n!
Schreiben Sie diese Variante von fact als verschachtelte Funktion.
Schreiben Sie eine andere Variante von fact, die eine verschachtelte Hilfsfunktion (g j z) aufruft, mit der Invariante:
z = j!
(define (sum f n) (if (= n 0) 0 (+ (f n) (sum f (- n 1))))) (define (prod f n) (if (= n 0) 1 (* (f n) (prod f (- n 1)))))Definieren Sie fact als Aufruf von prod mit passenden Parametern. Definieren Sie hoch als Aufruf von prod mit passenden Parametern.
Definieren Sie eine Funktion acc
, mit der man sum und
prod nachbilden kann, indem man sie mit entsprechenden Parametern
aufruft. Definieren Sie sumqu, fact, und hoch mit hilfe von acc.