Praktikum 3

  1. Schreiben Sie analog zur Prozedur "summe" eine Prozedur "produkt", die das Produkt der Werte einer Funktion an bestimmten Punkten eines gegebenen Wertebereichs liefert. Schreiben Sie die Prozedur einmal rekursiv und einmal iterativ. Zeigen Sie, wie sich die Fakultät mit Hilfe von "produkt" definieren läßt. Berechnen Sie außerdem eine Näherung für die Zahl pi nach der Formel pi/4 = (2*4*4*6*6*8*...) / (3*3*5*5*7*7*...)
  2. Zeigen Sie, daß "summe" und "produkt" beides Sonderfälle einer noch allgemeineren Schreibweise sind, die "akkumulator" genannt wird und eine Menge von Termen mittels einer allgemeinen Akkumulatorfunktion zusammenfaßt:
    (akkumulator kombinierer null-groesse term a naechstes b)
    "Akkumulator" hat als Argumente dieselben Angaben für den Term und den Wertebereich wie "summe" und "produkt", dazu eine Prozedur "kombinierer" (mit zwei Argumenten), die bestimmt, wie der aktuelle Term mit der Akkumulation der vorhergehenden Terme kombiniert werden soll, und eine "null-groesse", die angibt, welcher Anfangswert verwendet werden soll, wenn keine Terme mehr vorhanden sind. Schreiben Sie "akkumulator" in rekursiver und iterativer Form und zeigen Sie, wie sich "summe" und "produkt" als einfache Aufrufe von "akkumulator" definieren lassen.
  3. Die Prozedur f sei definiert mit
    (define (f g) (g 2))
    . Dann erhalten wir
    ==> (f quadrat)
    4
    
    ==> (f (lambda (z) (* z (+ z 1))))
    6
    Was passiert, wenn wir (f f) auswerten lassen? Genaue Erklärung!
  4. Wenn f eine numerische Funktion und n eine positive ganze Zahl ist, dann können wir die n-fach wiederholte Anwendung von f bilden, die als Funktion von x mit dem Wert f(f(...(f(x))...)) definiert ist. Wenn z. B. f(x) = x+1 ist, dann ist die n-fach wiederholte Anwendung von f die Funktion g(x) = x+n. Wenn z. B. f die Quadrierung ist, dann ist g die 2-hoch-n-te Potenzierung. Schreiben Sie eine Prozedur "n-fach" mit einer Prozedur f und einer positiven ganzen Zahl n als Parameter, die sich z. B. folgendermaßen verwenden läßt:
    ==> ((n-fach quadrat 3) 5)
    390625