Programmierparadigmen



Ähnliche Dokumente
Gliederung. Programmierparadigmen. Sprachmittel in SCHEME. Objekte: Motivation. Objekte in Scheme

Informatik 2 Labor 2 Programmieren in MATLAB Georg Richter

Teile und Herrsche Teil 2

Unterrichtsmaterialien in digitaler und in gedruckter Form. Auszug aus:

Zeichen bei Zahlen entschlüsseln

Erfahrungen mit Hartz IV- Empfängern

Direktes Versenden von Listen, z.b. Die Liste der Personalkosten (zpkost)

Dokumentation für die software für zahnärzte der procedia GmbH Onlinedokumentation

Informationsblatt Induktionsbeweis

Objektorientierte Programmierung

SCHRITT 1: Öffnen des Bildes und Auswahl der Option»Drucken«im Menü»Datei«...2. SCHRITT 2: Angeben des Papierformat im Dialog»Drucklayout«...

Java Kurs für Anfänger Einheit 5 Methoden

Excel Funktionen durch eigene Funktionen erweitern.

Was meinen die Leute eigentlich mit: Grexit?

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom b

Sichere Anleitung Zertifikate / Schlüssel für Kunden der Sparkasse Germersheim-Kandel. Sichere . der

Java: Vererbung. Teil 3: super()

1. Man schreibe die folgenden Aussagen jeweils in einen normalen Satz um. Zum Beispiel kann man die Aussage:

Lehrer: Einschreibemethoden

Whitepaper. Produkt: combit Relationship Manager 7. combit Relationship Manager -rückläufer Script. combit GmbH Untere Laube Konstanz

Algorithmische Kryptographie

Sich einen eigenen Blog anzulegen, ist gar nicht so schwer. Es gibt verschiedene Anbieter. ist einer davon.

Grammatiken. Einführung

LISP. Eine Einführung

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf Seite 1 von 22

1 Mathematische Grundlagen

Semantik von Formeln und Sequenzen

Pädagogische Hochschule Thurgau. Lehre Weiterbildung Forschung

Die Rückgabe kann über folgende, von uns getestete Programme / Apps vorgenommen werden: Adobe Digital Editions Sony Reader for PC Bluefire Reader

Der Kontowecker: Einrichtung

Leichte-Sprache-Bilder

Grundlagen von Python

Professionelle Seminare im Bereich MS-Office

Stellvertretenden Genehmiger verwalten. Tipps & Tricks

der Eingabe! Haben Sie das Ergebnis? Auf diesen schwarzen Punkt kommen wir noch zu sprechen.

Anwendungsbeispiele Buchhaltung

Primzahlen und RSA-Verschlüsselung

Netzwerkeinstellungen unter Mac OS X

TYPO3 (Facett.Net Backend) 33

a n auf Konvergenz. Berechnen der ersten paar Folgenglieder liefert:

Monatstreff für Menschen ab 50 Temporäre Dateien / Browserverlauf löschen / Cookies

Bauteilattribute als Sachdaten anzeigen

Übung - Konfigurieren einer Windows 7-Firewall

Hilfe zur Urlaubsplanung und Zeiterfassung

Gesucht und Gefunden: Die Funktionsweise einer Suchmaschine

Fachdidaktik der Informatik Jörg Depner, Kathrin Gaißer

Programmieren II Vererbung. Programmieren II Vererbung. Programmieren II Vererbung. Programmieren II Vererbung. Einleitende Bemerkungen

Ordner Berechtigung vergeben Zugriffsrechte unter Windows einrichten

Agentur für Werbung & Internet. Schritt für Schritt: -Konfiguration mit Apple Mail

Installation des Add-Ins für Lineare Algebra in Microsoft Excel

Mindestanforderungen an. Inland ECDIS Geräte im Informationsmodus und vergleichbare Kartenanzeigegeräte. zur Nutzung von Inland AIS Daten

Fakultät Angewandte Informatik Lehrprofessur für Informatik

Wurzeln als Potenzen mit gebrochenen Exponenten. Vorkurs, Mathematik

Einführung in die Programmierung

Anlegen eines Speicherbereichs mit DB, DW eleganter in Kombination mit EQU, Timer-Interrupt

Benutzerhandbuch - Elterliche Kontrolle

Online-Prüfungs-ABC. ABC Vertriebsberatung GmbH Bahnhofstraße Neckargemünd

Grundbegriffe der Informatik

Übung 1. Explorer. Paint. Paint. Explorer

Übung - Datensicherung und Wiederherstellung in Windows Vista

Einrichten eines POP-Mailkontos unter Thunderbird Mail DE:

Zahlen und das Hüten von Geheimnissen (G. Wiese, 23. April 2009)

Klausurteilnehmer. Wichtige Hinweise. Note: Klausur Informatik Programmierung, Seite 1 von 8 HS OWL, FB 7, Malte Wattenberg.

Einführung in Eclipse und Java

P&P Software - Adressexport an Outlook 05/29/16 14:44:26

Was machen wir heute? Methodische- und Praktische Grundlagen der Informatik 3 Softwaretechnik WS Formale Spezifikation(ssprachen)

Anleitung für den Zugriff auf Mitgliederdateien der AG-KiM

Wie Sie mit Mastern arbeiten

Erweiterung der Aufgabe. Die Notenberechnung soll nicht nur für einen Schüler, sondern für bis zu 35 Schüler gehen:

Zählen von Objekten einer bestimmten Klasse

Persönliches Adressbuch

OSF Integrator für Btracking und Salesforce Anleitung für die Nutzer

So erstellen Sie nützliche Beschreibungen zu Ihren Tradingdaten

Fachhochschule Deggendorf Platzziffer:...

Die Beschreibung bezieht sich auf die Version Dreamweaver 4.0. In der Version MX ist die Sitedefinition leicht geändert worden.

Das sogenannte Beamen ist auch in EEP möglich ohne das Zusatzprogramm Beamer. Zwar etwas umständlicher aber es funktioniert

Professionelle Seminare im Bereich MS-Office

ANSPRECHPARTNER. Film Mathematik statt Rechnen (Quelle: Hochschule Merseburg) Prof. Dr. Axel Kilian Fachbereich Informatik und Kommunikationssysteme

Benutzerkonto unter Windows 2000

Internet Explorer Version 6

Einführung in. Logische Schaltungen

Anleitung OpenCms 8 Webformular Auswertung

Java Enterprise Architekturen Willkommen in der Realität

SEPA-Anleitung zum Release 3.09

1. Adressen für den Serienversand (Briefe Katalogdruck Werbung/Anfrage ) auswählen. Die Auswahl kann gespeichert werden.

Die Bundes-Zentrale für politische Bildung stellt sich vor

Gesicherte Prozeduren

Objektbasierte Entwicklung

FRAGE 39. Gründe, aus denen die Rechte von Patentinhabern beschränkt werden können

3. Stored Procedures und PL/SQL

SWE5 Übungen zu Software-Engineering

BEO-SANKTIONSPRÜFUNG Eine Einführung zum Thema Sanktionsprüfung und eine Übersicht zur BEO-Lösung.

Wie optimiert man die Werbungserkennung von Ad- Detective?

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

teischl.com Software Design & Services e.u. office@teischl.com

my.ohm Content Services Autorenansicht Rechte

Assoziation und Aggregation

EINE PLATTFORM

Statuten in leichter Sprache

How to do? Projekte - Zeiterfassung

Transkript:

Programmierparadigmen D. Rösner Institut für Wissens- und Sprachverarbeitung Fakultät für Informatik Otto-von-Guericke Universität Magdeburg Sommer 2011, 20. Juni 2011, c 2011 D.Rösner D. Rösner PGP 2011... 1

Gliederung 1 Funktionales Programmieren Einführung Sprachmittel Veränderbare Listenstrukturen D. Rösner PGP 2011... 2

Objekte: Motivation Motivation beim Modellieren zu implementierender Systeme sollte man sich an den Objekten des zu modellierenden Weltausschnitts orientieren Objektorientierung ein Aspekt: Objekte bleiben erhalten, auch wenn sich einzelne Werte ihrer Eigenschaften verändern Beispiel: Konto kann unterschiedliche Kontostände haben s.a. [AS96], Ch. 3 D. Rösner PGP 2011... 4

Sprachmittel in SCHEME (set! < name > < wert >) Semantik: nach Auswertung dieses S-Ausdruck ist der Wert von < name > der aus dem Ausdruck < wert > erhaltene Wert mit der Zuweisung set! ist der rein funktionale Teil von Scheme verlassen Spezialformen wie set! heissen auch Destruktoren s.a. [AS96], Ch. 3.1 D. Rösner PGP 2011... 5

Sprachmittel in SCHEME Modellierung eines Bankkontos (zu simpler Ansatz) (define balance 100) (define (withdraw amount) (if (>= balance amount) (begin (set! balance (- balance amount)) balance) "Kontostand nicht ausreichend")) (beachte: Scheme-Version R5RS); s.a. [AS96], Ch. 3.1 D. Rösner PGP 2011... 6

Sprachmittel in SCHEME Modellierung eines Bankkontos (zu simpler Ansatz) mögliche Interaktion > balance 100 > (withdraw 25) 75 > (withdraw 25) 50 > (withdraw 60) "Kontostand nicht ausreichend" > balance 50 s.a. [AS96], Ch. 3.1 D. Rösner PGP 2011... 7

Sprachmittel in SCHEME Modellierung eines Bankkontos (zu simpler Ansatz) beachte: withdraw ist keine mathematische Funktion mehr Seiteneffekte auf globale Variable keine Kapselung Frage: wie mehrere Bankkonten behandeln? s.a. [AS96], Ch. 3.1 D. Rösner PGP 2011... 8

Objekte in SCHEME Modellierung eines Bankkontos hier balance gekapselt (information hiding) (define (make-withdraw balance) (lambda (amount) (if (>= balance amount) (begin (set! balance (- balance amount)) balance) "Kontostand nicht ausreichend"))) s.a. [AS96], Ch. 3.1.1 D. Rösner PGP 2011... 9

Objekte in SCHEME Modellierung von Bankkonten mögliche Interaktion: > (define w1 (make-withdraw 100)) > (define w2 (make-withdraw 100)) > (w1 50) 50 > (w2 70) 30 > (w2 40) "Kontostand nicht ausreichend" > (w1 40) 10 s.a. [AS96], Ch. 3 D. Rösner PGP 2011... 10

Objekte in SCHEME Bankkonto: Variante mit Abhebungen und Einzahlungen (define (make-account balance) (define (withdraw amount) (if (>= balance amount) (begin (set! balance (- balance amount)) balance) (display "Kontostand nicht ausreichend"))) (define (deposit amount) (set! balance (+ balance amount)) balance) (define (dispatch m) (cond ((eq? m withdraw) withdraw) ((eq? m deposit) deposit) (else (begin (display "Nachricht únbekannt -- MAKE-ACCOUNT: ") (write m))))) dispatch ) D. Rösner PGP 2011... 11

Objekte in SCHEME Bankkonto: realistischere Variante mit Abhebungen und Einzahlungen dispatch repräsentiert das Konto der Aufruf der beiden Methoden erfolgt im Stil des Nachrichten übergeben (engl. message passing) es können problemlos unterschiedliche Instanzen gebildet werden D. Rösner PGP 2011... 12

Objekte in SCHEME Modellierung von Bankkonten mögliche Interaktion: > (define acc1 (make-account 100)) > ((acc1 withdraw) 50) 50 > ((acc1 withdraw) 60) Kontostand nicht ausreichend > ((acc1 deposit) 40) 90 > ((acc1 withdraw) 60) 30 s.a. [AS96], Ch. 3.1.1 D. Rösner PGP 2011... 13

Objekte in SCHEME die Verwendung von Konsequenzen set! hat weitreichende das Substitutionsmodell ist nicht mehr anwendbar um mit Objekten und Zuweisung arbeiten zu können, reichen einfache Modelle mit hübschen mathematischen Eigenschaften nicht aus s.a. [AS96], Ch. 3.1.2 D. Rösner PGP 2011... 14

Objekte in SCHEME Kontrast: (define (make-simplified-withdraw balance) (lambda (amount) (set! balance (- balance amount)) balance)) aber: (define (make-decrementer balance) (lambda (amount) (- balance amount))) s.a. [AS96], Ch. 3.1.2 D. Rösner PGP 2011... 15

Objekte in SCHEME auf make-decrementer ist das Substitutionsmodell anwendbar Beispiel: ((make-decrementer 25) 20) ((lambda (amount)(- 25 amount)) 20) (- 25 20) 5 s.a. [AS96], Ch. 3.1.2 D. Rösner PGP 2011... 16

Objekte in SCHEME Anwendung des Substitutionsmodell auf make-simplified-withdraw führt zu > ((make-simplified-withdraw 25) 20) > (lambda (amount) (set! balance (- 25 amount)) 25) 20) > (set! balance (- 25 20)) 25 D. Rösner PGP 2011... 17

Objekte in SCHEME um Substitution anwenden zu können, dürfen Symbole lediglich als Namen für Werte stehen wird set! und die Idee eingeführt, dass der Wert einer Variable sich ändern kann, kann eine Variable nicht mehr einfach nur ein Name sein eine Variable verweist dann auf einen Platz, an dem ein Wert gespeichert (und verändert) werden kann s.a. [AS96], Ch. 3.1.2 D. Rösner PGP 2011... 18

Veränderbare Listenstrukturen grundlegende Operationen für Konstruktionen und Selektion in Paare/Listen: cons,car, cdr list, append Modifikation der Listenstruktur damit nicht möglich zusätzliche Mutatoren für Paare: set-car!, set-cdr! Syntax: (set-car! <pair> <value>) (set-cdr! <pair> <value>) D. Rösner PGP 2011... 19

Veränderbare Listenstrukturen Beispiel: (define x ((a b) c d)) (define y (e f)) (set-car! x y) (define z (cons y (cdr x))) D. Rösner PGP 2011... 20

Veränderbare Listenstrukturen Implementierung von append: (define (append x y) (if (null? x) y (cons (car x) (append (cdr x) y)))) Implementierung von append! (define (append! x y) (set-cdr! (last x) y) x) (define (last x) (if (null? (cdr x)) x (last (cdr x)))) D. Rösner PGP 2011... 21

Veränderbare Listenstrukturen eine Iteraktion: (define x (list a b)) (define y (list c d)) (define z (append x y)) z (cdr x) (define w (append! x y)) w (cdr x) D. Rösner PGP 2011... 22

Veränderbare Listenstrukturen Identisch?: (define x (list a b)) (define z1 (cons x x)) (define z2 (cons (list a b) (list a b))) Was passiert bei (set-wow! z1) und (set-wow! z2)? (define (set-wow! x) (set-car! (car x) wow) x) D. Rösner PGP 2011... 23

Literatur: I H. Abelson and G.J. Sussman. Structure and Interpretation of Computer Programs. MIT Press, Cambridge, Massachusetts London, England, 1996. Michael Lee Scott. Programming Language Pragmatics. Academic Press, San Diego, CA, USA, 2000. ISBN 1-55860-578-9. D. Rösner PGP 2011... 24