;;; Konstruktion, Vorlesung vom 24.10.2000 ;;; K1 Einfache und zusammengesetzte Ausdrücke ; DrScheme ; 1. Fenster: Programmeditor ; 2. Fenster: REPL (read-evaluate-print loop) ; Language-Level: Advanced Student ; Literale 42 ; vordefinierte Namen pi + ; Kombinationen: ( ... ) (+ 17 4) (* 2 (+ 17 4)) ; => Leerzeichen, Zeilenumbrüche, Kommentare ; Werte benennen (define answer 42) answer ; Erlaubte Namen (define duftmarke (* 8 4)) ; Quadrieren (define x 4) (* x x) ; Verbesserung: Abstraktion von `x' ; Parametrisierte Formel (lambda (x) (* x x)) ; Verwendung: als Operator ((lambda (x) (* x x)) 4) ; Benennung (define square (lambda (x) (* x x))) (square 4) (square 13) ; Nächste Aufgabe: Fläche eines Kreises (define circle-area (lambda (radius) (* pi (square radius)))) (circle-area 2) ; Nächste Aufgabe: Rauminhalt eines Zylinders ; cylinder-volume : number number -> number ; (cylinder-volume radius height) liefert den Rauminhalt eines ; Zylinders mit Radius radius und Höhe height. ; (cylinder-volume 1 1) => pi (define cylinder-volume (lambda (radius height) (* (circle-area radius) height))) (cylinder-volume 5 4) ; Ablauf einer Berechnung (cylinder-volume 5 4) ((lambda (radius height) (* (circle-area radius) height)) 5 4) (* (circle-area 5) 4) (* ((lambda (radius) (* pi (square radius))) 5) 4) (* (* pi (square 5)) 4) (* (* 3.141592653589793 ((lambda (x) (* x x)) 5)) 4) (* (* 3.141592653589793 (* 5 5)) 4) (* (* 3.141592653589793 25) 4) (* 78.539816339744825 4) 314.1592653589793 ; Code zum Parkplatzproblem (define cars-in-parking-lot (lambda (nr-of-vehicles nr-of-wheels) (/ (- nr-of-vehicles (* nr-of-wheels 2)) 2))) ; Wahrheitswerte (= 17 815) (< 0 1) ; bedingte Ausdrücke ; maximum : number number -> number ; / x falls x >= y ; (maximum x y) = < ; \ y falls x < y (define maximum (lambda (x y) (if (>= x y) x y))) (maximum 2 3)