Informatik 1 - Mitschriften von Klaas Ole Kürtz
Informatik 1 - Mitschriften von Klaas Ole Kürtz Informatik 1 - Mitschriften von Klaas Ole Kürtz
2.5 Prozeduren und Prozesse • Prozeduren: Muster zur Berechnung; Prozesse: dynamischer Rechenablauf, gesteuert durch Prozeduren; Frage: Ressourcenverbrauch (Speicher, Zeit) von Prozessen? 2.5.1 Iteration, Rekursion etc. • linearer rekursiver Prozeß – Beispiel Fakultät: n! = n · (n − 1) · (n − 2) · ...2 · 1 = n · (n − 1)! (falls n > 1). – (define (fak n) (if (= n 1) 1 (* n (fak (- n 1))))) – Berechnung von (fak 4): (fak 4) (* 4 (fak 3)) (* 4 (* 3 (fak 2))) (* 4 (* 3 (* 2 (fak 1)))) (* 4 (* 3 (* 2 1))) (* 4 (* 3 2)) (* 4 6) 24 – Beobachtung: »verzögert« Multiplikation • linear iterativer Prozeß – Beispiel Fakultät: Multipliziere 1*2, das Ergebnis mit 3, das Ergebnis mit 4, ..., das Ergebnis mit n. – Parameter in jedem Schritt: Zähler (1 bis n), Produkt (1 bis n!), n für den Abbruch – (define (fak n) (fak-iter 1 1 n)) (define (fak-iter p z max) ........(if (> z max) p ......................(fak-iter (* p z) (+ z 1) max))) – Berechnung von (fak 4): (fak 4) (fak-iter 1 1 4) (fak-iter 1 2 4) 12
(fak-iter 2 3 4) (fak-iter 6 4 4) (fak-iter 24 5 4) 24 – Beobachtung: eine feste Anzahl von Variablen beschreibt vololständig den Zustand eines jeden Schrittes (Zustandsvariablen) ⇒ beide Prozesse haben von der Größenordnung her die gleiche Länge (linearer Prozess); in der ersten Version ist der Platzbedarf linear zur Eingabe, Platzbedarf ist bei der zweiten Version konstant. ⊗ rekursiver Prozeß ≠ rekursive Prozedur! • Baumrekursion – Beispiel Fibonacci-Zahlen: Jede Zahl ist die Summe der beiden vorhergehenden (0 1 1 2 3 5 8 13 21 usw.) – fib(n) = fib(n − 1) + fib(n − 2), fib(0) = 0 ∧ fib(1) = 1) – (define (fib n) (cond ((= n 0) 0) ((= n 1) 1) (else (+ (fib (- n 1)) (fib (- n 2)))))) – Problem: Redundanz ((fib 2) doppelt berechnet)! Damit: schlechte Laufzeit, letztendlich werden fib(n) Einsen addiert, damit eine exponentielle Laufzeit – Abschätzung fib(n) = [ ( √ ) n 1+ 5 ] 2 √ 5 (mit Gaußklammer [.]). ⇒ Gefahr von Ineffizienz, trotzdem häufig geeignet, insbesondere bei sog. hierachischen Datenstrukturen) • iterativer Prozeß – Schrittweises Aufsummieren der Zahlen – Parameter: a, b (letzte und vorletzte Zahl) – in jedem Schritt: a = a + b und gleichzeitig b = a – (define (fib n) (fib-iter 1 0 n)) (define (fib-iter a b z) (if (= z 0) .............................0 .............................(fib-iter (+ a b) a (- z 1)))) – lineare Laufzeit, konstanter Speicherbedarf ⇒ Iteration ist effizient, benötigt genaue Überlegungen zu den Zustandsvariablen; Rekursion ist mit der Gefahr der Ineffizienz behaftet, aber natürlichere Formulierung 13
- Seite 1 und 2: Informatik 1 ((lambda () (begin (di
- Seite 3 und 4: 3.2.3 Beispiel: Symbolisches Differ
- Seite 5 und 6: 1 Grundbegriffe 1.1 Grundbegriffe
- Seite 7 und 8: • Präfix-Notation: ( ) Vorteile
- Seite 9 und 10: 2.2 Programmauswertung mit dem Subs
- Seite 11 und 12: • üblich: Position ≈ Folge nat
- Seite 13 und 14: 2. Auswertung in Normalordnung: ers
- Seite 15: • top-down- bzw. -bottom-up-Entwu
- Seite 19 und 20: Zeit: O(n), Speicher O(1) • schne
- Seite 21 und 22: 2.5.4 Prozeduren höherer Ordnung B
- Seite 23 und 24: (define (suche f a b) (let ((x (mit
- Seite 25 und 26: (define (+rat x y) (konstr-rat (+ (
- Seite 27 und 28: • einer Signatur Σ (Operationen
- Seite 29 und 30: (cdr ’(a b c)) (b c) Notwendig wi
- Seite 31 und 32: (else (list ’+ a1 a2)))) (define
- Seite 33 und 34: 1. x = W urzel(m): fertig 2. x < W
- Seite 35 und 36: • Codierung: Beschrift Söhne imm
- Seite 37 und 38: (define (kontr-rechteck x y) (cons
- Seite 39 und 40: (define (real-teil obj) (op-ausfueh
- Seite 41 und 42: (if (eq? tq (typ arg2)) (let ((proz
- Seite 43 und 44: • Änderungen in op-ausfuehren-2:
- Seite 45 und 46: • Variable in jedem Term gleich,
- Seite 47 und 48: Bisherige Lösung: globale, veränd
- Seite 49 und 50: kann (+ 20 20) oder (+ 20 130) lief
- Seite 51 und 52: Ein Cesaro-Test mit zufall-aktuell
- Seite 53 und 54: Beispiel: - Werte a aus bezüglich
- Seite 55 und 56: Umgebungsmodell erklärt Effekt lok
- Seite 57 und 58: (define (cons x y) (define (set-x!
- Seite 59 und 60: Kopf Assoziationsliste ✲ ✲
- Seite 61 und 62: • Komplexerer Schaltungen: z.B. H
- Seite 63 und 64: ∗ (hinzufuegen-plan! zeit vorgang
- Seite 65 und 66: • Falls Konnektor Wert erhält: W
2.5 Prozeduren und Prozesse<br />
• Prozeduren: Muster zur Berechnung; Prozesse: dynamischer Rechenablauf,<br />
gesteuert durch Prozeduren; Frage: Ressourcenverbrauch (Speicher,<br />
Zeit) <strong>von</strong> Prozessen?<br />
2.5.1 Iteration, Rekursion etc.<br />
• linearer rekursiver Prozeß<br />
– Beispiel Fakultät: n! = n · (n − 1) · (n − 2) · ...2 · 1 = n · (n − 1)!<br />
(falls n > 1).<br />
– (define (fak n) (if (= n 1) 1 (* n (fak (- n 1)))))<br />
– Berechnung <strong>von</strong> (fak 4):<br />
(fak 4)<br />
(* 4 (fak 3))<br />
(* 4 (* 3 (fak 2)))<br />
(* 4 (* 3 (* 2 (fak 1))))<br />
(* 4 (* 3 (* 2 1)))<br />
(* 4 (* 3 2))<br />
(* 4 6)<br />
24<br />
– Beobachtung: »verzögert« Multiplikation<br />
• linear iterativer Prozeß<br />
– Beispiel Fakultät: Multipliziere 1*2, das Ergebnis mit 3, das Ergebnis<br />
mit 4, ..., das Ergebnis mit n.<br />
– Parameter in jedem Schritt: Zähler (1 bis n), Produkt (1 bis n!), n<br />
für den Abbruch<br />
– (define (fak n) (fak-iter 1 1 n))<br />
(define (fak-iter p z max)<br />
........(if (> z max) p<br />
......................(fak-iter (* p z) (+ z 1) max)))<br />
– Berechnung <strong>von</strong> (fak 4):<br />
(fak 4)<br />
(fak-iter 1 1 4)<br />
(fak-iter 1 2 4)<br />
12