Einführung in die Informationsverarbeitung Teil Thaller Stunde II: Datenstrukturen Köln 25. Oktober 2012.

Slides:



Advertisements
Ähnliche Präsentationen
Imperative Programmierung
Advertisements

Hash-Tabellen und -Funktionen Hash-Tabellen in Java
Eine dynamische Menge, die diese Operationen unterstützt,
Sortieren I - Bubblesort -
Kapitel 5. Stacks und Queues
10. Grundlagen imperativer Programmiersprachen
der Universität Oldenburg
MS Office-Paket: Access
Softwaretechnologie für Fortgeschrittene Teil Thaller Stunde I: Bildverarbeitung I Köln 19. November 2009.
Einführung in die Informationsverarbeitung Teil Thaller Stunde II: Datenstrukturen Köln 13. November 2008.
Einführung in die Informationsverarbeitung Stunde II: Datenstrukturen Manfred Thaller, Universität Köln Köln 22. Oktober 2007.
Gliederung Motivation / Grundlagen Sortierverfahren
Java: Dynamische Datentypen
Indirekte Adressierung
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.
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.
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)
Beispiele für Ausdrucksalgebren
Einführung Wat jibt´s denn? Mit Computa kenn´ ick mir aus! Guten Tag,
Informatik Klasse 7 Grundlagen.
Access 2000 Datenbanken.
boolean Datentyp und Operator
Stacks Referat im Fach Basisinformationstechnologien von Venelina Koleva.
FH-Hof Algorithmen und Datenstrukturen - Einführung Richard Göbel.
In die erste Zeile jeweils Überschriften für die Spalten eingeben, z.B.: Dann in die Spalten die Daten eingeben! In die Spalte Bemerkung werden Daten.
Weiter mit Mausklick. Anrufer: H HH Hi, ich hab hier ein neues Programm, das würd ich gern auf meinem persönlichen Rechner installieren Es heißt Liebe".
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)
Excel verschiedene Anwendungen
Einführung in die Programmierung
Chair of Software Engineering Einführung in die Programmierung Prof. Dr. Bertrand Meyer Lecture 13: (Container-)Datenstrukturen.
Quantum Computing Hartmut Klauck Universität Frankfurt WS 04/
Folie 1 Kapitel IV. Matrizen Inhalt: Matrizen als eigenständige mathematische Objekte Zusammenhang zwischen Matrizen und linearen Abbildungen Produkt von.
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
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.
1 Branko Tošović SLAWISCHE SRIFTSYSTEME SLOWENISCH SLOVENSKIJEZIK SLOVENŠČINA.
Trust and context using the RDF- Source related Storage System (RDF‑S3) and easy RQL (eRQL) Karsten Tolle und Fabian Wleklinski.
Variablen in Programmiersprachen
Datentypen: integer, char, string, boolean
Agenda für heute, 7. April, 2005 Bedingte ProgrammausführungBedingte Programmausführung Algorithmische Grundlagen Vergleichsoperatoren, Wahrheitswerte.
Agenda für heute, 14. April, 2005 Wiederholte ProgrammausführungWiederholte Programmausführung Algorithmische Grundlagen Bedingungen zum Abbruch von Programmschleifen.
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Informatik III Christian Schindelhauer Wintersemester.
G D f r J x L n H.
Softwaretechnologie für Fortgeschrittene Teil Thaller Stunde I: Bildverarbeitung I Köln 6. November 2014.
7. Formale Sprachen und Grammatiken
(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)
W ILLKOMMEN ! Das Computerspiel ``Märchenland`` D IE DREI S TUFEN.
Variablen und Datentypen
Pool Informatik, Sj 11/12 GZG FN W.Seyboldt 1 Pool Informatik 5 GZG FN Sj. 11/12 Kopieren, Daten, Programme.
1 Grundkörper Kegel Höhe 100 xyz A-4000 B C -350 D0-400 E F G4000 H35200 I 350 J0400 K L ,0,0.
Softwaretechnologie für Fortgeschrittene Teil Thaller Stunde I: Bildverarbeitung I Köln 15. November 2012.
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
Prof. J. Walter Bitte römische Zahlen im Geschichtsunterricht!
 Präsentation transkript:

Einführung in die Informationsverarbeitung Teil Thaller Stunde II: Datenstrukturen Köln 25. Oktober 2012

Anschluss an die erste Stunde 2

1."Selbstabbildende Information". Es kann "gerechnet" werden. Bilder. 2."Kodierte Information". Zeichenketten und Teilketten können verglichen werden. Texte. 3."Symbolische Information". Terme können verglichen werden. Terminologien, "Ontologien" u.ä. * „Arten“ von Information 3

I. Grundbegriffe 4

dada ist in zürich geboren. zieht man straßburg von zürich ab so bleibt Hans Arp, “Strassburgkonfiguration”, in: ich bin in der Natur geboren. Ausgewählte Gedichte. Hrsg. V. H. Bolliger et al., Zürich-Hamburg,

Zahlen Bilder Zeichenketten Geburtstage Briefe Datentyp 6

Addieren Komprimieren Vergleichen Abstand berechnen Beziehen Operationen 7

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

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

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

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 11

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

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

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

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

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

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

Diagrammatische Darstellung: A „zeigt auf“ B Datenstruktur „Zeiger“ AB 18

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

Speicher als „karierte Zeile“ Datenstruktur im Speicher

Zahl „14123“ in Bytes 0 bis 1 Zahl „22445“ 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 25

II. Technische Datenstrukturen 26

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

Lies: Verarbeite: Start Atom 1 28

Lies: Verarbeite: „Push to stack“ Atom 1 29

Lies: Verarbeite: „Lies weiter“ Atom 2 Atom 1 30

Lies: Verarbeite: „Push to stack“ Atom 2 Atom 1 31

Lies: Verarbeite: „Lies weiter“ Atom 3 Atom 2 Atom 1 32

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

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

Lies: Verarbeite: „Pop from stack“ Atom 4 Atom 3 Atom 2 Atom 1 35

Lies: Verarbeite: „Pop from stack“ Atom 3 Atom 2 Atom 1 36

Lies: Verarbeite: „Pop from stack“ Atom 2 Atom 1 37

Lies: Verarbeite: * „Pop from stack“ Atom 1 38

Queues Auch bekannt als: „FIFO“ – First In, First Out 39

Lies: Verarbeite: Start Atom 1 40

Lies: Verarbeite: „Push to queue“ Atom 1 41

Lies: Verarbeite: „Lies weiter“ Atom 2 Atom 1 42

Lies: Verarbeite: „Push to queue“ Atom 2 Atom 1 43

Lies: Verarbeite: „Lies weiter“ Atom 3 Atom 2 Atom 1 44

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

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

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

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

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

Lies: Verarbeite: * Pop from queue Atom 5 50

Einfach Verknüpfte Listen 51

Erzeuge Atom 1 Atom 1 52

Kopf: Mache Atom 1 zum Listenkopf Atom 1 53

Kopf: Erzeuge Atom 2 Atom 1 Atom 2 54

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

Kopf: Erzeuge Atom 3 Atom 1 Atom 2 Atom 3 56

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

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

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

Doppelt Verknüpfte Listen 60

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

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

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

III. Inhaltliche Datenstrukturen 64

::= 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: 65

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: 66

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 67

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 68

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 69

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 70

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 71

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 72

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 73

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 74

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 75

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 76

IV. Datenstruktur aus dem Softwarengineering 77

Ein Bild 78

6 Zeilen 5 Spalten Ein Bild 79

5 Zeilen 6 Spalten Ein Bild 80

== oker 0 == rot Ein Bild 81

== blau 0 == gelb Ein Bild 82

Speicherung: 1,1,1,1,1,1,0,0, 0,1,1,1,0,1,1,1, 1,0,1,1,1,1,0,1, 1,1,1,1,1,1 Unkomprimiert Ein Bild 83

Store: 6,1,3,0,3,1,1,0, 4,1,1,0,4,1,1,0, 7,1 (Compressed) Run Length Encoded Ein Bild 84

1,12,13,14,15,1 1,22,23,24,25,2 1,32,33,34,35,3 1,42,43,44,45,4 1,52,53,54,55,5 1,62,63,64,65,6 Speicherung: SetSize: 5 by 6 SetBackgroundColor: Ochre SetForegroundColor: Red SetLetterHeight: 4 MoveTo: 3,5 DrawLetter: T Vector Format Ein Bild 85

6 Zeilen 5 Spalten 1 == oker 0 == rot Unkomprimiert Ein Bild 86

Dimensionen 1 == ochre 0 == red Uncompressed Ein Bild 87

Dimensionen Photogrammetrische Interpretation Unkomprimiert Ein Bild 88

Dimensionen Photogrammetrische Interpretation Kompressionstechnik Ein Bild 89

Ein Bild 90

(implizit / explizit) (implicit / explicit) (implicit / explicit) … und die Daten? Ein Bild 91

Daten entweder als Datenstrom 1,1,1,1,1,1, 0,0,0,1,1,1, 0,1,1,1,1,0, 1,1,1,1,0,1, 1,1,1,1,1,1 Ein Bild 92

Daten entweder als Datenstrom oder als Verarbeitungsanweisungen SetSize: 5 by 6 SetBackgroundColor: Ochre SetForegroundColor: Red SetLetterHeight: 4 MoveTo: 3,5 DrawLetter: T Ein Bild 93

Praktische Bedeutung? 94

Processing dictionary Payload “Bit rot” 95

xxx 221 Die Beschädigung eines Bytes führt dazu, dass ein Byte nicht korrekt dargestellt werden kann. “Bit rot” 96

002xxx “Bit rot” Die Beschädigung eines Bytes führt dazu, dass zehn Bytes nicht korrekt dargestellt werden können. 97

Wird die relativ geringe Datenmenge des Processing Dictionary „robust“ gemacht, sind Verletzungen der großen Menge an Payload Daten relativ harmlos. 98

Danke für heute! 99