28.03.2014 Aufrufe

Informatik 1 - Mitschriften von Klaas Ole Kürtz

Informatik 1 - Mitschriften von Klaas Ole Kürtz

Informatik 1 - Mitschriften von Klaas Ole Kürtz

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!