Algorithmen und Datenstrukturen

Ähnliche Dokumente
Algorithmen und Datenstrukturen 10

Heute. Nachbetrachtung Wissensüberprüfung. Sortieren Interface Comparable TreeSet Sortieren von Arrays: Arrays.sort() 3.12.

Organisatorisches. Folien (u.a.) auf der Lva-Homepage Skriptum über MU Online

Organisatorisches. Folien (u.a.) gibt's auf der Lva-Homepage zum Download

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

Übungsblatt 10. Thema: Abstrakte Datentypen, Datenstrukturen in Java

Grundlagen der Informatik 0

Abstract Data Type and the Development of Data Structures

Name:... Matr.-Nr... Bearbeitungszeit: 120 Minuten. Lesen Sie die Aufgaben jeweils bis zum Ende durch; oft gibt es hilfreiche Hinweise!

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

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

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

Tutoraufgabe 1 (Implementierung eines ADTs):

Programmieren in Java -Eingangstest-

Klausur zur Vorlesung Einführung in die Programmierung

2.3 Spezifikation von Abstrakten Datentypen

Universität Augsburg, Institut für Informatik Sommersemester 2001 Prof. Dr. Martin Ester 16. Juli Klausur

Tutoraufgabe 1 (Implementierung eines ADTs):

Kapitel

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 10

SS10 Algorithmen und Datenstrukturen 2. Kapitel Fundamentale Datentypen und Datenstrukturen

5.4 Arrays. Oft müssen viele Werte gleichen Typs gespeichert werden. Idee: Lege sie konsekutiv ab! Greife auf einzelne Werte über ihren Index zu!

This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 License.

16. Dynamische Datenstrukturen

Abschnitt 10: Datenstrukturen

Erste Java-Programme (Arrays und Schleifen)

Aufgabenblatt 4. Aufgabe 3. Aufgabe 1. Aufgabe 2. Prof. Dr. Th. Letschert Algorithmen und Datenstrukturen

2.2.1 Algebraische Spezifikation (Fortsetzung)

Schriftlicher Test zu C++ (90 Minuten) VU Einführung ins Programmieren für TM. 22. Juni 2012

IT I: Heute. abstrakte Methoden und Klassen. Interfaces. Interfaces List, Set und Collection IT I - VO 7 1

Kapitel 12: Induktive

Programmieren in Java

Java Übung. Übung 2. Werner Gaulke. 19. April Universität Duisburg-Essen Kommedia, Übung EinPro SS06, Einführung in Java - Übung.

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

Arrays. Gilbert Beyer und Annabelle Klarl. Einführung in die Informatik. Zentralübung zur Vorlesung Einführung in die Informatik

13. Dynamische Datenstrukturen

Geheimnisprinzip: (information hiding principle, Parnas 1972)

Probeklausur Java Einführung in die Informatik. Wintersemester 2016/2017

Workshop Einführung in die Sprache Haskell

Übungsblatt 9. Thema: Methoden-Dispatching, Datenstrukturen, Abstrakte Datentypen

Felder. M. Jakob. 28. April Gymnasium Pegnitz

Probeklausur Java Einführung in die Informatik. Wintersemester 2017/2018

Institut für Informatik

Allgemeine Hinweise:

Programmierung im Grossen

Präsenzübung Datenstrukturen und Algorithmen SS 2014

Polymorphie. 15. Java Objektorientierung II

Programmieren in Java

Polymorphie. 15. Java Objektorientierung II

12 Abstrakte Klassen, finale Klassen und Interfaces

10 Abstrakte Datentypen

Institut für Informatik und Angewandte Kognitionswissenschaften

Schnittstellen und. Prof. Dr. Margarita Esponda. Prof. Dr. Margarita Esponda

Programmierung WS18/19 Übungsblatt 9 (Abgabe Freitag, den um 12 Uhr)

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

Probeklausur: Programmierung WS04/05

Übungsblatt 13. Abgabe / Besprechung in Absprache mit dem Tutor

Übungen zur Vorlesung EINI (WS 2010) Blatt 11

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

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

Algorithmen und Datenstrukturen

f 1 (n) = log(n) + n 2 n 5 f 2 (n) = n 3 + n 2 f 3 (n) = log(n 2 ) f 4 (n) = n n f 5 (n) = (log(n)) 2

Haskell Seminar Abstrakte Datentypen. Nils Bardenhagen ms2725

Abgabe: (vor 24 Uhr)

Übungsblatt Programmierung und Software-Entwicklung Generizität, Interfaces, Listen, Sortieralgorithmen & JUnit

Nachholklausur zur Vorlesung: Einführung in die objektorientierte Programmierung mit Java WS1415

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

13 Abstrakte Datentypen

1 Algorithmische Grundlagen

Felder. Inhaltsverzeichnis. M. Jakob. 28. April Begriffsbildung. Verwendung von Feldern. Gymnasium Pegnitz

Objektorientierte Programmierung Studiengang Medieninformatik

Organisatorisches. drei Gruppen Gruppe 1: 10:10-11:40, Gruppe 2: 11:45-13:15 Gruppe 3: 13:20-14:50

7. Arrays. Beim Deklarieren und Initialisieren der Liste bräuchte man oft zueinander sehr ähnlichen Code:

Die Welt in unseren Programmen false -1.4E-12. false. Klassen

Tutoraufgabe 1 (2 3 4 Bäume):

Spezifikation von Kommunikationssystemen

Programmierstarthilfe SS 2008 Fakultät für Ingenieurwissenschaften und Informatik 8. Blatt Für den 16. und

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Algorithmen und Datenstrukturen 10

Java programmieren mit JavaKara. Eine Zusammenfassung in Beispielen

Software Entwicklung 1

Allgemeine Hinweise:

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Datenstrukturen und Algorithmen. Vorlesung 5

Algorithmen und Programmierung

Klausur zur Vorlesung Algorithmen und Datenstrukturen

Einführung in die Programmierung und Programmiersprachen (OOP)

Übung Programmierung WS 2007/08 - Blatt 6

14 Abstrakte Klassen, finale Klassen, Interfaces. Auswertung von Ausdrücken. Beispiel. Abstrakte Methoden und Klassen

14 Abstrakte Klassen, finale Klassen, Interfaces

2.4 Datenabstraktion und Objektorientierung Datenabstraktion in Programmiersprachen

Aufgabenblatt 4. Kompetenzstufe 1. Allgemeine Informationen zum Aufgabenblatt:

Datenstrukturen. Mariano Zelke. Sommersemester 2012

14 Abstrakte Klassen, finale Klassen, Interfaces

Tag 5. Repetitorium Informatik (Java) Dozent: Marius Kamp Lehrstuhl für Informatik 2 (Programmiersysteme)

Vorkurs Informatik WiSe 16/17

Transkript:

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. Januar 2010 1 / 9

Organisatorisches: Evaluation Die Evaluation Gesetzlich vorgeschriebene Bewertung der Lehrveranstaltungen durch die Studenten Möglichkeit für Kritik und Verbesserungsvorschläge Teilnahmeberechtigung : TAN Unter eva.uni-erlangen.de TechFak TAN-Eingabe-Fenster a Bis 29.01., 0:00 Uhr Bitte evaluieren! a oder gleich mit diesem Direktlink Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 14. Januar 2010 2 / 9

Organisatorisches: Evaluation Die Evaluation Gesetzlich vorgeschriebene Bewertung der Lehrveranstaltungen durch die Studenten Möglichkeit für Kritik und Verbesserungsvorschläge Teilnahmeberechtigung : TAN Unter eva.uni-erlangen.de TechFak TAN-Eingabe-Fenster a Bis 29.01., 0:00 Uhr Bitte evaluieren! a oder gleich mit diesem Direktlink Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 14. Januar 2010 2 / 9

Organisatorisches: Evaluation Die Evaluation Gesetzlich vorgeschriebene Bewertung der Lehrveranstaltungen durch die Studenten Möglichkeit für Kritik und Verbesserungsvorschläge Teilnahmeberechtigung : TAN Unter eva.uni-erlangen.de TechFak TAN-Eingabe-Fenster a Bis 29.01., 0:00 Uhr Bitte evaluieren! a oder gleich mit diesem Direktlink Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 14. Januar 2010 2 / 9

Organisatorisches: Evaluation Die Evaluation Gesetzlich vorgeschriebene Bewertung der Lehrveranstaltungen durch die Studenten Möglichkeit für Kritik und Verbesserungsvorschläge Teilnahmeberechtigung : TAN Unter eva.uni-erlangen.de TechFak TAN-Eingabe-Fenster a Bis 29.01., 0:00 Uhr Bitte evaluieren! a oder gleich mit diesem Direktlink Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 14. Januar 2010 2 / 9

Organisatorisches: Evaluation Die Evaluation Gesetzlich vorgeschriebene Bewertung der Lehrveranstaltungen durch die Studenten Möglichkeit für Kritik und Verbesserungsvorschläge Teilnahmeberechtigung : TAN Unter eva.uni-erlangen.de TechFak TAN-Eingabe-Fenster a Bis 29.01., 0:00 Uhr Bitte evaluieren! a oder gleich mit diesem Direktlink Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 14. Januar 2010 2 / 9

Organisatorisches: Evaluation Die Evaluation Gesetzlich vorgeschriebene Bewertung der Lehrveranstaltungen durch die Studenten Möglichkeit für Kritik und Verbesserungsvorschläge Teilnahmeberechtigung : TAN Unter eva.uni-erlangen.de TechFak TAN-Eingabe-Fenster a Bis 29.01., 0:00 Uhr Bitte evaluieren! a oder gleich mit diesem Direktlink Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 14. Januar 2010 2 / 9

Abstrakte Datentypen (10.1, 10.2) Was ist ein ADT? Ein ADT a beschreibt formal eine Komponente einer Software durch: Signatur Liste von Operationen, die auf die Komponente angewendet werden können Axiome mathematische Ausdrücke, die das Verhalten der Operationen spezifieren Dabei wird zunächst keine Implementierung benutzt. ADTs sind daher unabhängig von Programmiersprachen. a aus dem englischen Abstract Data Type Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 14. Januar 2010 3 / 9

Abstrakte Datentypen: Begriffe (10.1, 10.2) Begriffe Konstruktor Operation, die ein Objekt des beschriebenen Typs zurückgibt Projektion Operation, die Infos über ein Datenobjekt zurückgeben (z.b.: Anzahl der Elemente) a Normalform Objekt, das durch eine minimale Zahl von Kostruktoraufrufen dargestellt ist Primärkonstruktoren Menge von Konstruktoren, die nötig ist, um alle möglichen Datenobjekte erzeugen zu können Hilfskonstruktor Konstruktor, der kein Primärkonstruktor ist a auch: Selektion Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 14. Januar 2010 4 / 9

Abstrakte Datentypen: Begriffe (10.1, 10.2) Begriffe Konstruktor Operation, die ein Objekt des beschriebenen Typs zurückgibt Projektion Operation, die Infos über ein Datenobjekt zurückgeben (z.b.: Anzahl der Elemente) a Normalform Objekt, das durch eine minimale Zahl von Kostruktoraufrufen dargestellt ist Primärkonstruktoren Menge von Konstruktoren, die nötig ist, um alle möglichen Datenobjekte erzeugen zu können Hilfskonstruktor Konstruktor, der kein Primärkonstruktor ist a auch: Selektion Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 14. Januar 2010 4 / 9

Abstrakte Datentypen: Begriffe (10.1, 10.2) Begriffe Konstruktor Operation, die ein Objekt des beschriebenen Typs zurückgibt Projektion Operation, die Infos über ein Datenobjekt zurückgeben (z.b.: Anzahl der Elemente) a Normalform Objekt, das durch eine minimale Zahl von Kostruktoraufrufen dargestellt ist Primärkonstruktoren Menge von Konstruktoren, die nötig ist, um alle möglichen Datenobjekte erzeugen zu können Hilfskonstruktor Konstruktor, der kein Primärkonstruktor ist a auch: Selektion Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 14. Januar 2010 4 / 9

Abstrakte Datentypen: Beispiel (10.1, 10.2) Datentyp Liste Signatur: create: Liste append: Liste int Liste gethead: Liste int Axiome: A1 gethead(append(l, a)) = gethead(l) mit L create() A2 gethead(append(create(), a)) = a Welche Konstruktoren hat die Liste? Welche davon sind Primär-, welche Hilfskonstruktoren? Welche Projektionen/Selektionen hat die Liste? Was tut gethead()? Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 14. Januar 2010 5 / 9

Abstrakte Datentypen: Beispiel (2) (10.1, 10.2) Datentyp Boolean Signatur: true: Boolean false: Boolean not: Boolean Boolean and: Boolean Boolean Boolean or: Boolean Boolean Boolean Axiome: A1: not(false) = true A2: not(true) = false A3: and(false, B) = false A4: and(a, B) = and(b, A) A5: and(true, true) = true A7: or(x, Y) = not(and(not(x), not(y))) Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 14. Januar 2010 6 / 9

Abstrakte Datentypen Beispiel (2) (10.1, 10.2) ADT Array Signatur create: Array set: Array int T Array get: Array int T Axiome A1: get(create(), i) = null ( A2: get(set(a, i, x), j) = x get(a, j) T sei der Typ der Arrayelemente wenn i = j sonst 1. Java-Arrays besitzen eine fixe Länge, die bereits im Konstruktor angegeben wird. Erweitern Sie obigen ADT so, dass der Konstruktor create() eine Länge l bekommt, die immer fix bleibt und auch nicht durch set() verändert wird, die neue Methode length() die im Konstruktor übergebene Länge bestimmt, nur für Indizes zwischen 0 und der Länge minus 1 Werte gespeichert werden (ansonsten werden Einträge ignoriert). Es genügt dabei, Axiom A2 so anzupassen, dass get() nur für passende Indizes Werte zurückliefert. Sie können dazu length() in einer Fallunterscheidung verwenden. Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 14. Januar 2010 7 / 9

Abstrakte Datentypen Beispiel (2) (10.1, 10.2) ADT Array Signatur create: Array set: Array int T Array get: Array int T Axiome A1: get(create(), i) = null ( A2: get(set(a, i, x), j) = x get(a, j) T sei der Typ der Arrayelemente wenn i = j sonst 1. Java-Arrays besitzen eine fixe Länge, die bereits im Konstruktor angegeben wird. Erweitern Sie obigen ADT so, dass der Konstruktor create() eine Länge l bekommt, die immer fix bleibt und auch nicht durch set() verändert wird, die neue Methode length() die im Konstruktor übergebene Länge bestimmt, nur für Indizes zwischen 0 und der Länge minus 1 Werte gespeichert werden (ansonsten werden Einträge ignoriert). Es genügt dabei, Axiom A2 so anzupassen, dass get() nur für passende Indizes Werte zurückliefert. Sie können dazu length() in einer Fallunterscheidung verwenden. Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 14. Januar 2010 7 / 9

Abstrakte Datentypen Beispiel (2) (10.1, 10.2) ADT Array Signatur create: Array set: Array int T Array get: Array int T Axiome A1: get(create(), i) = null ( A2: get(set(a, i, x), j) = x get(a, j) T sei der Typ der Arrayelemente wenn i = j sonst 2. Welche Operationen sind (Primär-)Konstruktoren des ADT? 3. Geben Sie die Normalform und das Datenobjekt für den folgenden Ausdruck an: length( set( set( set( create(3), 2, D ), 0, get( set( create(10), 4, A ), 4 ) ), 1, u ) ) Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 14. Januar 2010 7 / 9

Abstrakte Datentypen Beispiel (2) (10.1, 10.2) ADT Array Signatur create: Array set: Array int T Array get: Array int T Axiome A1: get(create(), i) = null ( A2: get(set(a, i, x), j) = x get(a, j) T sei der Typ der Arrayelemente wenn i = j sonst 4. Erweitern Sie den ADT um eine Operation fill, die die ersten i Einträge eines Arrays mit einem Element x füllt. Um was für eine Operation handelt es sich? Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 14. Januar 2010 7 / 9

Freies Programmieren: Quilt (10.3) Allgemeine Hinweise Everything goes a Die Hinweise sind nicht zum Spaß da b Gewachsenen Code auch mal wegwerfen und besser implementieren ;) Kapselung is was tolles Gönnt euch ein paar Methoden c Was ich nicht nachvollziehen kann, kann ich nicht bepunkten. Also: Kommentieren! a if it works b ich hab aber auch nix dagegen, wenns einer richtig ohne hinbekommt c und evtl. auch Klassen Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 14. Januar 2010 8 / 9

Fragen & Feedback Fragen? Feedback zu Vorlesung und/oder Übung? Mit Materialen von Balthasar Reuter Clemens Lang (Übungen zu AuD) Algorithmen und Datenstrukturen 14. Januar 2010 9 / 9