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.