Informatik 1 - Mitschriften von Klaas Ole Kürtz
Informatik 1 - Mitschriften von Klaas Ole Kürtz
Informatik 1 - Mitschriften von Klaas Ole Kürtz
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
(define (abheben betrag)<br />
(if (>= kontostand betrag)<br />
(begin (set! kontostand (- kontostand betrag))<br />
kontostand)<br />
"Deckung nicht ausreichend!"))<br />
(define (einzahlen betrag)<br />
(set! kontostand (+ kontostand betrag))<br />
kontostand)<br />
(define (zuteilen m)<br />
(cond ((eq? m ’abheben) abheben)<br />
((eq? m ’einzahlen) einzahlen)<br />
(else (error "Falsche Nachricht!"))))<br />
zuteilen)<br />
>(define konto (kontstr-konto 100))<br />
>((kto ’abheben) 70)<br />
30<br />
Probleme der Zuweisung: Substitutionsmodell:<br />
• ersetze Variablen durch ihre Werte<br />
• ersetze Kombinationen durch ausgerechneten Wert<br />
Beispiel:<br />
• Nach Aufruf <strong>von</strong> (define kontostand 130) steht kontostand für den<br />
Wert 130.<br />
⇒ Vorkommen <strong>von</strong> kontostand ersetzen durch 130.<br />
⇒ (+ e kontostand) und (+ e 130) liefern gleiche Werte<br />
! Jedoch: (+ (abheben 110) kontostand) liefert (+ 20 20)...<br />
• Somit: bei Benutzung <strong>von</strong> set!:<br />
Variablen sind nicht Namen für Objekte oder Werte,<br />
sondern Namen für Orte, wo Werte gespeichert werden!<br />
⇒ komplexeres Auswertungsmodell<br />
⇒ Auswertungsreihenfolge relevant:<br />
(+ (abheben 110) kontostand)<br />
44