Einführung in die Informationsverarbeitung Stunde II: Datenstrukturen Manfred Thaller, Universität Köln Köln 22. Oktober 2007.

Slides:



Advertisements
Ähnliche Präsentationen
Eine dynamische Menge, die diese Operationen unterstützt,
Advertisements

Sortieren I - Bubblesort -

Variablen und Datentypen
Kapitel 5. Stacks und Queues
10. Grundlagen imperativer Programmiersprachen
Synonyme: Stapel, Keller, LIFO-Liste usw.
Übung 6.6Schranken 1.Angenommen, Ihr Algorithmus habe einen Aufwand von g(n) = 5n 3 + n für alle n a)Geben sie eine obere Schranke O(g(n)) an. b)Beweisen.
MS Office-Paket: Access
Manfred Thaller, Universität zu Köln Köln 10. Dezember 2010
Softwaretechnologie für Fortgeschrittene Teil Thaller Stunde I: Bildverarbeitung I Köln 19. November 2009.
Manfred Thaller, Universität zu Köln Köln 22. Januar 2009
Einführung in die Informationsverarbeitung Teil Thaller Stunde VI: Wege und warum man sie geht Graphen. Manfred Thaller, Universität zu Köln Köln.
Einführung in die Informationsverarbeitung Teil Thaller Stunde II: Datenstrukturen Köln 13. November 2008.
Was ist und zu welchem Ende treiben wir Historische Fachinformatik?
Gliederung Motivation / Grundlagen Sortierverfahren
Java: Dynamische Datentypen
FH-Hof Indirekte Adressierung Richard Göbel. FH-Hof Einfache Speicherung von Daten Eine "einfache" Deklaration definiert direkt eine Speicherplatz für.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27 – Kürzeste Wege) Prof. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 16 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (05 – Elementare Datenstrukturen) Prof. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 6 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Basisinformationstechnologie WS 2003/04 T.Schaßan
Robotik mit LEGO Mindstorms
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
6 Folgen (Teil II - Datenstrukturen und Algorithmen)
Eine (Gleichungs-)Spezifikation ist ein Paar SPEC = (, E),
Einführung Wat jibt´s denn? Mit Computa kenn´ ick mir aus! Guten Tag,
Operationen auf verketteten Listen
SQL-Datentypen INTEGER
Kapitel 2: Datenstrukturen
boolean Datentyp und Operator
Stacks Referat im Fach Basisinformationstechnologien von Venelina Koleva.
LL(1) Grammatiken Simple LL(1) ohne ε-Regeln verschiedene Produktionen, so gilt LL(1) ohne ε-Regeln verschiedene Produktionen, so gilt LL(1) mit ε-Regeln.
FH-Hof Algorithmen und Datenstrukturen - Einführung Richard Göbel.
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Chair of Software Engineering Einführung in die Programmierung Prof. Dr. Bertrand Meyer Lecture 13: (Container-)Datenstrukturen.
Eine Implementierung einer effiziente externe geordnete (!) lineare Liste Operationen: Search(x) Insert(x) Delete(x)
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmierung
Chair of Software Engineering Einführung in die Programmierung Prof. Dr. Bertrand Meyer Lecture 13: (Container-)Datenstrukturen.
Polynome und schnelle Fourier-Transformation
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmierung Wintersemester 2009/10 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fakultät.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmiersprache C 4
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger Institut.
1.6 Die Datenstruktur Stapel Ein Stapel (Stack) ist ein Sonderfall einer Liste. Die Elemente werden nach dem Prinzip LIFO (Last In First Out) angefügt.
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Thomas Hilpold: Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger.
Datentypen: integer, char, string, boolean
Agenda für heute, 7. April, 2005 Bedingte ProgrammausführungBedingte Programmausführung Algorithmische Grundlagen Vergleichsoperatoren, Wahrheitswerte.
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Informatik III Christian Schindelhauer Wintersemester.
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Informatik III Christian Schindelhauer Wintersemester.
se_5_liste_stack_etc.ppt1 Softwareengineering Listenstrukturen und ähnliches Prof. Dr.-Ing. Axel Benz, Berlin School of Economics and Law.
5. Zeiger und komplexe Datenstrukturen
XPath Datenmodell und Sequenzen Universität zu Köln – Historisch-Kulturwissenschaftliche Informationsverarbeitung Datenbanktechnologie – Daniel Ebner –
(Syntax, Strings/Zahlen, Variablen, Arrays)
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
Kapitel 5Strukturen Information aus der realen Welt werden in einem informationsverarbeitenden System als Daten abgelegt. Diese stellen also eine (vereinfachte)
Einführung in die Informationsverarbeitung Teil Thaller Stunde II: Datenstrukturen Köln 25. Oktober 2012.
Variablen und Datentypen
Von Bits, Bytes und Raid Eine Schnuppervorlesung Inhalt
Einführung in die Informationsverarbeitung Teil Thaller Stunde V: Wege und warum man sie geht Graphen. Köln 14. Januar 2016.
Einführung in die Informationsverarbeitung Teil Thaller Stunde II: Datenstrukturen Köln 27. Oktober 2011.
Schlange und Stapel.
Datentypen: integer, char, string, boolean
Datentypen: integer, char, string, boolean
Klassen selbst programmieren
 Präsentation transkript:

Einführung in die Informationsverarbeitung Stunde II: Datenstrukturen Manfred Thaller, Universität Köln Köln 22. Oktober 2007

I. Grundbegriffe

Zahlen Bilder Zeichenketten Geburtstage Briefe Datentyp

Addieren Komprimieren Vergleichen Abstand berechnen Beziehen Operationen

Zahl {Darstellung, Addieren, …} Bild {Darstellung, Komprimieren, …} Text {Darstellung, Vergleichen, … } Zeit {Darstellung, Abstand berechnen, … } Brief {Darstellung,Beziehen, …} Datenstrukturen

Datenstruktur = {Datentyp, Legale Operationen } Datentyp und Datenstruktur oft aber auch synonym!

Boolean / Logischer Wert Integer [ Rationale Zahlen ] Realzahlen Zeichen Zeichenketten Basisdatenstrukturen

Datenstrukturen geben Regeln wieder, wie ein bestimmter Speicherbereich interpretiert wird. ASCII Zeichen 'a' = 97; 'A' = 65. oder 'Pixel' 97 ist eineinhalb mal heller als 'Pixel' 65. Datenstrukturen und Hardware

Festlegungen sind willkürlich. Groß- / Klein v. Umlaute Datenstrukturen und Hardware

Zeichen a097A65 b098B66 c099C67 d100D68 e101E69 f102F70 g103G71 h104H72 i105I73 j106J74 k107K75 …………

Zeichen a A b B c C d D e E f F g G h H i I j J k K …………

Zeichen a A b B c C d D e E f F g G h H i I j J k K …………

Festlegungen sind willkürlich. lower(x) = upper(x) | ' = schnellste verfügbare Operation des Rechners! Zeichen

Darstellung von Datenstrukturen sind willkürlich. … können den Aufwand für eine Anwendung aber entscheidend beeinflussen! Merke:

Diagrammatische Darstellung: A zeigt auf B Datenstruktur Zeiger AB

Diagrammatische Darstellung: Zeiger: Ein Speicherinhalt eines Rechners verweist auf einen anderen. Datenstruktur Zeiger AB

Speicher als karierte Zeile Datenstruktur im Speicher

Zahl in Bytes 0 bis 1 Zahl in Bytes 10 bis Datenstruktur im Speicher

Zeichen a in Byte 0 Zeichen q in Byte 11 a q Datenstruktur im Speicher

Zeiger in Bytes 0 bis 1 verweist auf Speicherblock, enthaltend xy, beginnend in Byte x y Datenstruktur im Speicher

Zeiger in Bytes 0 bis 1 verweist auf Speicherblock, enthaltend xy, beginnend in Byte 10. Zeiger graphisch x y

Zeiger verweist von einem Datenblock auf einen anderen. Zeiger graphisch

II. Technische Datenstrukturen

Stacks Auch bekannt als: LIFO – Last In, First Out

Lies: Verarbeite: Start Atom 1

Lies: Verarbeite: Push to stack Atom 1

Lies: Verarbeite: Lies weiter Atom 2 Atom 1

Lies: Verarbeite: Push to stack Atom 2 Atom 1

Lies: Verarbeite: Lies weiter Atom 3 Atom 2 Atom 1

Lies: Verarbeite: Schließlich Atom 5 Atom 4 Atom 3 Atom 2 Atom 1

Lies: Verarbeite: Pop from stack Atom 5 Atom 4 Atom 3 Atom 2 Atom 1

Lies: Verarbeite: Pop from stack Atom 4 Atom 3 Atom 2 Atom 1

Lies: Verarbeite: Pop from stack Atom 3 Atom 2 Atom 1

Lies: Verarbeite: Pop from stack Atom 2 Atom 1

Lies: Verarbeite: Pop from stack Atom 1

Queues Auch bekannt als: FIFO – First In, First Out

Lies: Verarbeite: Start Atom 1

Lies: Verarbeite: Push to queue Atom 1

Lies: Verarbeite: Lies weiter Atom 2 Atom 1

Lies: Verarbeite: Push to queue Atom 2 Atom 1

Lies: Verarbeite: Lies weiter Atom 3 Atom 2 Atom 1

Lies: Verarbeite: Schließlich Atom 5 Atom 4 Atom 3 Atom 2 Atom 1

Lies: Verarbeite: Pop from queue Atom 5 Atom 4 Atom 3 Atom 2 Atom 1

Lies: Verarbeite: Pop from queue Atom 5 Atom 4 Atom 3 Atom 2

Lies: Verarbeite: Pop from queue Atom 5 Atom 4 Atom 3

Lies: Verarbeite: Pop from queue Atom 5 Atom 4

Lies: Verarbeite: Pop from queue Atom 5

Verknüpfte Listen

Erzeuge Atom 1 Atom 1

Kopf: Mache Atom 1 zum Listenkopf Atom 1

Kopf: Erzeuge Atom 2 Atom 1 Atom 2

Kopf: Verbinde Atom 2 mit Liste Atom 1 Atom 2

Kopf: Erzeuge Atom 3 Atom 1 Atom 2 Atom 3

Kopf: Verbinde Atom 3 mit Liste Atom 1 Atom 2 Atom 3

Kopf: Lösche Atom 2 Atom 1 Atom 2 Atom 3

Kopf: Füge Atom 4 ein Atom 1 Atom 3 Atom 4

Verknüpfte Listen

Kopf: Schwanz: Doppelt verknüpfte Liste Atom 1 Atom 2 Atom 3

Kopf: Schwanz: Löschen von Atom 2 Atom 1 Atom 2 Atom 3

Kopf: Schwanz: Einfügen von Atom 4 Atom 1 Atom 4 Atom 3

III. Inhaltliche Datenstrukturen

::= ein 3-Tupel (oder Tripel) { E, I, O } wobei E ::= Externe Darstellung I ::= Interne Darstellung O ::= Menge auf I definierter Operationen (Notation: " ::= " = "definiert als ") Datentypen allgemein:

E Regel für " " I Zeit ist ein Vektor von Tagen seit einem willkürlichen Tag 0, wobei ein beliebiger Tag i als Offset t vom Ursprung definiert ist. O t-less(i,j) ===> Boolean t-less( , ) ===> True t-subtract(i,j) ===> Ganze Zahl t-subtract( , ) ===> 1 Datentyp Zeit allgemein:

E Regel für "pri non jun 2007" I Zeit ist ein Vektor von Tagen seit einem willkürlichen Tag 0, wobei ein beliebiger Tag i als Offset t vom Ursprung definiert ist. O t-less(i,j) ===> Boolean t-less(pri non jun 2007,non jun 2007) ===> True t-subtract(i,j) ===> Ganze Zahl t-subtract(non jun 2007,pri non jun 2007) ===> 1 Datentyp Historische Zeit I

I Zeit ist ein Vektor von Tagen seit einem willkürlichen Tag 0, wobei ein beliebiger Tag i als Offset t vom Ursprung definiert ist. 0 i t Datentyp Historische Zeit I

E Regel für "6 Tammuz 5763" I Zeit ist ein Vektor von Tagen seit einem willkürlichen Tag 0, wobei ein beliebiger Tag i als Offset t vom Ursprung definiert ist. O t-less(i,j) ===> Boolean t-less(6 Tammuz 5763,7 Tammuz 5763) ===> True t-subtract(i,j) ===> Ganze Zahl t-subtract(7 Tammuz 5763,6 Tammuz 5763) ===> 1 Datentyp Historische Zeit II

I Zeit ist ein Vektor von Tagen seit einem willkürlichen Tag 0, wobei ein beliebiger Tag i als Offset t vom Ursprung definiert ist. 0 i t Datentyp Historische Zeit II

E Regel für "Freitag nach Fronleichnam 2007" I Zeit ist ein Vektor von Tagen seit einem willkürlichen Tag 0, wobei ein beliebiger Tag i als Offset t vom Ursprung definiert ist. O t-less(i,j) ===> Boolean t-less(Freitag nach Fronleichnam 2007,Samstag nach Fronleichnam 2007) ===> True t-subtract(i,j) ===> Ganze Zahl t-subtract(Samstag nach Fronleichnam 2007,Freitag nach Fronleichnam 2007) ===> 1 Datentyp Historische Zeit III

I Zeit ist ein Vektor von Tagen seit einem willkürlichen Tag 0, wobei ein beliebiger Tag i als Offset t vom Ursprung definiert ist. 0 i t Datentyp Historische Zeit III

E Regel für " " I Zeit ist ein Vektor von Tagen seit einem willkürlichen Tag 0, wobei ein beliebiger Tag i als Vektor von Offsets t vom Ursprung definiert ist. O t-less(i,j) ===> mehrwertiger Wahrheitswert { True, Undecidable, False } t-less( , ) ===> Undecidable t-subtract(i,j) ===> "Historische Zahl" t-subtract( , ) ===> { 1, 366 } Datentyp Historische Zeit IV

I Zeit ist ein Vektor von Tagen seit einem willkürlichen Tag 0, wobei ein beliebiger Tag i als Vektor von Offsets t vom Ursprung definiert ist. 0 i i t Datentyp Historische Zeit IV

E Regel für " " I Zeit ist ein Vektor von Tagen seit einem willkürlichen Tag 0, wobei ein beliebiger Tag i als Vektor von Offsetpaaren t vom Ursprung definiert ist. O t-less(i,j) ===> kontinuierlicher Wahrheitswert (Z.B. Grad der Überlappung von n Intervallen.) t-less( , ) ===> 99 % t-subtract(i,j) ===> "Historische Zahl" t-subtract( , ) ===> { 0, 200 } Datentyp Historische Zeit V

I Zeit ist ein Vektor von Tagen seit einem willkürlichen Tag 0, wobei ein beliebiger Tag i als Vektor von Offsetpaaren t vom Ursprung definiert ist. 0 i i t Datentyp Historische Zeit IV