Geheimnisprinzip: (information hiding principle, Parnas 1972)

Größe: px
Ab Seite anzeigen:

Download "Geheimnisprinzip: (information hiding principle, Parnas 1972)"

Transkript

1 2. Abstrakte Datentypen 2.0 Begriffe Geheimnisprinzip: (information hiding principle, Parnas 1972) Zugriffe auf Teile einer Programmeinheit, die für die reguläre Benutzung nicht erforderlich sind, sollten verboten sein. Besser: Die nicht benötigten Teile sollten unsichtbar sein. Warum?? hs / fub alp3 ADT-1 1 Warum Datenabstraktion? Vorteile 1 Sicherheit: Objekt kann nicht in ungültige Zustände gebracht werden. 2 Komfort: Benutzer kann von Repräsentation abstrahieren; Objekt wird ausschließlich über Operationen benutzt. 3 Flexibilität: Code der Klasse kann unabhängig vom benutzenden Code entwickelt werden - und ohne Auswirkungen auf den benutzenden Code geändert werden. hs / fub alp3 ADT-1 2 1

2 Datenabstraktion Datenabstraktion: (data abstraction) Anwendung des Geheimnisprinzips auf die Darstellung von (einfachen und komplexen) Daten im Rechner: die Daten sind nicht durch Zugriff auf ihre Bestandteile, sondern ausschließlich über zugehörige Operationen manipulierbar. [ Auch Datenkapselung (data encapsulation) ] hs / fub alp3 ADT-1 3 Abstrakte Datentypen (ADT) 2.2 Spezifikation von Abstrakten Datentypen Sichtbare Schnittstelle: Typbezeichner Signaturen der Operationen Spezifikation der Operationen Abstraktionsbarriere Implementierung unsichtbar für Klient muss Spezifikation genügen! was heißt das? Verifikation? meist viele Implementierungen möglich gleiche funktionale Eigenschaften nichtfunktionale (wie Laufzeiteffizienz ) oft drastisch unterschiedlich hs / fub alp3 ADT-1 4 2

3 Spezifikation von ADT Grundsätze Keine Annahmen über Implementierung des Typs Methodensignaturen ("Prozedurköpfe") festlegen Semantik der Methoden festlegen - Kann formal oder umgangssprachlich erfolgen - Präzise muss es sein Zwei Verfahren Algebraische Spezifikation Modellierende Spezifikation Modell zugrunde legen, Voraussetzungen, zu erzielende Effekte, Invarianten darin spezifizieren Ähnlich wie bisher: Modell war Zustandsraum, allerdings implementierungsabhängig! Besser: Natürliche Zahlen, Mengen, Listen,... Wichtig: Spezifizierende und Implementierer müssen gleiches Verständnis des Modells haben ("gleiche Semantik") hs / fub alp3 ADT-1 5 Spezifikation von ADT Algebraische Spezifikation ADT wird festgelegt durch: Wertemengen (Typen, Sorten) Signaturen der Operationen Definierende Gleichungen Syntax Semantik legen Beziehungen zwischen Operationen fest hs / fub alp3 ADT-1 6 3

4 Stack (algebraisch) types Stack, T, Bool, Int // repräsentiert durch Typen operators createstack : -> Stack push: T -> Stack -> Stack pop : Stack -> Stack top : Stack -> T size : Stack -> Int axioms... hs / fub alp3 ADT-1 7 Stack (algebraisch) axioms for all x T, s Stack : pop ( push (x, s ) ) = s top (push (x, s ) ) = x size (createstack) = 0 size (push (x, s ) ) = 1 + size (s) Einzige Möglichkeit zur Charakterisierung von Stack-Objekten sind Axiome hs / fub alp3 ADT-1 8 4

5 Stack (algebraisch) Kanonische Darstellungen Viele Darstellungen repräsentieren den gleichen Wert push( y (pop ( push (x, createstack)))) = push (y, createstack) Axiome als Ersetzungsregeln (rewrite rules) Systematische Ersetzung -> kanonische Darstellung hs / fub alp3 ADT-1 9 Stack (algebraisch): Haskell Signatur Stack: algebraic specification in Haskell (executable) > module Stack (Stack, createstack, push, > pop, top, size, isempty) > where > createstack :: Stack t > push :: t -> Stack t -> Stack t > pop :: Stack t -> Stack t > top :: Stack t -> t > size :: Stack t -> Int hs / fub alp3 ADT

6 Stack (algebraisch): Haskell > data Stack t = EmptyStack NES t (Stack t) > deriving (Show) > createstack = EmptyStack > push x s = NES x s > pop EmptyStack = error "stack underflow" > pop (NES x s) = s > top EmptyStack = error "stack underflow, no top" > top (NES x s) = x > size EmptyStack = 0 > size (NES x s ) = 1 + size s > isempty st = size st==0 hs / fub alp3 ADT-1 11 Stack Anwendung: Klammergebirge Aufgabe: Prüfe, ob ein Ausdruck "richtig" geklammert ist. Beispiel: "( () ( ) (( )) )" ok "( ( ( ) (( ) ) )" nein Definition korrekter Klammerausdrücke: - eine Zeichenkette (auch leere möglich) ohne Klammern ist korrekt. - Sind S1, S2, S3 korrekt, dann auch S1 (S2) S3. - Das sind alle korrekten Klammerausdrücke. hs / fub alp3 ADT

7 Stack Anwendung: Klammergebirge Haskell-Programm "Korrekte Klammern" simpel application of stacks:.. > import Stack > checkbrack :: String -> Bool > checkbrack str = checkstack EmptyStack str > checkstack :: (Stack Char) -> String -> Bool > checkstack st [] > isempty st = True > otherwise = False > checkstack st (c:rest) > c=='(' = checkstack (push '(' st) rest > c==')' = > if (isempty st) then False > else checkstack (pop st) rest > otherwise = checkstack st rest hs / fub alp3 ADT

2.3 Spezifikation von Abstrakten Datentypen

2.3 Spezifikation von Abstrakten Datentypen Abstrakte Datentypen (ADT) 2.3 Spezifikation von Abstrakten Datentypen Sichtbare Schnittstelle: Typbezeichner Signaturen der Operationen Spezifikation der Operationen Abstraktionsbarriere Implementierung

Mehr

2.2.1 Algebraische Spezifikation (Fortsetzung)

2.2.1 Algebraische Spezifikation (Fortsetzung) 2.2.1 Algebraische Spezifikation (Fortsetzung) Algebraische Spezifikation: Mengen Types Set, Bool, t Signature > creates :: Eq t => Set t > isempty :: Eq t => Set t -> Bool > insert :: Eq t => t -> Set

Mehr

- Welche konkreten Invarianten müssen gelten? Berücksichtigen: Invarianten aus Modell und Implem.

- Welche konkreten Invarianten müssen gelten? Berücksichtigen: Invarianten aus Modell und Implem. 234 Implementierung von Abstrakten Datentypen und Korrektheitskriterien Ziel: Zusammenhang zwischen Spezifikation (Modell!) und Implementierung(en) herstellen Spezifikation Implementierung abstraktes Modell?

Mehr

Programmieren in Haskell Abstrakte Datentypen

Programmieren in Haskell Abstrakte Datentypen Programmieren in Haskell Abstrakte Datentypen Peter Steffen Universität Bielefeld Technische Fakultät 09.01.2009 1 Programmieren in Haskell Einführung Man unterscheidet zwei Arten von Datentypen: konkrete

Mehr

2.2 Spezifikation abstrakter Datentypen. 2.3 Implementierung und Anwendung von ADT. 2.4 Datenabstraktion und Objektorientierung

2.2 Spezifikation abstrakter Datentypen. 2.3 Implementierung und Anwendung von ADT. 2.4 Datenabstraktion und Objektorientierung Inhaltsverzeichnis (update) 2 Datenabstraktion 2.1 Begriffe 2.2 Spezifikation abstrakter Datentypen 2.2.1 Algebraische Spezifikation 2.2.2 Modellierende Spezifikation 2.3 Implementierung und Anwendung

Mehr

Typklassen. Natascha Widder

Typklassen. Natascha Widder Typklassen Natascha Widder 19.11.2007 Motivation Typklassen fassen Typen mit ähnlichen Operatoren zusammen ermöglichen überladenen Funktionen Definition Typklassen Deklarationsschema class Name Platzhalter

Mehr

Programmieren in Haskell. Abstrakte Datentypen

Programmieren in Haskell. Abstrakte Datentypen Programmieren in Haskell Abstrakte Datentypen Einführung Man unterscheidet zwei Arten von Datentypen: konkrete Datentypen: beziehen sich auf eine konkrete Repräsentation in der Sprache. Beispiele: Listen,

Mehr

3.2 Modellierende Spezifikation von ADT

3.2 Modellierende Spezifikation von ADT 3.2 Modellierende Spezifikation von ADT Wie kann ich das Verhalten der Operationen eines ADO spezifizieren, wenn ich mich wegen der Datenabstraktion nicht auf seine Daten beziehen kann? 2 Alternativen:

Mehr

5. Januar Universität Bielefeld AG Praktische Informatik. Programmieren in Haskell. Stefan Janssen. Abstrakte Datentypen.

5. Januar Universität Bielefeld AG Praktische Informatik. Programmieren in Haskell. Stefan Janssen. Abstrakte Datentypen. Universität Bielefeld AG Praktische Informatik 5. Januar 2015 Themen-Vorschau Module In der Software-Entwicklung unterscheidet zwei Arten von : konkrete beziehen sich auf eine konkrete Repräsentation in

Mehr

Programmieren in Haskell Programmiermethodik

Programmieren in Haskell Programmiermethodik Programmieren in Haskell Programmiermethodik Peter Steffen Universität Bielefeld Technische Fakultät 12.01.2011 1 Programmieren in Haskell Bisherige Themen Was soll wiederholt werden? Bedienung von hugs

Mehr

Algorithmen und Programmierung

Algorithmen und Programmierung Algorithmen und Programmierung Kapitel 8 Abstrakte Datentypen A&P (WS 14/15): 08 Abstrakte Datentypen 1 Überblick Abstrakte Datentypen Signaturen und Algebren Spezifikation von ADTs Umsetzung von ADTs

Mehr

Vollständigkeit. Klassifikation von Operationen

Vollständigkeit. Klassifikation von Operationen Vollständigkeit Definition Konstruktormenge := mininale Menge von Operationen, mit denen man alle Elemente (=Instanzen) des ADT konstruieren kann. Für Stack ist das die Menge {create, push} Definition

Mehr

Mehrsortige Strukturen

Mehrsortige Strukturen Was bisher geschah Modellierung von Daten durch Mengen (Individuenbereiche), häufig zusammengesetzt durch Mengenoperationen, Zusammenhängen zwischen Individuen durch Relationen (auch Eigenschaften) Funktionen

Mehr

How To Understand The Algebraic Structure Of A Program In Python 2.8.2.2 (For Beginners)

How To Understand The Algebraic Structure Of A Program In Python 2.8.2.2 (For Beginners) Algorithmen und Programmierung Kapitel 8 Abstrakte Datentypen 1 Überblick Abstrakte Datentypen Signaturen und Algebren Spezifikation von ADTs Umsetzung von ADTs 2 Einführung Motivation: Wiederverwendbarkeit

Mehr

13 Abstrakte Datentypen

13 Abstrakte Datentypen 13 Abstrakte Datentypen Bisher: Konkrete Datentypen Menge von Elementen Operationen auf den Elementen (Konstruktoren, Selektoren, Typprädikate) Eigenschaften abgeleitet Jetzt: Abstrakte Datentypen (ADT)

Mehr

Programmieren in Haskell Einstieg in Haskell

Programmieren in Haskell Einstieg in Haskell Programmieren in Haskell Einstieg in Haskell Peter Steffen Universität Bielefeld Technische Fakultät 24.10.2008 1 Programmieren in Haskell Was wir heute machen Umfrage: Wer hat den Hugs ausprobiert? Ausdrücke

Mehr

Programmieren in Haskell

Programmieren in Haskell Programmieren in Haskell Wir steigen ein... Programmieren in Haskell 1 Was wir heute machen Umfrage: Wer hat den Hugs ausprobiert? Ausdrücke und Werte Datentypen Funktionen Aufgabe für diese Woche Programmieren

Mehr

13 Formale Spezifikation von Anforderungen

13 Formale Spezifikation von Anforderungen 13 Formale Spezifikation von Anforderungen Mögliche Formalitätsgrade einer Spezifikation 0 Ideen und Vorstellungen der Auftraggeber informale Spezifikation Zeit teilformale Spezifikation 100% formale Spezifikation

Mehr

Funktionale Programmierung ALP I. Algebraische Datentypen und Abstrakte Datentypen. SS 2013 Prof. Dr. Margarita Esponda. Prof. Dr.

Funktionale Programmierung ALP I. Algebraische Datentypen und Abstrakte Datentypen. SS 2013 Prof. Dr. Margarita Esponda. Prof. Dr. Funktionale Programmierung AP I Algebraische Datentypen und Abstrakte Datentypen SS 2013 Abstrakt Datentypen Beispiel: Algebraischen Datentypen für Bäume data SBTree = SBTree SBTree AP I: Margarita Esponda,

Mehr

Übungsblatt 6: Softwareentwicklung I (WS 2006/07)

Übungsblatt 6: Softwareentwicklung I (WS 2006/07) Prof. Dr. A. Poetzsch-Heffter Dipl.-Inform. J.O. Blech Dipl.-Inform. M.J. Gawkowski Dipl.-Inform. N. Rauch Technische Universität Kaiserslautern Fachbereich Informatik AG Softwaretechnik Übungsblatt 6:

Mehr

2.3 Implementierung und Anwendung von ADT Anwendung von ADT... am Beispiel "Stapel"

2.3 Implementierung und Anwendung von ADT Anwendung von ADT... am Beispiel Stapel 2.3 Implementierung und Anwendung von ADT 2.3.1 Anwendung von ADT. am Beispiel "Stapel" Ziel Implementierung einer Anwendung ohne Annahmen über die Implementierung der Typen Austauschen der Implementierung

Mehr

Proinformatik Marco Block Dienstag, den 21. Juli 2009

Proinformatik Marco Block Dienstag, den 21. Juli 2009 2. Skript vom Dienstag, den 21. Juli 2009 zur Vorlesung Proinformatik Marco Block Dienstag, den 21. Juli 2009 1 Verschiedenes 1.1 let und where Am Anfang der Vorlesung haben wir uns ein paar einfache neue

Mehr

Haskell Seminar Abstrakte Datentypen. Nils Bardenhagen ms2725

Haskell Seminar Abstrakte Datentypen. Nils Bardenhagen ms2725 Haskell Seminar Abstrakte Datentypen Nils Bardenhagen ms2725 Gliederung Konzept Queue Module Sets Bags Flexible Arrays Fazit Abstrakte Datentypen (ADT) Definition: Eine Zusammenfassung von Operationen,

Mehr

Datentypen. strukturierte. elementare. skalare reelle statische dynamische int. list. real float. set. record. inhomogen. homogen

Datentypen. strukturierte. elementare. skalare reelle statische dynamische int. list. real float. set. record. inhomogen. homogen Datentypen elementare strukturierte skalare reelle statische dynamische int real float list homogen set inhomogen record Der elementare Datentyp nat bestehend aus einer Objektmenge und den darauf definierten

Mehr

1.1 Abstrakte Datentypen 1.2 Lineare Strukturen 1.3 Bäume 1.4 Prioritätsschlangen 1.5 Graphen

1.1 Abstrakte Datentypen 1.2 Lineare Strukturen 1.3 Bäume 1.4 Prioritätsschlangen 1.5 Graphen 1 Datenstrukturen 1.1 Abstrakte Datentypen 1.2 Lineare Strukturen 1.3 Bäume 1.4 Prioritätsschlangen 1.5 Graphen 1 Abstrakte Datentypen Spezifizieren Form und Funktionalität der zu verarbeitenden Daten

Mehr

2.4 Datenabstraktion und Objektorientierung Datenabstraktion in Programmiersprachen

2.4 Datenabstraktion und Objektorientierung Datenabstraktion in Programmiersprachen 2.4 Datenabstraktion und Objektorientierung 2.4.1 Datenabstraktion in Programmiersprachen Datenabstraktion: zur Beherrschung von Komplexität unerlässlich. In jeder Programmiersprache kann man gemäß den

Mehr

Was bisher geschah Modellierung von Daten durch Mengen Beziehungen (Zusammenhänge und Eigenschaften) durch Relationen, Graphen und Funktionen

Was bisher geschah Modellierung von Daten durch Mengen Beziehungen (Zusammenhänge und Eigenschaften) durch Relationen, Graphen und Funktionen Was bisher geschah Modellierung von Daten durch Mengen Beziehungen (Zusammenhänge und Eigenschaften) durch Relationen, Graphen und Funktionen Anforderungen durch Logiken Modellierung zusammenhängender

Mehr

Einführung in die Programmiertechnik

Einführung in die Programmiertechnik Einführung in die Programmiertechnik Klassen und Abstrakte Datentypen Abstrakte Datentypen (ADT) Beschreibung der Datentypen nicht auf Basis ihrer Repräsentation, sondern auf Basis ihrer Operationen und

Mehr

12. Dynamische Datenstrukturen

12. Dynamische Datenstrukturen Motivation: Stapel. Dynamische Datenstrukturen Verkettete Listen, Abstrakte Datentypen Stapel, Warteschlange, Implementationsvarianten der verketteten Liste 0 04 Motivation: Stapel ( push, pop, top, empty

Mehr

Teil IV : Abstrakte Datentypen (ADT)

Teil IV : Abstrakte Datentypen (ADT) Teil IV : Abstrakte Datentypen (ADT) Abstraktion ADT in Modula-2 K. Murmann, H. Neumann, Fakultät für Informatik, Universität Ulm, 2001 1. Abstraktion Rekapitulation Realisation eines Stacks Idee für ADT-Konzept

Mehr

Programmieren in Haskell

Programmieren in Haskell Programmieren in Haskell Wir steigen ein... Programmieren in Haskell 1 Was wir heute machen Umfrage: Wer hat den Hugs ausprobiert? Ausdrücke und Werte Datentypen Funktionen Aufgabe für s Wochenende Programmieren

Mehr

Lineare Datenstrukturen: Felder, Vektoren, Listen Modelle: math. Folge (a i ) i=1.. mit Basistyp T oder: [T]

Lineare Datenstrukturen: Felder, Vektoren, Listen Modelle: math. Folge (a i ) i=1.. mit Basistyp T oder: [T] Teil II: Datenstrukturen Datenstrukturen Lineare Datenstrukturen: Felder, Vektoren, Listen Modelle: math. Folge (a i ) i=1.. mit Basistyp T oder: [T] Nichtlineare Datenstrukturen: Bäume Modell(e): spezielle

Mehr

Abstract Data Type and the Development of Data Structures

Abstract Data Type and the Development of Data Structures Abstract Data Type and the Development of Data Structures John Guttag, 1976 2. Mai 2006 Inhalt 1 Motivation 2 3 4 Motivation - Komplexe Probleme lösen Dekomposition Problem Abstraktion Komplexität reduzieren

Mehr

Programmierkurs II. Typsynonyme & algebraische Datentypen

Programmierkurs II. Typsynonyme & algebraische Datentypen Programmierkurs II Typsynonyme & algebraische Datentypen Um Dinge der realen Welt abzubilden, ist es nur in den seltensten Fällen komfortabel alles als Zahlen, Strings oder Listen zu kodieren. Wir benötigen

Mehr

Programmierung im Grossen

Programmierung im Grossen 1 Letzte Aktualisierung: 16. April 2004 Programmierung im Grossen Bertrand Meyer 2 Vorlesung 4: Abstrakte Daten-Typen Übungen 3 Passe die vorhergehende Spezifikation von Stacks (LIFO, Last-In First-Out

Mehr

Crashkurs: Haskell. Mentoring FU Berlin Felix Droop

Crashkurs: Haskell. Mentoring FU Berlin Felix Droop Crashkurs: Haskell Mentoring FU Berlin 7.11.2018 Felix Droop Crashkurs Haskell 1. GHCi Umgebung

Mehr

Stratego/XT und ASF+SDF Meta-Environment. Paul Weder Seminar Transformationen Datum:

Stratego/XT und ASF+SDF Meta-Environment. Paul Weder Seminar Transformationen Datum: Stratego/XT und ASF+SDF Meta-Environment Paul Weder Seminar Transformationen Datum: 20.01.2006 Gliederung Allgemeines ASF+SDF Meta-Environment Stratego/XT Zusammenfassung/Vergleich SDF (Syntax Definition

Mehr

Einführung in die funktionale Programmierung

Einführung in die funktionale Programmierung Einführung in die funktionale Programmierung Prof. Dr. Manfred Schmidt-Schauÿ Künstliche Intelligenz und Softwaretechnologie 26. Oktober 2006 Haskell - Einführung Syntax Typen Auswertung Programmierung

Mehr

Counting - Sort [ [ ] [ [ ] 1. SS 2008 Datenstrukturen und Algorithmen Sortieren in linearer Zeit

Counting - Sort [ [ ] [ [ ] 1. SS 2008 Datenstrukturen und Algorithmen Sortieren in linearer Zeit Counting-Sort Counting - Sort ( A,B,k ). for i to k. do C[ i]. for j to length[ A]. do C[ A[ j ] C[ A[ j ] +. > C[ i] enthält Anzahl der Elemente in 6. for i to k. do C[ i] C[ i] + C[ i ]. > C[ i] enthält

Mehr

Paradigmen der Programmierung

Paradigmen der Programmierung SS 11 Prüfungsklausur 25.07.2011 Aufgabe 5 (6+9 = 15 Punkte) a) Bestimmen Sie jeweils den Typ der folgenden Haskell-Ausdrücke: ( 1, 2 :"3", 4 < 5) :: (Char, String, Bool) [(last, tail), (head, take 5)]

Mehr

Algorithmen und Programmieren 1 Funktionale Programmierung - Musterlösung zur Übungsklausur -

Algorithmen und Programmieren 1 Funktionale Programmierung - Musterlösung zur Übungsklausur - Algorithmen und Programmieren 1 Funktionale Programmierung - Musterlösung zur Übungsklausur - Punkte: A1: 30, A2: 20, A3: 20, A4: 20, A5: 10, A6: 20 Punkte: /120 12.02.2012 Hinweis: Geben Sie bei allen

Mehr

1 Abstrakte Datentypen

1 Abstrakte Datentypen 1 Abstrakte Datentypen Spezifiziere nur die Operationen! Verberge Details der Datenstruktur; der Implementierung der Operationen. == Information Hiding 1 Sinn: Verhindern illegaler Zugriffe auf die Datenstruktur;

Mehr

Programmieren in Haskell

Programmieren in Haskell Programmieren in Haskell Syntax und Semantik von Haskell Programmieren in Haskell 1 Was wir heute (und nächstes mal) machen Datentypdefinitionen Wertdefinitionen, Variablenbindungen Musterbindungen Funktionsbindungen

Mehr

11 Fallstudie: Reguläre Ausdrücke

11 Fallstudie: Reguläre Ausdrücke 11 Fallstudie: Reguläre Ausdrücke Mit den bisher eingeführten Sprachelementen von Haskell lassen sich bereits substantielle Projekte realisieren. Dieses Kapitel 1 beschreibt einen algebraischen Datentyp

Mehr

VOM PROBLEM ZUM PROGRAMM

VOM PROBLEM ZUM PROGRAMM VOM PROBLEM ZUM PROGRAMM Was ist ein Problem? Ein Problem im Sinne der Programmierung ist durch Computer lösbar. Aspekte: es läßt sich hinreichend genau spezifizieren (z. B. als Funktion Eingabewerte ->

Mehr

B2.1 Abstrakte Datentypen

B2.1 Abstrakte Datentypen Algorithmen und Datenstrukturen 21. März 2018 B2. Abstrakte Datentypen Algorithmen und Datenstrukturen B2. Abstrakte Datentypen B2.1 Abstrakte Datentypen Marcel Lüthi and Gabriele Röger B2.2 Multimengen,

Mehr

Typ-Polymorphismus. November 12, 2014

Typ-Polymorphismus. November 12, 2014 Typ-Polymorphismus Universität Bielefeld AG Praktische Informatik November 12, 2014 Das Haskell Typ-System Wir beginnen mit einer Wiederholung des Bekannten: In allen Programmiersprachen sind Typ-Konzepte

Mehr

Tutoraufgabe 1 (Implementierung eines ADTs):

Tutoraufgabe 1 (Implementierung eines ADTs): Prof. aa Dr. E. Ábrahám Datenstrukturen und Algorithmen SS Tutoriumslösung - Übung (Abgabe.05.0) F. Corzilius, S. Schupp, T. Ströder Tutoraufgabe (Implementierung eines ADTs): Wir spezifizieren den ADT

Mehr

Kapitel 1: Informationsverarbeitung durch Programme

Kapitel 1: Informationsverarbeitung durch Programme LUDWIG- MAXIMILIANS- UNIVERSITY MUNICH DEPARTMENT INSTITUTE FOR INFORMATICS Skript zur Vorlesung: Einführung in die Informatik: Systeme und Anwendungen Sommersemester 2009 Kapitel 1: Informationsverarbeitung

Mehr

Alexander Nutz. 3. Dezember 2007

Alexander Nutz. 3. Dezember 2007 3. Dezember 2007 1 / 21 Aufgabe: die zeit- und platzeziente Implementierung von abstrakten Datentypen, z.b. eines Wörterbuches oder einer Zahlenmenge, für Programme bekannte : Listen,, Heaps,, Stacks,...

Mehr

Funktionale Programmiersprachen

Funktionale Programmiersprachen Funktionale Programmiersprachen An den Beispielen Haskell und Erlang Übersicht Programmiersprachen λ-kalkül Syntax, Definitionen Besonderheiten von funktionalen Programmiersprache, bzw. Haskell Objektorientierte

Mehr

Wiederholung: Zusammenfassung Felder. Algorithmen und Datenstrukturen (für ET/IT) Definition Abstrakter Datentyp. Programm heute

Wiederholung: Zusammenfassung Felder. Algorithmen und Datenstrukturen (für ET/IT) Definition Abstrakter Datentyp. Programm heute Wiederholung: Zusammenfassung Felder Algorithmen und Datenstrukturen (für ET/IT) Wintersemester / Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Ein Feld A kann repräsentiert

Mehr

13. Dynamische Datenstrukturen

13. Dynamische Datenstrukturen Motivation: Stapel. Dynamische Datenstrukturen Verkettete Listen, Abstrakte Datentypen Stapel, Warteschlange, Sortierte Liste 40 40 Motivation: Stapel ( push, pop, top, empty ) Wir brauchen einen neuen

Mehr

Stacks, Queues & Bags. Datenstrukturen. Pushdown/Popup Stack. Ferd van Odenhoven. 19. September 2012

Stacks, Queues & Bags. Datenstrukturen. Pushdown/Popup Stack. Ferd van Odenhoven. 19. September 2012 , Queues & Ferd van Odenhoven Fontys Hogeschool voor Techniek en Logistiek Venlo Software Engineering 19. September 2012 ODE/FHTBM, Queues & 19. September 2012 1/42 Datenstrukturen Elementare Datenstrukturen

Mehr

ALP I. Funktionale Programmierung

ALP I. Funktionale Programmierung ALP I Funktionale Programmierung Typ-Klassen und SS 2011 Überladung von Datentypen Funktionen sollen oft auf verschiedene Datentypen anwendbar sein, aber nicht auf beliebige Datentypen. Beispiel: Die (+)

Mehr

ALP I. Funktionale Programmierung

ALP I. Funktionale Programmierung ALP I Funktionale Programmierung Zusammengesetzte Datentypen in Haskell WS 2012/2013 Zusammengesetzte Datentypen Tupel List String Zusammengesetzte Datentypen Tupel-Datentyp Ein Tupel ist eine Ansammlung

Mehr

Technische Universität München SoSe 2018 Fakultät für Informatik, I Mai 2018 Dr. Stefanie Demirci

Technische Universität München SoSe 2018 Fakultät für Informatik, I Mai 2018 Dr. Stefanie Demirci Name: Vorname: Matr. Nr.: Technische Universität München SoSe 2018 Fakultät für Informatik, I-16 9. Mai 2018 Dr. Stefanie Demirci Probeklausur zu Algorithmen und Datenstrukturen Allgemeine Hinweise Die

Mehr

Funktionale Programmierung

Funktionale Programmierung Monaden LFE Theoretische Informatik, Institut für Informatik, Ludwig-Maximilians Universität, München 30. April 2009 Monaden Eine Monade ist ein Programmier-Schema für sequentielle Berechnungen. In Haskell

Mehr

ProInformatik: Funktionale Programmierung. Punkte

ProInformatik: Funktionale Programmierung. Punkte ProInformatik: Funktionale Programmierung 27.7-22.8.2008, M. Knobelsdorf Probeklausur Ihre persönliche Klausurnummer: Vorname, Nachname: Aufgabe 1 2 3 4 5 6 7 8 Punkte 12 4 4 4 4 2 4 6 40 Erz. Punkte Zum

Mehr

Grundlegende Datentypen

Grundlegende Datentypen Grundlegende Datentypen (Funktionale Programmierung) Prof. Dr. Oliver Braun Letzte Änderung: 18.03.2018 21:08 Grundlegende Datentypen 1/16 Typen in Haskell ist alles streng typisiert Haskell verfügt über

Mehr

Algorithmen und Programmierung III

Algorithmen und Programmierung III Musterlösung zum 4. Aufgabenblatt zur Vorlesung WS 2006 Algorithmen und Programmierung III von Christian Grümme Aufgabe 1 Amortisierte Analyse 10 Punkte Zu erst betrachte ich wie oft die letzte Ziffer

Mehr

Grundlegende Datentypen

Grundlegende Datentypen Funktionale Programmierung Grundlegende Datentypen Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 14.11.2017 15:37 Inhaltsverzeichnis Typen........................................

Mehr

WS 2011/2012. RobertGiegerich. November 12, 2013

WS 2011/2012. RobertGiegerich. November 12, 2013 WS 2011/2012 Robert AG Praktische Informatik November 12, 2013 Haskell-Syntax: Ergänzungen Es gibt noch etwas bequeme Notation für Fallunterscheidungen, die wir bisher nicht benutzt haben. Bisher kennen

Mehr

WS 2011/2012. Georg Sauthoff Januar 2012

WS 2011/2012. Georg Sauthoff Januar 2012 WS 2011/2012 Georg 1 AG Praktische Informatik 11. Januar 2012 1 gsauthof@techfak.uni-bielefeld.de Man unterscheidet zwei Arten von : konkrete : beziehen sich auf eine konkrete Repräsentation in der Sprache.

Mehr

Funktionale Programmierung Grundlegende Datentypen

Funktionale Programmierung Grundlegende Datentypen Grundlegende Datentypen Prof. Dr. Oliver Braun Fakultät für Informatik und Mathematik Hochschule München Letzte Änderung: 06.11.2017 16:45 Inhaltsverzeichnis Typen........................................

Mehr

WS 2011/2012. RobertGiegerich. November 12, 2013

WS 2011/2012. RobertGiegerich. November 12, 2013 WS 2011/2012 Robert AG Praktische Informatik November 12, 2013 Haskell-Syntax: Ergänzungen Es gibt noch etwas bequeme Notation für Fallunterscheidungen, die wir bisher nicht benutzt haben. Bisher kennen

Mehr

Formale Methoden in der Informatik Wiederholung klassische Logik Konkrete Datentypen (algebraische Strukturen) Abstrakte Datentypen

Formale Methoden in der Informatik Wiederholung klassische Logik Konkrete Datentypen (algebraische Strukturen) Abstrakte Datentypen Was bisher geschah Formale Methoden in der Informatik Wiederholung klassische Logik Konkrete Datentypen (algebraische Strukturen) Abstrakte Datentypen Syntax: Signatur Semantik: Axiome (FOL-Formeln, meist

Mehr

7. Klassenmethoden Einführung in die Programmierung (fbw) Sommersemester 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, fbi

7. Klassenmethoden Einführung in die Programmierung (fbw) Sommersemester 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, fbi 7. Klassenmethoden Einführung in die Programmierung (fbw) Sommersemester 2008 Prof. Dr. Bernhard Humm Hochschule Darmstadt, fbi 1 Prof. Dr. Bernhard Humm, Hochschule Darmstadt, FB Informatik: Einführung

Mehr

10 Abstrakte Datentypen

10 Abstrakte Datentypen 10 Abstrakte Datentypen abstrakte Datentypen generische Implementierung datengesteuerte Programmierung Operationstabelle 10.1 Abstrakte Datentypen Bisher: Konkrete Datentypen Menge von Elementen Operationen

Mehr

Kapitel

Kapitel 10.11.005 Kapitel 4-10.11.005 Lehrbeispiel: Sortieralgorithmus " Bubble Sort" Sortieren von Primitivtypen Der "Abstrakte Datentyp" Grundlagen der Objektorientierung: Abstraktion, Kapselung, Modularität,

Mehr

Kapitel 1: Informationsverarbeitung durch Programme

Kapitel 1: Informationsverarbeitung durch Programme LUDWIG- MAXIMILIANS- UNIVERSITY MUNICH DEPARTMENT INSTITUTE FOR INFORMATICS Skript zur Vorlesung: Einführung in die Informatik: Systeme und Anwendungen Sommersemester 2018 Kapitel 1: Informationsverarbeitung

Mehr

1 Funktionale vs. Imperative Programmierung

1 Funktionale vs. Imperative Programmierung 1 Funktionale vs. Imperative Programmierung 1.1 Einführung Programme einer funktionalen Programmiersprache (functional programming language, FPL) bestehen ausschließlich aus Funktionsdefinitionen und Funktionsaufrufen.

Mehr

Wiederholung ADT Menge Ziel: Verwaltung (Finden, Einfügen, Entfernen) einer Menge von Elementen

Wiederholung ADT Menge Ziel: Verwaltung (Finden, Einfügen, Entfernen) einer Menge von Elementen Was bisher geschah abstrakter Datentyp : Signatur Σ und Axiome Φ z.b. ADT Menge zur Verwaltung (Finden, Einfügen, Entfernen) mehrerer Elemente desselben Typs Spezifikation einer Schnittstelle Konkreter

Mehr

Frage, Fragen und nochmals Fragen

Frage, Fragen und nochmals Fragen Frage, Fragen und nochmals Fragen Berthold Hoffmann Universität Bremen and DFKI Bremen hof@informatik.uni-bremen.de In diesem Text stehen einige Fragen, die man sich zu den Folien der Veranstaltung Funktionales

Mehr

Kapitel 13. Definition von Klassen. OOP Thomas Klinker 1

Kapitel 13. Definition von Klassen. OOP Thomas Klinker 1 Kapitel 13 Definition von Klassen OOP Thomas Klinker 1 OOP Thomas Klinker 2 Datenabstraktion Der Mensch abstrahiert, um komplexe Sachverhalte darzustellen. Dinge und Vorgänge werden auf das wesentliche

Mehr

Objektorientierte Konzepte

Objektorientierte Konzepte Objektorientierte Konzepte Objekt Klasse enthaltender Polymorphismus (Untertypen) Vererbung Objektorientierte Programmierung, Grundlagen und Ziele 1 Objekt Objekt kapselt Variablen und Routinen Interaktionen

Mehr

16. Dynamische Datenstrukturen

16. Dynamische Datenstrukturen Datenstrukturen 6. Dynamische Datenstrukturen Eine Datenstruktur organisiert Daten so in einem Computer, dass man sie effizient nutzen kann. Verkettete Listen, Abstrakte Datentypen Stapel, Warteschlange

Mehr

Grundlegende Datentypen

Grundlegende Datentypen Grundlegende Datentypen Funktionale Programmierung Prof. Dr. Oliver Braun Letzte Änderung: 22.10.2018 10:53 Grundlegende Datentypen 1/21 Typen in Haskell ist alles streng typisiert Haskell verfügt über

Mehr

Einführung in Haskell

Einführung in Haskell Einführung in Haskell Axel Stronzik 21. April 2008 1 / 43 Inhaltsverzeichnis 1 Allgemeines 2 / 43 Inhaltsverzeichnis 1 Allgemeines 2 Funktions- und Typdefinitionen 2 / 43 Inhaltsverzeichnis 1 Allgemeines

Mehr

Praktikum Funktionale Programmierung Teil 3: Abstrakte Maschinen Mark 1 und Mark 2

Praktikum Funktionale Programmierung Teil 3: Abstrakte Maschinen Mark 1 und Mark 2 Praktikum Funktionale Programmierung Teil 3: Abstrakte Maschinen und Professur für Künstliche Intelligenz und Softwaretechnologie Sommersemester 2009 Zeitplan Teil 3 Meilenstein 1 Teil 1: Lexen und Parsen

Mehr

Einführung in die Informatik 2

Einführung in die Informatik 2 Technische Universität München Fakultät für Informatik Prof. Tobias Nipkow, Ph.D. Manuel Eberl, Lars Hupel, Lars Noschinski Wintersemester 2014/15 Lösungsblatt Endklausur 13. Februar 2015 Einführung in

Mehr

Abstrakte Datentypen I

Abstrakte Datentypen I 6 Abstrakte Datentypen I Ein Datentyp heißt abstrakt, wenn seine Eigenschaften allein durch die für ihn definierten Operationen festgelegt sind, während die Repräsentation seiner Werte dem Benutzer verborgen

Mehr

WS 2011/2012. Georg Sauthoff 1. November 11, 2011

WS 2011/2012. Georg Sauthoff 1. November 11, 2011 WS 2011/2012 Georg 1 AG Praktische Informatik November 11, 2011 1 gsauthof@techfak.uni-bielefeld.de Skripte sind nun fertig und gibt es in den Tutorien Sprechstunden Zusammenfassung -Kapitel Signatur zuerst

Mehr

[05] Aufgabenblatt 3 [doch nicht :-]

[05] Aufgabenblatt 3 [doch nicht :-] Haskell Live [05] Aufgabenblatt 3 [doch nicht :-] Bong Min Kim e0327177@student.tuwien.ac.at Christoph Spörk christoph.spoerk@inode.at Bernhard Urban lewurm@gmail.com 5. November 2010 Florian Hassanen

Mehr

Grundlagen der Programmierung Prof. H. Mössenböck. 15. Pakete

Grundlagen der Programmierung Prof. H. Mössenböck. 15. Pakete Grundlagen der Programmierung Prof. H. Mössenböck 15. Pakete Idee Paket = Sammlung zusammengehöriger Klassen (Bibliothek) Zweck mehr Ordnung in Programme bringen bessere Kontrolle der Zugriffsrechte (wer

Mehr

Institut für Programmierung und Reaktive Systeme 7. Mai Programmieren II. 11. Übungsblatt

Institut für Programmierung und Reaktive Systeme 7. Mai Programmieren II. 11. Übungsblatt Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 7. Mai 2018 Programmieren II 11. Übungsblatt Hinweis: Auf diesem und den folgenden Übungsblättern

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen 10. Übung Abstrakte Datentypen, Freies Programmieren: Quilt Clemens Lang Übungen zu AuD 14. Januar 2010 Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 14.

Mehr

VOM PROBLEM ZUM PROGRAMM

VOM PROBLEM ZUM PROGRAMM VOM PROBLEM ZUM PROGRAMM Was ist ein Problem? monika.heiner@informatik.tu-cottbus.de SS 2013 1.1-1 / 28 VOM PROBLEM ZUM PROGRAMM Was ist ein Problem? Ein Problem im Sinne der Programmierung ist durch Computer

Mehr

Algebraische Spezifikation. Teil 2. André Kießling

Algebraische Spezifikation. Teil 2. André Kießling Algebraische Spezifikation Teil 2 André Kießling Zur Erinnerung: Signaturen Spezifikation Signatur Σ-BOOL Sorten BOOL Operatoren TRUE: BOOL FALSE: BOOL : BOOL BOOL : BOOL x BOOL BOOL Umsetzung Algebra

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen B3. ADTs, Bags, Stack and Queues Marcel Lüthi and Gabriele Röger Universität Basel 21. März 2019 Abstrakte Datentypen Abstrakte Datentypen : Definition Abstrakter Datentyp

Mehr

Abstrakte Datentypen und deren Implementierung in Python

Abstrakte Datentypen und deren Implementierung in Python Kapitel 15: Abstrakte Datentypen und deren Implementierung in Python Einführung in die Informatik Wintersemester 007/08 Prof. Bernhard Jung Übersicht Abstrakte Datentypen ADT Stack Python-Implementierung(en)

Mehr

Beschreibung von Werten: Beschreibung von Werten: (2) Begriffsklärung: (Ausdruck, expression) (2) Begriffsklärung: (Ausdruck, expression)

Beschreibung von Werten: Beschreibung von Werten: (2) Begriffsklärung: (Ausdruck, expression) (2) Begriffsklärung: (Ausdruck, expression) Beschreibung von Werten: Beschreibung von Werten: (2) mittels Konstanten oder Bezeichnern für Werte: 23 " Ich bin eine Zeichenreihe" True x durch direkte Anwendung von Funktionen: abs (-28382) "Urin" ++

Mehr

Datenkapselung: public / private

Datenkapselung: public / private 627 18. Klassen Klassen, Memberfunktionen, Konstruktoren, Stapel, verkettete Liste, dynamischer Speicher, Copy-Konstruktor, Zuweisungsoperator, Destruktor, Konzept Dynamischer Datentyp Datenkapselung:

Mehr

Algebraische Spezifikation. André Kießling

Algebraische Spezifikation. André Kießling Algebraische Spezifikation André Kießling Das Problem Software nach wie vor sehr Fehlerhaft Fehler oft schon in Spezifikation Ursachen u.a.: - Beschreibung zu schwammig - Kunde und Entwickler meinen nicht

Mehr

2.5 Listen. Kurzschreibweise: [42; 0; 16] Listen werden mithilfe von [] und :: konstruiert.

2.5 Listen. Kurzschreibweise: [42; 0; 16] Listen werden mithilfe von [] und :: konstruiert. 2.5 Listen Listen werden mithilfe von [] und :: konstruiert. Kurzschreibweise: [42; 0; 16] # let mt = [];; val mt : a list = [] # let l1 = 1::mt;; val l1 : int list = [1] # let l = [1;2;3];; val l : int

Mehr

Übung Algorithmen und Datenstrukturen

Übung Algorithmen und Datenstrukturen Übung Algorithmen und Datenstrukturen Sommersemester 2017 Patrick Schäfer, Humboldt-Universität zu Berlin Agenda 1. Sortierte Listen 2. Stacks & Queues 3. Teile und Herrsche Nächste Woche: Vorrechnen (first-come-first-served)

Mehr