;; Die ersten drei Zeilen dieser Datei wurden von DrRacket eingefügt. Sie enthalten Metadaten ;; über die Sprachebene dieser Datei in einer Form, die DrRacket verarbeiten kann. #reader(lib "DMdA-beginner-reader.ss" "deinprogramm")((modname sqroot) (read-case-sensitive #f) (teachpacks ()) (deinprogramm-settings #(#f write repeating-decimal #f #t none explicit #f ()))) ; Berechne eine Näherung der Quadratwurzel (: sq-root (real -> real)) (check-within (sq-root 0) 0 0.1) (check-within (sq-root 4) 2 0.1) (check-within (sq-root 100) 10 0.1) (define sq-root (lambda (x) (sqrt-iter 1 x))) ; Iteration: berechne aus gegebenem Schätzwert eine bessere Schätzung (: sqrt-iter (real real -> real)) (define sqrt-iter (lambda (y x) (if (good-enough? y x) y (sqrt-iter (improve y x) x)))) ; Berechne einen verbesserten Schätzwert (: improve (real real -> real)) (define improve (lambda (y x) (average y (/ x y)))) ; Berechne den Mittelwert zweier Zahlen: (: average (real real -> real)) (define average (lambda (x y) (/ (+ x y) 2))) ; Ist eine Näherung ausreichend? (: good-enough? (real real -> boolean)) (define good-enough? (lambda (y x) (< (abs (- (square y) x)) precision))) ; Genauigkeit der Näherungsberechnung (: precision real) (define precision 0.00001) (define square (lambda (x) (* x x)))