Kapitel 8 ABSTRAKTE DATENTYPEN. Algorithmen & Datenstrukturen Prof. Dr. Wolfgang Schramm

Ähnliche Dokumente
DYNAMISCHE DATENSTRUKTUREN (TEIL 1) LISTEN. 9. Kapitel. Algorithmen & Datenstrukturen Prof. Dr. Wolfgang Schramm

ALGORITHMEN- PARADIGMEN

10. Kapitel (Teil1) BÄUME GRUNDLAGEN. Algorithmen & Datenstrukturen Prof. Dr. Wolfgang Schramm

Abstrakter Datentyp (ADT): Besteht aus einer Menge von Objekten, sowie Operationen, die auf diesen Objekten wirken.

Praktikum OOP/C++ - Versuch 5

12. Dynamische Datenstrukturen

Schwerpunkte. Verkettete Listen. Verkettete Listen: 7. Verkettete Strukturen: Listen. Überblick und Grundprinzip. Vergleich: Arrays verkettete Listen

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

6. Verkettete Strukturen: Listen

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

ALP II Dynamische Datenmengen Datenabstraktion

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

1 Abstrakte Datentypen

Übung Datenstrukturen. Objektorientierung in C++

Algorithmen und Datenstrukturen

Vorlesung Datenstrukturen

Variablen. int Flugzeug. float. I write code Hund. String. long. Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel

JAVA BASICS. 2. Primitive Datentypen. 1. Warum Java? a) Boolean (logische Werte wahr & falsch)

Grundlagen der Informatik 0

Praxis der Programmierung

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1. Kapitel 11. Listen. Listen

1.2 Attribute und Methoden Aufbau einer Java-Klasse:

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 16/17. Kapitel 13. Listen. Listen 1

Einführung in die Programmierung für NF MI. Übung 04

Programmierkurs Java

Einstieg in die Informatik mit Java

Klausur: Java (Liste P)

Wie kann man es verhindern das Rad immer wieder erneut erfinden zu müssen?

3.3. Rekursive Datentypen

Kapitel 12: Induktive

Felder - Arrays. Typ feldname[] = new Typ[<ganze Zahl >]; Beispiel: double vektor[] = new double[5]; auch eine Initialisierung ist möglich.

ALP II Dynamische Datenmengen

Algorithmen und Datenstrukturen

Gliederung. 5. Compiler. 6. Sortieren und Suchen. 7. Graphen

Polymorphismus 179. Function.h. #include <string>

! 1. Rekursive Algorithmen.! 2. Rekursive (dynamische) Datenstrukturen. II.3.2 Rekursive Datenstrukturen - 1 -

1 Hashing und die Klasse String

Teil VII. Hashverfahren

Aufgaben NF 11; Seite 1

Java Einführung Objekt-Datentypen und Strings. Kapitel 8 und 9

System.out.println("TEXT");

Advanced Programming in C

Problem: Was ist, wenn der Stapel voll ist? Idee: Erzeuge dynamisch ein grösseres Array und kopiere um. Dynamische Anpassung der Größe

Institut für Programmierung und Reaktive Systeme. Java 2. Markus Reschke

Objektorientierte Programmierung

Objektorientierte Programmierung mit C++ SS 2007

II. Grundlagen der Programmierung. Beispiel: Merge Sort. Beispiel: Merge Sort (Forts. ) Beispiel: Merge Sort (Forts. )

2.3 Spezifikation von Abstrakten Datentypen

ADT: Verkettete Listen

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein

3. Übungsbesprechung Programmkonstruktion

Programmierkurs C++ Variablen und Datentypen

13. Bäume: effektives Suchen und Sortieren

Vererbung und Polymorphie

Javakurs FSS Lehrstuhl Stuckenschmidt. Tag 3 - Objektorientierung

Einführung in C. EDV1-04C-Einführung 1

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

Haskell Seminar Abstrakte Datentypen. Nils Bardenhagen ms2725

Wie entwerfe ich ein Programm?

C++-Zusammenfassung. H. Schaudt. August 18, 2005

Softwaretechnik WS 16/17. Übungsblatt 01

Programmierkurs II. Typsynonyme & algebraische Datentypen

Einführung Datentypen Verzweigung Schleifen. Java Crashkurs. Kim-Manuel Klein May 4, 2015

C++ Notnagel. Ziel, Inhalt. Programmieren in C++

Aufgabe 1 (Programmanalyse, Punkte)

Programmiermethodik 2. Klausur Lösung

In C und Java müssen Variablen und Methodenergebnisse durch Typangaben erläutert werden. Welche der folgenden Aussagen sind korrekt und welche nicht:

Klausur Grundlagen der Programmierung

Schein-/Bachelorklausur Teil 2 am Zulassung: Mindestens 14 Punkte in Teilklausur 1 und 50% der Übungspunkte aus dem 2. Übungsblock.

Programmierung 1 (Wintersemester 2015/16) Wiederholungstutorium Lösungsblatt 15 (Linearer Speicher, Listen, Bäume)

Übung Algorithmen und Datenstrukturen

12 Abstrakte Klassen, finale Klassen und Interfaces

Durch die Möglichkeit, Ein- und Ausgaben auf der Konsole durchzuführen, kann man auch systematisch das Verhalten von Klassen analysieren.

Gliederung. Tutorium zur Vorlesung. Gliederung. Gliederung. 1. Gliederung der Informatik. 1. Gliederung der Informatik. 1. Gliederung der Informatik

C++ Teil 9. Sven Groß. 17. Juni Sven Groß (IGPM, RWTH Aachen) C++ Teil Juni / 17

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

2.4 Datenabstraktion und Objektorientierung Datenabstraktion in Programmiersprachen

Klausur "ADP" SS 2015

Aufrufe von Objektmethoden

Praktische Informatik 3: Funktionale Programmierung Vorlesung 4 vom : Typvariablen und Polymorphie

Verarbeitung unendlicher Datenstrukturen Jetzt können wir z.b. die unendliche Liste aller geraden Zahlen oder aller Quadratzahlen berechnen:

Java Einführung Collections

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

Java Einführung Klassendefinitionen

Stapel (Stack, Keller)

Letztes Mal. static int ggt(int a, int b) { if (a == b) return a; else if (a > b) return ggt(a-b,b); else if (a < b) return ggt(a,b-a);

Algorithmen & Datenstrukturen 1. Klausur

DAP2-Programmierpraktikum Einführung in C++ (Teil 2)

Übersicht. Vorstellung des OO-Paradigmas

Übung Algorithmen und Datenstrukturen

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

Einstieg in die Informatik mit Java

Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 12/13. Kapitel 3. Grunddatentypen, Ausdrücke und Variable

Grundlagen der Informatik 12. Strukturen

Short Introduction to C# C# (C SHARP) Microsofts Antwort auf Java

Einstieg in die Informatik mit Java

Objektorientierte Programmierung. Kapitel 18: Strings

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny

1. Typen und Literale (6 Punkte) 2. Zuweisungen (6 = Punkte)

Transkript:

Kapitel 8 ABSTRAKTE DATENTYPEN Algrithmen & Datenstrukturen Prf. Dr. Wlfgang Schramm

Übersicht 1 1. Einführung 2. Algrithmen 3. EigenschaCen vn Prgrammiersprachen 4. Algrithmenparadigmen 5. Suchen & SrJeren 6. Hashing 7. Kmplexität vn Algrithmen 8. Abstrakte Datentypen (ADT) 9. Listen 10. Bäume 11. Graphen

Lernziele des Kapitels 2 2 Sie lernen die Bedeutung vn Datentypen? Sie können nachvllziehen, wzu man ADT braucht. Sie verstehen wie man ADT definiert. Sie können selbst ADT definieren. Sie können ADT in Java implemenjeren.

Inhalt 3 Datentypen MJvaJn EigenschaCen Was sind abstrakte Datentypen Beschreibung vn ADT ImplemenJerung vn ADT in Java

Datentypen in Java 5 Einfach Blean true, false Integer - 3, 9, 4, 2345, Integer.MAX_VALUE, Lng integer Shrt integer Byte Duble 2.45, 0.123, 0.11E- 04 Flat Character 'a', '8', '&',, 65, 66,

Datentypen in Java 6 Strings "abc", "", "Ab&", Arrays int [4] Vectr u.a.

Datentyp Integer 1/3 7 Werte, Datenbereich: 1, 2, - 54, OperaJnen auf Integer +, -, *, /, ==, >, <, Regeln Punkt- vr- Strich AssziaJv- /KmmutaJv- /DistribuJvgesetz TransiJvität

Datentyp Integer 2/3 8 ImplemenJerung (Auswahl) Interne Darstellung n Binär 100101001 n 1. Zeichen Vrzeichen AddiJn n Halbaddierer MulJplikaJn mit 2 n shic nach links 0101 * 2 à 1010

Datentyp Integer 3/3 9 Integer Für den Prgrammentwickler Werte OperaJnen wichtig Regeln ImplemenJerungsdetails unwichtig

10 Werte, Datenbereich: Zahlen Menge vn Zahlen 0, 1, 2, {}, {1, 3, 5}, OperaJnen auf der Menge Datentyp Menge 1/2 erzeugen, einfügen, wegnehmen, schauen- b- leer, Regeln Eine leere Menge erzeugt à Menge ist leer.? Eine Zahl wird in Menge eingefügt à Menge ist nicht leer. Menge ist leer, eine Zahl wird eingefügt, diese Zahl wird weggenmmen à Menge leer.

Datentyp Menge 2/2 11 ImplemenJerung?

WichJg bei Datentypen 12 ist, was sie tun (= Schnizstelle) nicht, wie sie es tun (= ImplemenJerung) Abstrakte Datentypen w Abstraktin l ADT abstrahieren vn Implementierung. l Wird in der Infrmatik häufig verwendet: ð Bit abstrahiert vn physikalischen Zuständen. ð CPU abstrahiert vn einer Menge vn Bits und deren Zustandsänderungen. ð Java Virtual Machine abstrahiert vn knkreter CPU.

ADT - DefiniJn 1/3 13 Datentyp Die in einer Prgrammiersprache vrhandenen n Grundtypen, wie int, blean, real, char,, und n Strukturierungsmethden, wie array, struct, und die darauf definierten OperaJnen wie + (AddiJn, StringknkatenaJn), *, sqrt, [] (SelekJn), Anmerkung: Datentypen hängen vn der Prgrammiersprache ab. Es gibt heute ein Verständnis über übliche Datentypen: n ganze Zahlen, Fließkmmazahlen, Zeichen, Zeichenkezen. n Gruppierung gleicharjger und verschiedener Datentypen.

DefiniJn 2/3 14 ADT (abstrakter Datentyp) Ein Datentyp, d.h. n eine Menge vn Werten und n OperaLnen auf diesen Werten, n der nur über eine SchniMstelle zugänglich ist, swie n Regeln über die Wirkung der OperaJnen auf den Werten. ImplemenLerung (eines ADT) Ein Prgramm, das den Datentyp realisiert. Anmerkung Zur ImplemenJerung eines ADT werden typischerweise Datenstrukturen aus vrhandenen Datentypen gebildet, z.b. int A [] = new int[10]; int length = 0;

DefiniJn 3/3 15 Signatur Eine Liste mit n dem Namen, n der Typen der Eingabewerte, und n des Rückgabewertes einer FunkJn.

16 Punkte im kartesischen Krdinatensystem Typen Imprte FunkJnen Punkte I R neu, Wahrheitswerte X-Wert I R I R Punkt Punkt Beispiel 1/3 I R Regeln Y-Wert ist-ursprung Abstand-vn verschiebe Punkt I R Punkt Wahrheitswert Punkt Punkt I R Punkt I R I R Punkt

17 Liste vn Zeichen Typen Imprte FunkJnen Liste Character, Integer, Blean empty addfirst remvefirst getfirst isempty length clne Beispiel 2/3 Liste Liste Character Liste Liste Liste Liste Character Liste Blean Liste Integer Liste Liste Regeln isempty(empty) = true getfirst(addfirst(l, a)) = a isempty(remvefirst(addfirst(empty, e))) = true length(addfirst(l, e)) = length(l)+1

Beispiel 3/3 18 Menge vn Zeichen Typen Imprte FunkJnen Regeln Set Character, Integer, Blean emptyset add remve isempty card cntains clne Set Set Character Set Set Character Set Set Blean Set Integer Set Character Blean Set Set

NtaJn 1/2 19 <ADT> ::= <Name> Types <List f Types>. FuncJns <List f FuncJns>. Axims <Ruleset>.. <Name> ::= <String>. <List f Types> ::= <Type> <List f Types>, <Type>. <Type> ::= <String>. <List f FuncJns> ::= <FuncJn> <List f FuncJns>, <FuncJn>. <FuncJn> ::= <Signature>.

NtaJn 2/2 20 <Ruleset> ::= <Thery> <List f Axims>. <List f Axims > ::= < Axim > <List f Axims >, < Axim>. < Axim> ::= <blean Expressin>. <Thery> ::= <Text>. Gemeint ist eine mathematische Therie, z.b. die Mengenlehre; diese besteht auch aus Aximen, Gesetzen, etc. Im Rahmen der ADT wird dies einfach als Text ntiert Ausdruck, der wahr zurückliefert (Blesche Ausdrücke können wahr der falsch zurückliefern, Axime sind spezielle Ausdrücke, die immer wahr zurückliefern

Beispiel POINT (erster Versuch) 21 POINT Type POINT w Functins l create REAL, REAL à POINT l get_x POINT à REAL l get_y POINT à REAL l is-rigin POINT à BOOL l distance POINT, POINT à REAL etc. w Axims l get_x (create (x, y)) = x l get_y (create (x, y)) = y w Imprts l REAL, BOOL l is-rigin (create (x, y)) = true x = 0 y = 0 etc.

ADT: Types/Imprts 22 Im ADT verwendete Typen Types neue Typen Liste, Punkt (C nur einer) Imprts Basistypen Blean, Integer OC: Elemenzyp Character, Adresse (à ADT)

ADT: FuncJns 23 Im ADT definierte FunkJnen Angabe der DefiniJns- und Wertebereiche NtaJn «Name»: «DefiniJnsbereich» «Wertebereich» DefiniJnsbereich mit einem Typ «Type» DefiniJnsbereich mit mehreren Typen «Type1» «Type2» Wertebereich ist ein Typ «Type» append: Liste Integer Liste

ADT: Axims 24 Beschreibt die Wirkung der FunkJnen des ADT NtaJn (Natürliche Sprache) MathemaJsch add (M, i) = M {i} Set Algrithmisch isempty (add (M, i)) == false Set cntains (add (M, i), i) == true Set

Beispiel POINT 1/2 25 POINT Type POINT Imprts REAL, BOOL, STRING FuncJns create REAL, REAL à POINT get_x POINT à REAL get_y POINT à REAL get_r POINT à REAL get_theta POINT à REAL

Beispiel POINT 2/2 26 is- rigin POINT à BOOL translate POINT, REAL, REAL à POINT distance POINT, POINT à REAL tstring POINT à STRING Axims get_x (create (x, y)) = x get_y (create (x, y)) = y is- rigin (create (x, y)) = true x = 0 y = 0 translate (create (x, y), a, b) = create (x+a, y+b) distance (create (x, y), create (z, w) ) = sqrt ((x - z) 2 + (y - w) 2 ) etc.

Beispiel POINT ImplemenJerung 1/2 27 implementaln mdule Pint exprt type Pint; exprt funcln create, get_x, get_y, etc. begin type Pint = struct begin real x // x- Wert real y // y- Wert end struct;

Beispiel POINT ImplemenJerung 2/2 28 funcln Pint create (real x, y) begin Pint p = new Pint; p.x = x; p.y = y; return p; end funcln funcln real get_x (Pint p) begin return p.x end end mdule

Beispiel SET 1/2 32 SET Type SET FuncJns EmptySet à SET add SET INTEGER à SET delete SET INTEGER à SET cntains INTEGER à BOOL is- empty SET à BOOL

Beispiel SET 2/2 33 Axims isempty (create ()) == true isempty (add (M, c)) == false add (add (M, c), c) == add (M, c)

ADT in Java 1/2 34 ADT = Gekapselt Schnizstelle verbrgene ImplemenJerung = Objekt Gekapselt public private ADT als Objekt (Signaturen der public Methden/ public Daten) realisiert

ADT in Java 2/2 35 Mit Java wird ein ADT implemenjert Typen und FunkJnen müssen angebten werden; Imprte müssen verwendet werden; à für Benutzer nutz- (und damit sicht- )bar Axime müssen eingehalten werden à für Benutzer erfahrbar

Beispiel POINT 1/7 36 POINT Type POINT w Imprts l REAL, BOOL ADT Ein-/Ausgabe Klassenname einer Funktin public class Pint {... public duble f (...) {... } } JAVA

Beispiel POINT 2/7 37 POINT FuncJns - create REAL, REAL à POINT ADT Knstruktr (implizit vm Typ Pint) public class Pint {... public Pint (duble x, duble y) {... } } JAVA

Beispiel POINT 3/7 38 POINT FuncJns get_x POINT à REAL ADT? public class Pint {... public duble get_x () {... } } JAVA

Beispiel POINT 4/7 39 POINT FuncJns get_x POINT à REAL ADT Instanz vn Pint public class Pint {... public duble get_x () {... } } JAVA

Beispiel POINT 5/7 40 POINT FuncJns translate POINT, REAL, REAL à POINT ADT public class Pint {... vid translate ( duble dx, duble dy) {... } } JAVA

Beispiel POINT 6/7 41 POINT FuncJns translate POINT, REAL, REAL à POINT ADT public class Pint {... Pint translate ( duble dx, duble dy) {... } } JAVA

Beispiel POINT 7/7 42 POINT Axims get_x (create (x, y)) = x get_y (create (x, y)) = y is- rigin (create (x, y)) = true x = 0 y = 0 ADT Keine Axime.ä. Angabe der Funktin über Kmmentar (z.b. javadc) /** * get_x () liefert X-Wert * JAVA

ADT in Java 1/6 44 ADT JAVA Typen Klassenname Imprte nicht vrhanden einfach verwenden FunkJnen - öffentliche Knstruktren - Signaturen der öffentlichen Klassenmethden Axime nicht vrhanden nur Kmmentar

ADT in Java 2/6 45 ADT JAVA Signatur Signatur Angabe aller Typen Angabe aller Typen AUSSER dem Typ der Instanz ADT JAVA

ADT in Java 3/6 46 JAVA interfaces beschreiben in JAVA Schnizstellen Bsp. interface ListInterface { public vid addfirst (int value); public int getfirst (); } Ist ein Interface ein ADT? n Types J n Imprts L n FuncJns K public Methden jedch fehlt der Knstruktr n Axims L

ADT in Java 4/6 47 LIST Type LIST, E, BOOL Elementtyp (Platzhalter) ADT public class List <E> {... } JAVA

ADT in Java 5/6 48 public class List <E> { private ListElem <E> head; public List () { head = null; } public vid addfirst (E val) { head = new ListElem <E> (val, head); }...

ADT in Java 6/6 49... public E getfirst () { if (head!= null) { return head.value } else { return null } } public blean isempty () { return head == null }...

Zusammenfassung 50 Abstrakte Datentypen sind vn zentraler Bedeutung für die Realisierung kmplexer Strukturen. Ein ADT n Hat eine Menge vn Werten. n Hat OperaJnen auf diesen Werten. n Ist nur über eine Schnizstelle zugänglich. n Ist gekapselt. n Definiert seine OperaJnen über eine Schnizstelle. n Hat eine verbrgene ImplemenJerung. Das Knzept der ADT lässt sich durch bjektrienjerte Prgrammiersprachen direkt umsetzen.