From 758f40ea1f40abd3219349a6e8e0b7efb07f7165 Mon Sep 17 00:00:00 2001 From: Jim Martens Date: Thu, 5 Dec 2013 17:52:41 +0100 Subject: [PATCH] SE3-6: Blatt 6 bearbeitet. * Weihnachtsbild muss eventuell noch verbessert werden. --- ...artens_Britta-2noack_Jan-Simon-0giesel.rkt | 109 ++++++++++++++++++ 1 file changed, 109 insertions(+) create mode 100644 se3/G08_B06_Jim-2martens_Britta-2noack_Jan-Simon-0giesel.rkt diff --git a/se3/G08_B06_Jim-2martens_Britta-2noack_Jan-Simon-0giesel.rkt b/se3/G08_B06_Jim-2martens_Britta-2noack_Jan-Simon-0giesel.rkt new file mode 100644 index 0000000..1e95264 --- /dev/null +++ b/se3/G08_B06_Jim-2martens_Britta-2noack_Jan-Simon-0giesel.rkt @@ -0,0 +1,109 @@ +#lang racket + +#| +SE 3 Funktional Blatt 6 +Abgebende: Jim 2martens, Britta 2noack, Jan-Simon 0giesel +|# + +; 1) +; +; kopfstueck ist eine lineare Rekursion, da pro else-Aufruf, +; die Funktion nur einmal sich selbst aufruft. +; Daher kann kopfstueck keine Baumrekursion sein. +; kopfstueck wird auch nicht als Argument für kopfstueck verwendet, +; womit auch geschachtelte Rekursion mit nein zu beantworten ist. +; Da sich kopfstueck direkt rekursiv aufruft, ist es eine direkte +; und keine indirekte Rekursion. + +; endstueck ist ebenso linear, keine Baumrekursion, keine geschachtelte +; Rekursion, eine direkte Rekursion und keine indirekte Rekursion. + +; merge ist eine lineare Rekursion, da pro Fallunterscheidung +; merge nur einmal aufgerufen wird. Demnach ist es keine Baumrekursion. +; Es ist ebenso wenig eine geschachtelte Rekursion, da es sich selbst +; nicht als Argument übergeben wird. +; merge ist eine direkte Rekursion, da es sich direkt aufruft. +; Deswegen ist merge keine indirekte Rekursion. + +; merge-sort ist keine lineare Rekursion, da es in jeder Fallunterscheidung +; zweimal aufgerufen wird. merge-sort ist keine geschachtelte Rekursion, +; da es sich selbst nicht als Argument übergeben wird. +; merge-sort ist eine direkte Rekursion, da es sich direkt aufruft. +; Demnach ist merge-sort keine indirekte Rekursion. + +; ___________________________________________________________________________________________________________________ +; | | lineare Rekursion | Baumrekursion | geschachtelte Rekursion | direkte Rekursion | indirekte Rekursion| +; |____________|___________________|_______________|_________________________|___________________|____________________| +; | kopfstueck | ja | nein | nein | ja | nein | +; | endstueck | ja | nein | nein | ja | nein | +; | merge | ja | nein | nein | ja | nein | +; | merge-sort | nein | ja | nein | ja | nein | +; -------------------------------------------------------------------------------------------------------------------- + +; 2) +(require 2htdp/image) +(require lang/posn) + +; erzeugt einen Tannenbaum mit n Ebenen +(define (tannenbaum n) + (letrec ((leaves (λ (width x result) + (if [= x 0] + result + ; rekursiver Aufruf, um die nächsthöhere Ebene zu generieren + (leaves + (/ width 1.5) + (- x 1) + (cons + ; erzeugt ein Trapez, welches als eine Ebene fungiert + (polygon + (list (make-posn 0 0) + (make-posn width 0) + (make-posn (+ (/ width 2) (* (/ width 2) 0.2)) (* -1 (/ width 4))) + (make-posn (- (/ width 2) (* (/ width 2) 0.2)) (* -1 (/ width 4)))) + "solid" + "darkgreen") + result))) + ))) + ; Anwenden von above/align auf alle Blätter, den Stamm und den Stern + (apply above/align + (cons "center" + (cons (star-polygon 20 5 2 "solid" "gold") + (leaves 180 n `(,(rectangle 30 30 "solid" "brown") . ())) + ))) + + )) + +; erzeugt einen Monitor +(define monitor (above/align + "center" + (overlay + (text "cout << 0x2a;" 24 "red") + (rectangle 160 90 "solid" "blue") + (rectangle 165 95 "solid" "gray") + ) + (polygon + (list (make-posn 0 0) + (make-posn 80 0) + (make-posn 55 -10) + (make-posn 25 -10)) + "solid" + "gray") + )) +; erzeugt ein Star Citizen Poster +(define scPoster (overlay + (above + (text "Star Citizen" 34 "gold") + (text "Squadron 42" 28 "gold")) + (rectangle 185 85 "solid" "royalblue") + (rectangle 200 100 "solid" "black"))) + +; linker Tannenbaum +(display (tannenbaum 10)) +; Monitor +(display monitor) +; Abstand zwischen Monitor und Poster +(display " ") +; Star Citizen Poster +(display scPoster) +; rechter Tannenbaum +(display (tannenbaum 10)) \ No newline at end of file