Grundlagen der Programm- und Systementwicklung. Anweisungen: Referenzen, Zeiger und organisierter Speicher
|
|
- Werner Hertz
- vor 7 Jahren
- Abrufe
Transkript
1 Grundlagen der Programm- und Systementwicklung Anweisungen: Referenzen, Zeiger und organisierter Speicher Technische Universität München Institut für Informatik Software & Systems Engineering Prof. Dr. Dr. h.c. Manfred Broy Unter Mitarbeit von Dr. Alexander Malkis, Diego Marmsoler, Veronika Bauer M. Broy WS 13/14 : Grundlagen der Programm- und Systementwicklung 1
2 Vorlesungsplanung (siehe Webseite) Einführung Grundbegriffe und Definitionen, Bedeutung und Stellenwert Kernaufgaben, Aktueller Stand der Forschung und Praxis Themen Daten und Rechenstrukturen Konzepte Spezifikation Verifikation von Eigenschaften Funktionale Programme Konzepte Spezifikation Verifikation von Eigenschaften Anweisungs- und objektorientierte Programme Spezifikation Verifikation von Eigenschaften Referenzen und Zeiger M. Broy WS 13/14 : Grundlagen der Programm- und Systementwicklung 2
3 Alias (engl. Aliasing) Ein und dasselbe Attribut eines Zustands (eine gewisse Programmvariable) besitzt mehrere, unterschiedliche Bezeichnungen Aliasgebrauch: bei Programmen, in denen unterschiedliche Bezeichnungen für die gleiche Programmvariable existieren Im einfachsten Fall: statischer Zustandsraum mit Aliastabu Jedes Attribut im Zustandsraum hat genau eine Bezeichnung, die Belegungen der Attribute sind voneinander unabhängig, die Menge der Attribute ist für jeden Zustand gleich. M. Broy WS 13/14 : Grundlagen der Programm- und Systementwicklung 3
4 Aliasing und Zusicherungsbeweis M. Broy WS 13/14 : Grundlagen der Programm- und Systementwicklung 4
5 Aliasing und Zusicherungsbeweis Wir betrachten statt eines Feldes von Variablen a : [0..n] array var Nat mit der Idee, dass a[j] für 0 j n stets eine Programmvariable bezeichnet, eine andere Deklaration, nämlich die einer Variable für ein Feld und schreiben statt der Zuweisung b : var [0..n] array Nat a[i] := a[j] + 1 unter Einhaltung des Alias-Tabus (aber umständlicher) die Zuweisung b := update(b, i, get(b, j) + 1) M. Broy WS 13/14 : Grundlagen der Programm- und Systementwicklung 5
6 Referenz Dient als Verweis (Name) für ein bestimmtes Datenelement Sorte aller Referenzen auf Elemente der Sorte M: Ref M nil : Ref Referenz mit undefiniertem Bezugsobjekt deref : Ref Dereferenzieren eqref : Ref, Ref Bool Identitätsvergleich auf Referenzen adref : Ref nichtstrikt Erzeugen von Referenzen Kurzschreibweise: t für deref(t) t 1 t 2 für eqref(t 1, t 2 ) M. Broy WS 13/14 : Grundlagen der Programm- und Systementwicklung 6
7 Referenz (2) Funktion adref ist nichtstrikt: adref( ) adref( ) = nil Axiome: t 1 t 2 t 1 t 2 nil adref(x) = x M. Broy WS 13/14 : Grundlagen der Programm- und Systementwicklung 7
8 Einfache Referenz Verweist nur auf Elemente, die selbst keine Programmvariablen sind und auch keine Programmvariable enthalten Nach der Dereferenzierung einfacher Referenzen: keine weitere Referenzen, die auf Programmvariablen Bezug nehmen nur Werte M. Broy WS 13/14 : Grundlagen der Programm- und Systementwicklung 8
9 Geflecht Geflecht: Eine Referenzstruktur zur Darstellung möglicherweise unendlicher Elemente Entspricht gerichtetem Graph, der in seinen Knoten Datenelemente, oft auch Programmvariablen, hat Geflechtsstrukturdarstellung für Datenelemente: Man betrachtet statt Gleichungen für Elemente Gleichungen für Referenzen Eine besondere Rolle für Geflechte spielt die Menge der erreichbaren Knoten: Nur diese können ausgehend von einer Referenz (oder einer Menge von Referenzen) gelesen oder verändert werden. Um diese Änderungen transparent zu machen: Vor-/Nachbedingungen als Zusicherungen M. Broy WS 13/14 : Grundlagen der Programm- und Systementwicklung 9
10 x enthält y x enthält y unmittelbar, falls x = f(x 1,..., x n ) für gewisse Elemente x 1,..., x n mit Funktion f, und für ein i mit 1 i n gilt y = x i oder y = deref(x). Sei enthält die transitive Hülle von enthält unmittelbar. Die Aussage x enthält y gilt, falls x enthält y unmittelbar oder x = f(x 1,..., x n ) für gewisse Elemente x 1,..., x n mit Funktion f, und für ein i mit 1 i n gilt x i enthält y oder x ist Referenz und deref(x) enthält y. M. Broy WS 13/14 : Grundlagen der Programm- und Systementwicklung 10
11 Zyklisches und zyklenfreies Geflecht Ein Element x der Sorte Ref heißt zyklisch, wenn gilt: x enthält x. Ein Geflecht heißt zyklenfrei, wenn es kein zyklisches Element enthält. Zyklische Geflechte sind nur dann erzeugbar, wenn die auftretenden Sorten rekursiven Deklarationen entsprechen. M.Broy WS 13/14 : Grundlagen der Programm- und Systementwicklung 11
12 Beispiel: Geflecht über die Sorte Triple sort Triple = cons(left: Ref Triple, root: Nat, right: Ref Triple) leaf(cont: Nat) Ref Triple r 2 = adref(leaf(2)) Ref Triple r 5 = adref(leaf(5)) Ref Triple r 3 = adref(cons(r 2,3,r 7 )) Ref Triple r 7 = adref(cons(r 5,7,r 3 )) cons(,3, ) cons(,7, ) leaf(2) leaf(5) M. Broy WS 13/14 : Grundlagen der Programm- und Systementwicklung 12
13 Beispiel: Einfach verkettete Liste SPEC EVL = { sort Evl α, pair: α, Ref Evl α Evl α data: Evl α α, rl: Evl α Ref Evl α, data(pair(x,r)) = x, x rl(pair(x,r)) = r } nichtstrikt im zweiten Argument, Nichtstriktheit im zweiten Argument bedeutet hier x pair(x, ). Eine einfachste zyklische Liste ist der Fixpunkt r von r = pair(x,r) für jedes x. pair(x,r) M. Broy WS 13/14 : Grundlagen der Programm- und Systementwicklung 13
14 Beispiel: zyklische einfach verkettete Listen M. Broy WS 13/14 : Grundlagen der Programm- und Systementwicklung 14
15 Unterschied zwischen Programmvariable und Referenz Beide Begriffe ergeben Sinn nur in Bezug auf einen Zustand oder organisierten Speicher Operationen für Variablen: Erzeugen einer Variable Zuweisung (+Variablenvergleich) Zugriff auf Wert (Wert im Zustand) für Referenzen: Erzeugen einer Referenz Referenzvergleich Zugriff auf Wert (dereferenzieren) M. Broy WS 13/14 : Grundlagen der Programm- und Systementwicklung 15
16 Organisierter Speicher Besteht aus einer Folge von Adressen und Speicherzellen, Werte der Speicherzellen stellen die unterschiedlichsten Datenelemente dar (einschließlich von Adressen selbst). Zusammenfassung aller Datenelemente, Variablen und Referenzen, die für ein Programm von Bedeutung sind. In dem Speicher einer Rechenmaschine: eine Menge von Speicherplätzen mit ihren Adressen Inhalte ( Werte ) der Speicherzellen sind durch Bitsequenzen gegeben. M. Broy WS 13/14 : Grundlagen der Programm- und Systementwicklung 16
17 Beispiel: wlp für Felder Statt wlp (a[i] a[j]+1, a[i]=a[j]=1) berechnen wir wlp (b update(b, i, get(b,j) + 1), get(b,i) = get(b,j) = 1) = (get(update(b, i, get(b,j) + 1), i) = get(update(b, i, get(b,j) + 1), j) = 1) (get(b,j) + 1 = 1 (i=j get(b,j) + 1 = 1) (i j get(b,j) = 1)) ((get(b,j) = 0 (i=j get(b,j) = 0)) (i j get(b,j) = 1)) (get(b,j) = 0 (i j get(b,j) = 1)) (get(b,j) = 0 i=j). M. Broy WS 13/14 : Grundlagen der Programm- und Systementwicklung 17
18 wlp für erststufige zuweisungsorientierte Programmiersprache mit Variablen im Geflecht. Seien x: var α, e ein Term der Sorte α, ψ eine Zusicherung über Programmvariablen. Sei Ψ die Übersetzung von ψ mit expliziter Evaluation der Variablen. Sei E die Übersetzung von e mit expliziter Evaluation der Variablen. Für eine partielle Abbildung σ von Termen auf Terme sei σ die Erweiterung von σ zu einer totalen Substitution, d.h. σ dom σ = σ und σ Terme\dom σ (f(t 1,,t n )) = f(σ(t 1 ),, σ(t n )) für n-stellige Funktionssymbole f. Seien y 1,, y n die in ψ vorkommenden Variablen auf Referenzen auf Variablen. Dann ist die Übersetzung von wlp(x e, ψ) gleich wlp(x e, Ψ) = S {1,,n} i 1,,n i S value y i = x M. Broy WS 13/14 : Grundlagen der Programm- und Systementwicklung 18
19 Organisierter Speicher (2) M. Broy WS 13/14 : Grundlagen der Programm- und Systementwicklung 19
20 Organisierter Speicher (3) M. Broy WS 13/14 : Grundlagen der Programm- und Systementwicklung 20
21 Organisierter Speicher (4) M. Broy WS 13/14 : Grundlagen der Programm- und Systementwicklung 21
22 Organisierter Speicher (5) M. Broy WS 13/14 : Grundlagen der Programm- und Systementwicklung 22
23 Organisierter Speicher (6) M. Broy WS 13/14 : Grundlagen der Programm- und Systementwicklung 23
24 Übersetzung von Anweisungen in Anweisungen über dem organisierten Speicher M. Broy WS 13/14 : Grundlagen der Programm- und Systementwicklung 24
25 Übersetzung von Anweisungen in Anweisungen über dem organisierten Speicher (2) M. Broy WS 13/14 : Grundlagen der Programm- und Systementwicklung 25
26 Übersetzung von Anweisungen in Anweisungen über dem organisierten Speicher (3) σ upd(newrefstore(newvarstore(σ,d), newvar(σ,d)), h, newref(newvarstore(σ,d), newvar(σ,d))). Hier ist d ein Datenwert, mit dem die Variable h initialisiert wird. M. Broy WS 13/14 : Grundlagen der Programm- und Systementwicklung 26
27 Übersetzung von Anweisungen in Anweisungen über dem organisierten Speicher (4) M. Broy WS 13/14 : Grundlagen der Programm- und Systementwicklung 27
28 Übersetzung von Anweisungen in Anweisungen über dem organisierten Speicher (5) Eine Prozedurskizze zum Einfügen eines Elements n: Nat in eine zweifach verkettete aufsteigend sortierte Liste r: var Ref var Zvl ist auf der nächsten Folie dargestellt. Für h, k : var Ref var Zvl übersetzen wir selektive Zuweisungen an Records der Form pre(k ) h in Zuweisungen an den gesamten Record k : σ upd(σ, pre(val(σ, drf(σ, val(σ,k)))), mzvl(h, elem(val(σ, drf(σ, val(σ,k)))), suc(val(σ, drf(σ, val(σ,k)))) ). M. Broy WS 13/14 : Grundlagen der Programm- und Systementwicklung 28
29 Übersetzung von Anweisungen in Anweisungen über dem organisierten Speicher (6) M. Broy WS 13/14 : Grundlagen der Programm- und Systementwicklung 29
30 Abschließende Bemerkungen Referenzen sind eine Abstraktion des organisierten Speichers. Die Abstraktion ist jedoch schwach die Struktur des organisierten Speichers wird kaum versteckt. Referenzenprogrammierung ist fehleranfällig in bestimmten Standards (MISRA für Software im Automobil) verboten Gewisse Algorithmen auf Datenstrukturen kaum effizient ohne Referenzen zu implementieren In objektorientierten Programmen entsprechen die Objektidentifikatoren den Referenzen. M. Broy WS 13/14 : Grundlagen der Programm- und Systementwicklung 30
Funktionale Programmierung Teil 2 Methodik: Spezifikation, Implementierung, Verifikation
Grundlagen der Programm- und Systementwicklung Funktionale Programmierung Teil 2 Methodik: Spezifikation, Implementierung, Verifikation Technische Universität München Institut für Informatik Software &
MehrModellierung verteilter Systeme Grundlagen der Programm und Systementwicklung
Modellierung verteilter Systeme Grundlagen der Programm und Systementwicklung Wintersemester 2009/10 Prof. Dr. Dr. h.c. Manfred Broy Unter Mitarbeit von Dr. K. Spies, Dr. M. Spichkova, L. Heinemann, P.
MehrFunktionale Programmierung Teil 2 Methodik: Spezifikation, Implementierung, Verifikation
Grundlagen der Programm- und Systementwicklung Funktionale Programmierung Teil 2 Methodik: Spezifikation, Implementierung, Verifikation Technische Universität München Institut für Informatik Software &
MehrC++ - Einführung in die Programmiersprache Zeiger, Referenzen und Strukturen. Leibniz Universität IT Services Anja Aue
C++ - Einführung in die Programmiersprache Zeiger, Referenzen und Strukturen Leibniz Universität IT Services Anja Aue Zeiger (Pointer) Verweis auf eine Speicherstelle. Speicherung einer Speicheradresse.
MehrTheoretische Informatik 1 WS 2007/2008. Prof. Dr. Rainer Lütticke
Theoretische Informatik 1 WS 2007/2008 Prof. Dr. Rainer Lütticke Inhalt der Vorlesung Grundlagen - Mengen, Relationen, Abbildungen/Funktionen - Datenstrukturen - Aussagenlogik Automatentheorie Formale
MehrTechnische Universität München. Vorlesungsgrobstruktur: wo stehen wir, wie geht s weiter
Vorlesungsgrobstruktur: wo stehen wir, wie geht s weiter Kapitel 7 Fortgeschrittene Datenstrukturen Motivation: Lineare Liste: Suchen eines Elements ist schnell O(log n) Einfügen eines Elements ist langsam
MehrEinstieg in die Informatik mit Java
1 / 27 Einstieg in die Informatik mit Java Klassen als Datenstrukturen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 27 1 Überblick: Klassen als Datenstruktur 2 Vereinbarung
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Dynamische Datenobjekte Pointer/Zeiger, Verkettete Liste Eigene Typdefinitionen 1 Zeigeroperatoren & und * Ein Zeiger ist die Speicheradresse irgendeines Objektes. Eine
MehrReihungen. Prof. Dr. Christian Böhm. In Zusammenarbeit mit Gefei Zhang. WS 07/08
Reihungen Prof. Dr. Christian Böhm In Zusammenarbeit mit Gefei Zhang http://www.dbs.ifi.lmu.de/lehre/nfinfosw WS 07/08 2 Ziele Die Datenstruktur der Reihungen verstehen: mathematisch und im Speicher Grundlegende
MehrReihungen. Martin Wirsing. in Zusammenarbeit mit Michael Barth, Fabian Birzele und Gefei Zhang
Reihungen Martin Wirsing in Zusammenarbeit mit Michael Barth, Fabian Birzele und Gefei Zhang http://www.pst.informatik.uni-muenchen.de/lehre/ws0506/infoeinf/ WS 05/06 2 Ziele Die Datenstruktur der Reihungen
MehrDr. Monika Meiler. Inhalt
Inhalt 12 Strukturierte Datentpen - Strukturen... 12-2 12.1 Definition und Deklaration von Strukturtpen und Strukturen... 12-2 12.2 Strukturen als Funktionsparameter und Funktionswert... 12-4 12.3 Felder
MehrDefinition der Hilfsprädikate
Denition der Hilfsprädikate fct sorted = (seq nat s) bool: if #s < 2 then true else rst(s) rst(rest(s)) sorted(rest(s)) a s = ( nat k: k#a = k#s) mit k# = 0 k# j s = if k == j then 1+ k#s else k#s 1 Annotierte
MehrEinstieg in die Informatik mit Java
1 / 24 Einstieg in die Informatik mit Java Klassen als Datenstrukturen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 24 1 Klassen als Datenstruktur 2 Vereinbarung von
MehrKlassen als Datenstrukturen
Einstieg in die Informatik mit Java, Vorlesung vom 27.11.07 Übersicht 1 Klassen als Datenstruktur 2 Vereinbarung von Klassen 3 Erzeugen von Objekten - Instanzen einer Klasse 4 Zugriff auf Attribute 5 Initialisierung
MehrProgrammierung mit C Zeiger
Programmierung mit C Zeiger Zeiger (Pointer)... ist eine Variable, die die Adresse eines Speicherbereichs enthält. Der Speicherbereich kann... kann den Wert einer Variablen enthalten oder... dynamisch
MehrZeiger und dynamischer Speicher
Informatik für Elektrotechnik und Informationstechnik Benedict Reuschling benedict.reuschling@h-da.de Hochschule Darmstadt Fachbereich Informatik WS 2013/14 Zuletzt aktualisiert: 09.12.2013, 07:49 Uhr
MehrLernmodul 7 Algorithmus von Dijkstra
Folie 1 von 30 Lernmodul 7 Algorithmus von Dijkstra Quelle: http://www.map24.de Folie 2 von 30 Algorithmus von Dijkstra Übersicht Kürzester Weg von A nach B in einem Graphen Problemstellung: Suche einer
MehrSchwerpunkte. Verkettete Listen. Verkettete Listen: 7. Verkettete Strukturen: Listen. Überblick und Grundprinzip. Vergleich: Arrays verkettete Listen
Schwerpunkte 7. Verkettete Strukturen: Listen Java-Beispiele: IntList.java List.java Stack1.java Vergleich: Arrays verkettete Listen Listenarten Implementation: - Pascal (C, C++): über Datenstrukturen
Mehr7. Verkettete Strukturen: Listen
7. Verkettete Strukturen: Listen Java-Beispiele: IntList.java List.java Stack1.java Version: 4. Jan. 2016 Vergleich: Schwerpunkte Arrays verkettete Listen Listenarten Implementation: - Pascal (C, C++):
MehrADS: Algorithmen und Datenstrukturen 2
ADS: Algorithmen und Datenstrukturen 2 Teil II Peter F. Stadler & Konstantin Klemm Bioinformatics Group, Dept. of Computer Science & Interdisciplinary Center for Bioinformatics, University of Leipzig 07.
MehrTechnische Universität München SoSe 2015 Institut für Informatik I Mai 2015 Dr. Tobias Lasser. Aufgabe 1 Rechnen mit Landau-Symbolen
Technische Universität München SoSe 2015 Institut für Informatik I-16 27. Mai 2015 Dr. Tobias Lasser Lösungsvorschläge zur Musterklausur zu Algorithmen und Datenstrukturen Aufgabe 1 Rechnen mit Landau-Symbolen
MehrCrashkurs C++ - Teil 1
Crashkurs C++ - Teil 1 Intro Speicherverwaltung Variablen, Pointer, Referenzen Felder statische & dynamische Allozierung Birgit Möller & Denis Williams AG Bioinformatik & Mustererkennung Institut für Informatik
MehrADS: Algorithmen und Datenstrukturen 2
ADS: Algorithmen und Datenstrukturen 2 Teil 4 Prof. Peter F. Stadler & Dr. Christian Höner zu Siederdissen Bioinformatik/IZBI Institut für Informatik & Interdisziplinäres Zentrum für Bioinformatik Universität
MehrAlgorithmen und Datenstrukturen (für ET/IT)
Algorithmen und Datenstrukturen (für ET/IT) Sommersemester 2018 Dr. Stefanie Demirci Computer Aided Medical Procedures Technische Universität München Organisatorisches: Keine Vorlesung nächste Woche wegen
MehrVorlesung Datenstrukturen
Vorlesung Datenstrukturen Graphdarstellungen Maike Buchin 0.6.017 Graphen Motivation: Graphen treten häufig als Abstraktion von Objekten (Knoten) und ihren Beziehungen (Kanten) auf. Beispiele: soziale
MehrInhaltsübersicht. Vorwort 15. Vorwort zur deutschen Ausgabe 22. Kapitel 1 Elemente der Programmierung 25. Kapitel 2 Funktionen und Module 203
Inhaltsübersicht Vorwort 15 Vorwort zur deutschen Ausgabe 22 Kapitel 1 Elemente der Programmierung 25 Kapitel 2 Funktionen und Module 203 Kapitel 3 Objektorientierte Programmierung 335 Kapitel 4 Algorithmen
MehrDatenstrukturen sind neben Algorithmen weitere wichtige Bausteine in der Informatik
5. Datenstrukturen Motivation Datenstrukturen sind neben Algorithmen weitere wichtige Bausteine in der Informatik Eine Datenstruktur speichert gegebene Daten und stellt auf diesen bestimmte Operationen
MehrDynamische Datentypen. Destruktor, Copy-Konstruktor, Zuweisungsoperator, Dynamischer Datentyp, Vektoren
Dynamische Datentypen Destruktor, Copy-Konstruktor, Zuweisungsoperator, Dynamischer Datentyp, Vektoren Probleme mit Feldern (variabler Länge) man kann sie nicht direkt kopieren und zuweisen Probleme mit
MehrVorlesung Datenstrukturen
Vorlesung Datenstrukturen Graphen (1) Darstellung Traversierung Dr. Frank Seifert Vorlesung Datenstrukturen - Sommersemester 2016 Folie 441 Generalisierung von Bäumen Verallgemeinerung (von Listen zu Graphen)
MehrManipulation binärer Bäume Binäre Bäume II
Fakultät Informatik Lehramt Seminar Algorithmierung Programmierung III Kay Strobach Manipulation binärer Bäume Binäre Bäume II Dresden, 26.10.2006 Gliederung Suchen in Bäumen Hinzufügen von Blättern und
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen B7. Balancierte Bäume 1 Marcel Lüthi and Gabriele Röger Universität Basel 13. April 2018 1 Folien basieren auf Vorlesungsfolien von Sedgewick & Wayne https://algs4.cs.princeton.edu/lectures/33balancedsearchtrees-2x2.pdf
MehrC- Kurs 09 Dynamische Datenstrukturen
C- Kurs 09 Dynamische Datenstrukturen Dipl.- Inf. Jörn Hoffmann jhoffmann@informaak.uni- leipzig.de Universität Leipzig InsAtut für InformaAk Technische InformaAk Flexible Datenstrukturen Institut für
MehrInformatik. Pointer (Dynamisch) Vorlesung. 17. Dezember 2018 SoSe 2018 FB Ing - SB Umwelttechnik und Dienstleistung - Informatik Thomas Hoch 1
Informatik Vorlesung 08 Pointer (Dynamisch) 17. Dezember 2018 SoSe 2018 FB Ing - SB Umwelttechnik und Dienstleistung - Informatik Thomas Hoch 1 Pointer (Zeiger) Dynam. Speicher Bisher: Speicherbedarf muss
MehrVerschlüsseln eines Bildes. Visuelle Kryptographie. Verschlüsseln eines Bildes. Verschlüsseln eines Bildes
Verschlüsseln eines Bildes Visuelle Kryptographie Anwendung von Zufallszahlen Wir wollen ein Bild an Alice und Bob schicken, so dass Alice allein keine Information über das Bild bekommt Bob allein keine
MehrÜbersetzung von Datenstrukturen
Übersetzung von Datenstrukturen bisher: Übersetzung von Mini-Java-Exp: Datenkeller zur Auswertung arithm. Ausdrücke Mini-Java: Sprünge zur Simulation von Kontrollstrukturen Mini-Java-FunProc: rekursive
MehrC++ - Objektorientierte Programmierung Konstante und statische Elemente
C++ - Objektorientierte Programmierung Konstante und statische Elemente hat eine Kantenlänge hat eine Füllfarbe Kantenlänge setzen Füllfarbe lesen Volumen berechnen Leibniz Universität IT Services Anja
MehrVorlesung Datenstrukturen
Vorlesung Datenstrukturen Kürzeste Wege Maike Buchin 4. und 6.7.2017 Einführung Motivation: Bestimmung von kürzesten Wegen ist in vielen Anwendungen, z.b. Routenplanung, ein wichtiges Problem. Allgemeine
MehrADS 2: Algorithmen und Datenstrukturen
ADS 2: Algorithmen und Datenstrukturen Teil 2 Prof. Peter F. Stadler & Sebastian Will Bioinformatik/IZBI Institut für Informatik & Interdisziplinäres Zentrum für Bioinformatik Universität Leipzig 16. April
MehrB6.1 Introduction. Algorithmen und Datenstrukturen. Algorithmen und Datenstrukturen. B6.1 Introduction. B6.3 Analyse. B6.4 Ordnungsbasierte Methoden
Algorithmen und Datenstrukturen 11. April 2018 B6. Binäre Suchbäume a Algorithmen und Datenstrukturen B6. Binäre Suchbäume 1 Marcel Lüthi and Gabriele Röger Universität Basel 11. April 2018 a Folien basieren
MehrAlgorithmen und Datenstrukturen (für ET/IT) Wiederholung: Ziele der Vorlesung. Wintersemester 2012/13. Dr. Tobias Lasser
Algorithmen und Datenstrukturen (für ET/IT) Wintersemester 2012/13 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Wiederholung: Ziele der Vorlesung Wissen: Algorithmische
MehrGrundlagen der Informatik
Grundlagen der Informatik Klausur 1. August 2008 1. Dynamische Datenstrukturen und objektorientierte Programmierung (45 Punkte) Gegeben sei eine Datenstruktur mit folgendem Aufbau struct lelem { int w;
MehrAlgorithmen und Datenstrukturen (für ET/IT)
Algorithmen und Datenstrukturen (für ET/IT) Wintersemester 2012/13 Dr. Tobias Lasser Computer Aided Medical Procedures Technische Universität München Wiederholung: Ziele der Vorlesung Wissen: Algorithmische
MehrGrundlagen der Informatik
Grundlagen der Informatik Musterklausur 1. Dynamische Datenstrukturen und objektorientierte Programmierung Zur Verwaltung einer digitalen Fotogalerie sollen Techniken der objektorientierten Programmierung
MehrUE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1. Übung 9. Sortieren
UE Algorithmen und Datenstrukturen 1 UE Praktische Informatik 1 Übung 9 Sortieren Institut für Pervasive Computing Johannes Kepler Universität Linz Altenberger Straße 69, A-4040 Linz Sortieren :: Problemstellung
MehrGrundlagen der Informatik. von Prof. Dr. Peter Pepper Technische Universität Berlin
Grundlagen der Informatik von Prof. Dr. Peter Pepper Technische Universität Berlin R. Oldenbourg Verlag München Wien 1992 Inhalt Vorwort 11 Prolog 13 1. Über den Begriff Information" 19 1.1 Information
MehrEinführung in die Objektorientierte Programmierung Vorlesung 18: Lineare Datenstrukturen. Sebastian Küpper
Einführung in die Objektorientierte Programmierung Vorlesung 18: Lineare Datenstrukturen Sebastian Küpper Unzulänglichkeit von Feldern Wenn ein Unternehmen alle Rechnungen eines Jahres verwalten möchte,
MehrInformatik II Übung 05. Benjamin Hepp 3 April 2017
Informatik II Übung 05 Benjamin Hepp benjamin.hepp@inf.ethz.ch 3 April 2017 Java package Hierarchie import.. nur noetig um Klassen aus anderen Packeten zu importieren Es kann auch immer der vollstaendige
MehrProgrammieren für Fortgeschrittene
Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme Wintersemester 2011/12 Programmieren für Fortgeschrittene Rekursive Spezifikationen Die folgende
Mehr1.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
MehrGrundlagen der Informatik I (Studiengang Medieninformatik)
Grundlagen der Informatik I (Studiengang Medieninformatik) Thema: 3. Datentypen, Datenstrukturen und imperative Programme Prof. Dr. S. Kühn Fachbereich Informatik/Mathematik Email: skuehn@informatik.htw-dresden.de
MehrDoppelt verkettete Listen (1)
Doppelt verkettete Listen (1) Verkettete Listen bestehen aus einer Menge linear angeordneter Objekte. Anordnung realisiert durch Verweise. Unterstützen Operationen Insert, Delete, Search, usw. (nicht unbedingt
MehrLösungsvorschläge und Erläuterungen Klausur zur Vorlesung Grundbegriffe der Informatik 6. März 2017
Lösungsvorschläge und Erläuterungen Klausur zur Vorlesung Grundbegriffe der Informatik 6. März 2017 Klausurnummer Nachname: Vorname: Matr.-Nr.: Diese Klausur ist mein 1. Versuch 2. Versuch in GBI Email-Adr.:
MehrUniversität München, Hans-Peter Kriegel und Thomas Seidl Informatik II a[0] a[1] a[2] a[3] a[n 1]
Universität München, Hans-Peter Kriegel und Thomas Seidl Informatik II -108 Kapitel 5: Arrays Einführung Ein Array ist eine Reihung gleichartiger Objekte. a: a[0] a[1] a[2] a[3] a[n 1] Bezeichner a steht
MehrAllgemeine Hinweise: TECHNISCHE UNIVERSITÄT MÜNCHEN. Name Vorname Studiengang Matrikelnummer. Hörsaal Reihe Sitzplatz Unterschrift
TECHNISCHE UNIVERSITÄT MÜNCHEN FAKULTÄT FÜR INFORMATIK Lehrstuhl für Sprachen und Beschreibungsstrukturen WS 2008/09 Einführung in die Informatik 2 Klausur Prof. Dr. Helmut Seidl, T. M. Gawlitza, S. Pott,
MehrInhaltsverzeichnis. Inhalt. Bemerkung... 9 Vorwort Programme und Programmiersprachen
Inhalt 3 Bemerkung... 9 Vorwort... 10 1 Programme und Programmiersprachen 1.1 Assembler... 13 1.2 Höhere Programmiersprachen... 15 1.2.1 Interpreter... 16 1.2.2 Compiler... 17 1.2.3 Zwischencode... 18
Mehr10 Abstrakte Datentypen
10 Abstrakte Datentypen abstrakte Datentypen generische Implementierung datengesteuerte Programmierung Operationstabelle 10.1 Abstrakte Datentypen Bisher: Konkrete Datentypen Menge von Elementen Operationen
Mehr4.2 Daten und Datenstrukturen
4.2 Daten und Datenstrukturen Daten Fundamentale Objekte, die in der Rechenanlage erfasst gespeichert ausgegeben (angezeigt, gedruckt) bearbeitet gelöscht werden können. Beispiele: Zahlen, Zeichenfolgen
MehrVerkettete Datenstrukturen: Bäume
Verkettete Datenstrukturen: Bäume 1 Graphen Gerichteter Graph: Menge von Knoten (= Elementen) + Menge von Kanten. Kante: Verbindung zwischen zwei Knoten k 1 k 2 = Paar von Knoten (k 1, k 2 ). Menge aller
MehrBäume, Suchbäume und Hash-Tabellen
Im folgenden Fokus auf Datenstrukturen, welche den assoziativen Zugriff (über einen bestimmten Wert als Suchkriterium) optimieren Bäume: Abbildung bzw. Vorberechnung von Entscheidungen während der Suche
MehrADS: Algorithmen und Datenstrukturen 2
ADS: Algorithmen und Datenstrukturen 2 Teil 3 Prof. Peter F. Stadler & Dr. Christian Höner zu Siederdissen Bioinformatik/IZBI Institut für Informatik & Interdisziplinäres Zentrum für Bioinformatik Universität
MehrReihungen und Prozeduren
Reihungen und Prozeduren Martin Wirsing in Zusammenarbeit mit Moritz Hammer und Axel Rauschmayer http://www.pst.ifi-lmu.de/lehre/ss06/info2/ SS 06 Ziele Die Datenstruktur der Reihungen verstehen: mathematisch
MehrAlgorithmen und Datenstrukturen
Universität Innsbruck Institut für Informatik Zweite Prüfung 16. Oktober 2008 Algorithmen und Datenstrukturen Name: Matrikelnr: Die Prüfung besteht aus 8 Aufgaben. Die verfügbaren Punkte für jede Aufgabe
MehrEinstieg in die Informatik mit Java
1 / 25 Einstieg in die Informatik mit Java Objektorientierte Programmierung und Klassen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 25 1 Die Philosophie 2 Definition
Mehr7. Sortieren Lernziele. 7. Sortieren
7. Sortieren Lernziele 7. Sortieren Lernziele: Die wichtigsten Sortierverfahren kennen und einsetzen können, Aufwand und weitere Eigenschaften der Sortierverfahren kennen, das Problemlösungsparadigma Teile-und-herrsche
MehrSoftware Entwicklung 1. Rekursion. Beispiel: Fibonacci-Folge I. Motivation. Annette Bieniusa / Arnd Poetzsch-Heffter
Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter AG Softech FB Informatik TU Kaiserslautern Rekursion Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 27 Motivation Beispiel: Fibonacci-Folge
MehrProgrammieren in Haskell. Stefan Janssen. Strukturelle Rekursion. Universität Bielefeld AG Praktische Informatik. 10.
Universität Bielefeld AG Praktische Informatik 10. Dezember 2014 Wiederholung: Schema: f :: [σ] -> τ f [] = e 1 f (a : as) = e 2 where s = f as wobei e 1 und e 2 Ausdrücke vom Typ τ sind und e 2 die Variablen
Mehr14. Rot-Schwarz-Bäume
Bislang: Wörterbuchoperationen bei binären Suchbäume effizient durchführbar, falls Höhe des Baums klein. Rot-Schwarz-Bäume spezielle Suchbäume. Rot-Schwarz-Baum mit n Knoten hat Höhe höchstens 2 log(n+1).
MehrAlgorithmen und Datenstrukturen 2. Dynamische Datenstrukturen
Algorithmen und Datenstrukturen 2 Dynamische Datenstrukturen Algorithmen für dynamische Datenstrukturen Zugriff auf Variable und Felder durch einen Ausdruck: Namen durch feste Adressen referenziert Anzahl
MehrProgrammierwerkstatt. Arrays, Pointer und Referenzen
Programmierwerkstatt Arrays, Pointer und Referenzen Zum Inhalt Wir wollen Euch: das Wesentliche vermitteln Fehlerquellen verdeutlichen Verständnis ist uns wichtig programming by coincidence vermeiden Themen
MehrGliederung. n Teil I: Einleitung und Grundbegriffe. n Teil II: Imperative und objektorientierte Programmierung
Gliederung n Teil I: Einleitung und Grundbegriffe l 1. Organisatorisches l 2. Grundlagen von Programmiersprachen n Teil II: Imperative und objektorientierte Programmierung l 1. Grundelemente der Programmierung
MehrSeminar Mathematische Logik L-Strukturen und Syntax der Prädikatenlogik
Seminar Mathematische Logik L-Strukturen und Syntax der Prädikatenlogik Linda Raabe 7. März 2012 1 L-Strukturen Definition 1.1 (Struktur) Eine Struktur A ist eine nichtleere Trägermenge A zusammen mit
MehrEinführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1. Kapitel 11. Listen. Listen
Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 1 Kapitel 11 Einführung in die Informatik: Programmierung und Software-Entwicklung, WS 11/12 2 Ziele Implementierungen für
MehrAlgebraische 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
MehrSoftware Entwicklung 1. Fallstudie: Arithmetische Ausdrücke. Rekursive Klassen. Überblick. Annette Bieniusa / Arnd Poetzsch-Heffter
Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter Fallstudie: Arithmetische Ausdrücke AG Softech FB Informatik TU Kaiserslautern Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 33 Überblick
MehrAlgorithmen I - Tutorium 28 Nr. 3
Algorithmen I - Tutorium 28 Nr. 3 18.05.2016: Spaß mit Listen, Arrays und amortisierter Analyse Marc Leinweber marc.leinweber@student.kit.edu INSTITUT FÜR THEORETISCHE INFORMATIK (ITI), PROF. DR. JÖRN
MehrProgrammierkurs C++ Templates & STL (1/2)
Programmierkurs C++ Templates & STL (1/2) Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck https://www.itm.uni-luebeck.de/people/fischer #2 Templates Die wichtigsten objekt-orientierten
MehrAlgorithmen und Datenstrukturen
Algorithmen und Datenstrukturen Prof. Martin Lercher Institut für Informatik Heinrich-Heine-Universität Düsseldorf Algorithmen und Datenstrukturen Teil 3 Suchen in Listen Version vom: 15. November 2016
MehrC. A. R. Hoare. An Axiomatic Basis for Computer Programming. Nicolas Schelp. Proseminar Assertions SS 2007
C. A. R. Hoare An Axiomatic Basis for Computer Programming Nicolas Schelp Proseminar Assertions SS 2007 Inhalt Motivation Kurze Biographie Der Hoare-Kalkül Axiome und Inferenzregeln des Hoare-Kalküls Die
MehrPerlkurs WS 2014/15: 08 Referenzen
Perlkurs WS 2014/15: 08 Referenzen Matthias Schlesner Theoretische Bioinformatik, DKFZ Nov 28/Dec 1, 2014 Matthias Schlesner (DKFZ) Perlkurs WS 2014/15: 08 Referenzen Nov 28/Dec 1, 2014 1 / 40 Planung
MehrProjekt Systementwicklung
Projekt Systementwicklung Coding Idiome in C: Zeiger und Felder Prof. Dr. Nikolaus Wulff Coding Idiome Viele Dinge in der Informatik sind allgemein gültig, unabhängig von der verwendeten Plattform und
MehrEINI WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12
EINI WiMa Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 11/12 Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@udo.edu http://ls1-www.cs.uni-dortmund.de
MehrLösungsvorschläge zur Hauptklausur Datenstrukturen
Lösungsvorschläge zur Hauptklausur 9 9 166211663 Datenstrukturen 9. August 2003 Seite 2 Lösungsvorschlage zur Klausur vom 9.08.2003 Kurs 166211663,,Datenstrukturen" Aufgabe 1 Bei jedem rekursiven Aufruf
MehrGliederung. 5. Compiler. 6. Sortieren und Suchen. 7. Graphen
5. Compiler Gliederung 1. Struktur eines Compilers 2. Syntaxanalyse durch rekursiven Abstieg 3. Ausnahmebehandlung 4. Arrays und Strings 6. Sortieren und Suchen 1. Grundlegende Datenstrukturen 2. Bäume
MehrEarly first draft Höllische Programmiersprachen Seminar im WS 2014/15 Speichermanagement
Early first draft Höllische Programmiersprachen Seminar im WS 2014/15 Speichermanagement Max Haslbeck Technische Universität München 20.01.2015 Zusammenfassung 1 Einleitung 2 Begriffsklärung Heutzutage
Mehr13 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)
MehrWiederholung. Bäume sind zyklenfrei. Rekursive Definition: Baum = Wurzelknoten + disjunkte Menge von Kindbäumen.
Wiederholung Baum: Gerichteter Graph, der die folgenden drei Bedingungen erfüllt: Es gibt einen Knoten, der nicht Endknoten einer Kante ist. (Dieser Knoten heißt Wurzel des Baums.) Jeder andere Knoten
Mehr6. Verkettete Strukturen: Listen
6. Verkettete Strukturen: Listen 5 K. Bothe, Inst. f ür Inf., HU Berlin, PI, WS 004/05, III.6 Verkettete Strukturen: Listen 53 Verkettete Listen : Aufgabe Vergleich: Arrays - verkettete Listen Listenarten
MehrProgrammierkurs. SoSe Markus Geveler Inst. f. Applied Mathematics, TU Dortmund.
Programmierkurs SoSe 2013 Markus Geveler Inst. f. Applied Mathematics, TU Dortmund markus.geveler@math.tu-dortmund.de Lesson 5 Was machen wir heute hier? weiter mit Objektorientierter Programmierung viel
MehrEINI LW. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12
EINI LW Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 11/12 Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@udo.edu http://ls1-www.cs.uni-dortmund.de
Mehr1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie
Gliederung 1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie 2/2, Folie 1 2014 Prof. Steffen Lange - HDa/FbI
MehrMehrsortige Strukturen
Was bisher geschah Modellierung von Daten durch Mengen (Individuenbereiche), häufig zusammengesetzt durch Mengenoperationen, Zusammenhängen zwischen Individuen durch Relationen (auch Eigenschaften) Funktionen
MehrSoftware Entwicklung 1
Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter AG Softech FB Informatik TU Kaiserslautern Fallstudie: Arithmetische Ausdrücke Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 33 Überblick
MehrThemenübersicht Verwendung im Studium Voraussetzungen Ziele Website zum Buch Danksagungen... 21
Vorwort 15 Themenübersicht... 15 Verwendung im Studium... 17 Voraussetzungen... 18 Ziele.... 19 Website zum Buch... 20 Danksagungen... 21 Vorwort zur deutschen Ausgabe 22 Übersetzung... 22 Verwendung in
MehrMapra: C++ Teil 4. Felix Gruber. 6. Mai IGPM, RWTH Aachen. Felix Gruber (IGPM, RWTH Aachen) Mapra: C++ Teil 4 6.
Mapra: C++ Teil 4 Felix Gruber IGPM, RWTH Aachen 6. Mai 2015 Felix Gruber (IGPM, RWTH Aachen) Mapra: C++ Teil 4 6. Mai 2015 1 / 22 Themen vom letzten Mal Kompilieren mit Makefiles Ein-/Ausgabe über Dateien
MehrDr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund
EINI LW/WiMa Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 12/13 Dr. Lars Hildebrand Fakultät für Informatik Technische Universität Dortmund lars.hildebrand@tu-dortmund.de
MehrSoftware Entwicklung 1
Software Entwicklung 1 Annette Bieniusa / Arnd Poetzsch-Heffter AG Softech FB Informatik TU Kaiserslautern Datenstruktur Liste Bieniusa/Poetzsch-Heffter Software Entwicklung 1 2/ 42 Formale Definition
Mehr1 Klassen und Objekte
1 Klassen und Objekte Datentyp - Spezifikation des Typs von Datenobjekten Datenstruktur - logische Ordnung von Elementen eines Datentyps - zur (effizienten) Speicherung, Verwaltung, Zugriff - auf die Elemente
MehrDie verschiedenen Programmierparadigmen von C++ Software-Technik: Vom Programmierer zur erfolgreichen
Software-Technik: Vom Programmierer zur erfolgreichen 2. Funktionen und Datenstrukturen 2.1 Funktionale Abstraktion (Funktionen) 2.2 Funktionale Abstraktion bei der Netzplanung 2.3 Datenabstraktion: Strukturierte
MehrMartin Unold INFORMATIK. Geoinformatik und Vermessung
Wiederholung So sieht ein leeres Java-Programm aus public class Programmname { public static void main (String[] args) { // Hier stehen die Anweisungen Welche Arten von Anweisungen gibt es? Anweisungen
Mehr