Informatik 11 Kapitel 2 - Rekursive Datenstrukturen

Größe: px
Ab Seite anzeigen:

Download "Informatik 11 Kapitel 2 - Rekursive Datenstrukturen"

Transkript

1 Fachschaft Informatik Informatik 11 Kapitel 2 - Rekursive Datenstrukturen Michael Steinhuber König-Karlmann-Gymnasium Altötting 15. Januar 2016 Folie 1/77

2 Inhaltsverzeichnis I 1 Datenstruktur Schlange Warteschlange als Feld Warteschlange als Liste Die Methode einfuegen() Die Methode informationenausgeben() Die Methode entfernen() 2 Trennung von Struktur und Inhalt 3 Modellierungsaufgabe 4 Datenstruktur Liste 5 Entwurfsmuster Kompositum 6 Datenstruktur Stapel 7 Datenstruktur Schlange 8 Die rekursive Datenstruktur Baum Folie 2/77

3 Inhaltsverzeichnis II Suchen in Binärbäumen Einfügen in Binärbäume Baum und Kompositum Baumdurchlauf Exkurs 1 - Knoten löschen Exkurs 2 - B-Baum 9 Die Datenstruktur Graph Eigenschaften von Graphen Adjazenzmatrix Breitensuche Tiefensuche Adjazenzliste Dijkstra-Alorithmus Folie 3/77

4 2.1 Datenstruktur Schlange Folie 4/77

5 2.1.1 Warteschlange als Feld Übung Warteschlange mit Datenstruktur Feld Implementiere eine Warteschlange mit Hilfe der Datenstruktur Feld, die die abgebildeten Attribute und Methoden besitzt. Folie 5/77

6 Nachteile dieser Implementierung Die Warteschlange besitzt immer eine maximale Anzahl an Elementen (selbst bei sehr hoher Feldgröße). Im Feld gibt es fast immer freie Plätze (Verschwendung von Speicherplatz). Beim Entfernen von Elementen müssen die übrigen Elemente aufrücken (sehr umständlich). Folie 6/77

7 2.1.2 Warteschlange als Liste Objektdiagramm einer Warteschlange Folie 7/77

8 Klassendiagramm der Warteschlange Folie 8/77

9 Erweitertes Klassendiagramm der Warteschlange Folie 9/77

10 2.1.3 Die Methode einfuegen() Folie 10/77

11 Folie 11/77

12 Folie 12/77

13 2.1.4 Die Methode informationenausgeben() Folie 13/77

14 2.1.5 Die Methode entfernen() Folie 14/77

15 Folie 15/77

16 Folie 16/77

17 Kundenwarteschlange Plane eine Warteschlange Kunden. An welchen Stellen unserer Implementierung müssen wir Änderungen vornehmen? Probleme bei dieser Art der Implementierung Die Klasse Patient hat zwei Aufgaben: (A) Verwaltung der Daten (Patientenname) (B) Verwaltung der Referenzen auf die Nachfolger Dies stört bei der Wiederverwendung der WARTESCHLANGE für andere Zwecke (z.b. Druckaufträge). Lösung/Ziel ist es, die Aufgabe (B) in eine eigene Klasse KNOTEN auszulagern. Folie 17/77

18 2.2 Trennung von Struktur und Inhalt Objektdiagramm der Warteschlange Folie 18/77

19 2.2 Trennung von Struktur und Inhalt Klassendiagramm der Warteschlange Folie 19/77

20 2.2 Trennung von Struktur und Inhalt Probleme bei dieser Art der Implementierung Die Klassen WARTESCHLANGE und KNOTEN müssen immer noch wissen, welche Elemente (der Typ der Elemente) sie verwalten. Folie 20/77

21 2.2 Trennung von Struktur und Inhalt Klassendiagramm der Warteschlange Folie 21/77

22 Warteschlange mit Java API import java.util. LinkedList; public class WARTESCHLANGE { private LinkedList <DATENELEMENT > Warteschlange; public WARTESCHLANGE() { Warteschlange = new LinkedList <DATENELEMENT >(); } public void einfuegen( DATENELEMENT neuesdatenelement) { Warteschlange.add( neuesdatenelement); } public DATENELEMENT entfernen() { return Warteschlange. remove(); } public void informationenausgeben() { for(int i = 0; i< Warteschlange.size(); i++) { System.out. print( Warteschlange.get(i). informationenausgeben() + " " ); } System.out. println(); } } Folie 22/77

23 2.3 Modellierungsaufgabe 1 1 Quelle: Abitur Informatik Bayern 2011 Folie 23/77

24 2.3 Modellierungsaufgabe 2 2 Quelle: Abitur Informatik Bayern 2011 Folie 24/77

25 2.3 Modellierungsaufgabe Folie 25/77

26 Erweiterte Anforderungen an die Datenstruktur Wir wollen unsere Datenstruktur erweitern: Elemente sollen an bestimmten Stellen der Warteschlange angefügt und entfernt werden könnten. Dies gilt auch für ganz vorne. Die Warteschlange soll Informationen darüber ausgeben, wie viele Knoten sie beinhaltet. Es soll überprüft werden können, ob sich ein Datenelement in der Warteschlange befindet. Folie 26/77

27 2.4 Datenstruktur Liste Liste Da diese Anforderungen über die an eine Warteschlange hinausgehen, bezeichnen wir die Datenstruktur als einfach verkettete Liste. Folie 27/77

28 2.4 Datenstruktur Liste Operationen auf Zeichenketten Um Zeichenketten (und andere Objekte) miteinander vergleichen zu können gibt es verschiedene Methoden: equals(vergleichswert):boolean: Gibt true zurück, falls Zeichenketten identisch, sonst false (Beispiel: variable.equals( Test );) compareto(vergleichswert):int: Gibt eine ganze Zahl zurück. Dabei entspricht bei [StringA] compareto [StringB]: =0: Beide Strings sind identisch. <0: [StringA] kommt lexikographisch vor [StringB]. >0: [StringB] kommt lexikographisch vor [StringA]. Folie 28/77

29 2.5 Entwurfsmuster Kompositum In fast allen Methoden der Klasse KNOTEN wird eine Fallunterscheidung bezüglich des Nachfolgers (für letzten Knoten) benötigt. Um diese zu umgehen, hat es sich bewährt, eine eigene Klasse ABSCHLUSS zu definieren, die kein Datenelement referenziert, sondern nur das Ende der Liste verwaltet. ABSCHLUSS und KNOTEN sind Unterklassen der Klasse LISTENELEMENT, welche nur die Signaturen der Methoden beinhaltet. Folie 29/77

30 2.5 Entwurfsmuster Kompositum Entwurfsmuster Kompositum Kompositum ist ein Entwurfsmuster (engl. Design Pattern) in der Softwareentwicklung. Diese Entwurfsmuster sind bewährte Lösungsschablonen für wiederkehrende Entwurfsprobleme. In allgemeiner Form sieht dieses Entwurfsmuster so aus: Folie 30/77

31 Folie 31/77

32 2.6 Datenstruktur Stapel Prinzip: Last in First out LiFo (oder wer zuletzt kommt, darf als erster gehen ) Folie 32/77

33 2.6 Datenstruktur Stapel Definition: Eine Datenstruktur heißt Stapel, wenn Elemente nur an einem Ende, der Stapelspitze (top), hinzugefügt oder entfernt werden können. Für Stapel sind die folgenden Operationen definiert: Erzeugen eines leeren Stapels (init) Hinzufügen eines Elements (push) Prüfung, ob ein gegebener Stapel leer ist (isempty) Inspizieren der Stapelspitze (top) Entfernen der Stapelspitze (pop) Folie 33/77

34 2.6 Datenstruktur Stapel Anwendungen: Auswerten von Rechenausdrücken, syntaktische Analyse von Programmen, Bau von Übersetzern, Undo, Aufrufen von Unterprogrammen, Tiefensuche in Graphen,... Folie 34/77

35 2.7 Datenstruktur Schlange Prinzip: First in First out, FiFo (oder wer zuerst kommt, mahlt zuerst ) Folie 35/77

36 Datenstruktur Schlange Definition: Eine Datenstruktur heißt Schlange, wenn Elemente nur an einem Ende (dem Ende der Schlange) angefügt und nur am anderen Ende (dem Kopf der Schlange) entfernt werden können. Für Schlangen sind die folgenden fünf Operationen definiert: Erzeugen einer neuen leeren Schlange (init) Hintenanfügen eines Elements an eine gegebene Schlange (enqueue oder enter bzw. put) Prüfung, ob die Schlange leer ist (isempty) Inspizieren des Schlangenkopfes (front) Entfernen des Schlangenkopfes (dequeue oder remove bzw. get) Folie 36/77

37 Datenstruktur Schlange Anwendungen: Druckaufträge (Druckerwarteschlange), Verwaltung von Prozessaufrufen im Betriebssystem, Hardwareschnittstellen zur seriellen Ein-/Ausgabe (Pufferspeicher z.b. Tastatur),... Folie 37/77

38 2.8 Die rekursive Datenstruktur Baum Folie 38/77

39 2.8 Die rekursive Datenstruktur Baum Folie 38/77

40 2.8 Die rekursive Datenstruktur Baum Folie 38/77

41 2.8 Die rekursive Datenstruktur Baum Baum Aus einer einfach verketteten Liste entsteht ein Baum, indem die Knoten jeweils mehrere Nachfolger haben können und zusätzlich gilt: Genau ein Knoten wird nicht von einem anderen Knoten referenziert. Diesen nennt man Wurzel des Baumes. Alle anderen Knoten werden genau einmal referenziert. Man unterscheidet zwischen inneren Knoten und Blättern. Jeder Knoten lässt sich von der Wurzel aus auf genau einem Weg (über Kanten) erreichen. Ein spezieller Baum ist der Binärbaum. Dieser besitzt Knoten mit höchstens zwei Nachfolgern. Folie 39/77

42 2.8 Die rekursive Datenstruktur Baum Folie 40/77

43 2.8 Die rekursive Datenstruktur Baum Folie 41/77

44 2.8 Die rekursive Datenstruktur Baum Folie 42/77

45 2.8.1 Suchen in Binärbäumen Klasse BINBAUM public DATENELEMENT suchen( String wert) { if(wurzel!= null) return Wurzel.suchen(wert); else return null; } Klasse KNOTEN public DATENELEMENT suchen( String wert) { if( Daten. schluesselistgleich( wert)) return Daten; else if( Daten. schluesselistgroesserals( wert)) { if( LinkerNachfolger!= null) return LinkerNachfolger. suchen( wert); else return null; } else { if( RechterNachfolger!= null) return RechterNachfolger. suchen( wert); else return null; } } Folie 43/77

46 2.8.2 Einfügen in Binärbäume Klasse BINBAUM public void einfuegen( DATENELEMENT daten) { if(wurzel!= null) Wurzel.einfuegen(daten); else Wurzel = new KNOTEN(daten); } Klasse KNOTEN public void einfuegen( DATENELEMENT daten) { if( Daten. istgleich( daten)) {} else if( Daten. istgroesserals( daten)) { if( LinkerNachfolger!= null) LinkerNachfolger. einfuegen( daten); else LinkerNachfolger = new KNOTEN( daten); } else { if( RechterNachfolger!= null) RechterNachfolger. einfuegen( daten); else RechterNachfolger = new KNOTEN( daten); } } Folie 44/77

47 2.8.3 Baum und Kompositum Folie 45/77

48 2.8.3 Baum und Kompositum Folie 46/77

49 2.8.3 Baum und Kompositum Folie 47/77

50 2.8.3 KlasseBaum BINBAUM und Kompositum public DATENELEMENT suchen( String wert) { return Wurzel.suchen(wert); } Klasse KNOTEN public DATENELEMENT suchen( String wert) { if(daten.schluesselistgleich(wert)) return Daten; else if(daten.schluesselistgroesserals(wert)) return LinkerNachfolger. suchen( wert); else return RechterNachfolger. suchen( wert); } Klasse ABSCHLUSS public DATENELEMENT suchen( String wert) { return null; } Folie 48/77

51 2.8.3 KlasseBaum BINBAUM und Kompositum public void einfuegen( DATENELEMENT daten) { Wurzel = Wurzel.einfuegen(daten); } Klasse KNOTEN public void einfuegen( DATENELEMENT daten) { if(daten.istgleich(daten)) {} else if(daten.istgroesserals(daten)) LinkerNachfolger = LinkerNachfolger. einfuegen( daten); else RechterNachfolger = RechterNachfolger. einfuegen( daten); } Klasse ABSCHLUSS public BAUMELEMENT einfuegen( DATENELEMENT daten) { return new KNOTEN( daten); } Folie 49/77

52 2.8.4 Baumdurchlauf Folie 50/77

53 2.8.4 Baumdurchlauf Definition Wenn man alle Elemente eines Baumes ausgeben möchte, muss man sich Strategien überlegen, in welcher Reihenfolge der Baum durchlaufen wird. Der Zugriff auf die einzelnen Knoten eines Baumes ist nur über die Wurzel möglich. Deshalb sind Algorithmen notwendig, die beim Durchlaufen eines Baumes jeden Knoten genau einmal besuchen und Informationen über dessen Datenelement ausgeben. Folgende drei (rekursive) Algorithmen leisten das Gewünschte: Folie 51/77

54 2.8.4 Baumdurchlauf inoder Baumdurchlauf inorder-durchlauf (Reihenfolge: L K R ) Beauftrage den linken Teilbaum des Knotens k mit inorder-durchlauf Besuche den Knoten k selbst Beauftrage den rechten Teilbaum des Knotens k mit inorder-durchlauf Beispiel: Folie 52/77

55 2.8.4 KlasseBaumdurchlauf BINBAUM (Implementierung) public void inorderausgeben() { Wurzel.inorderAusgeben(); } Klasse KNOTEN public void inorderausgeben() { LinkerNachfolger.inorderAusgeben(); Daten.informationAusgeben(); RechterNachfolger.inorderAusgeben(); } Klasse ABSCHLUSS public void inorderausgeben() Folie 53/77 { }

56 2.8.4 Baumdurchlauf preorder Baumdurchlauf preorder-durchlauf (Reihenfolge: K L R) Besuche den Knoten k selbst Beauftrage den linken Teilbaum des Knotens k mit preorder-durchlauf Beauftrage den rechten Teilbaum des Knotens k mit preorder-durchlauf Beispiel: Folie 54/77

57 2.8.4 Baumdurchlauf postorder Baumdurchlauf postorder-durchlauf (Reihenfolge: L R K ) Beauftrage den linken Teilbaum des Knotens k mit postorder-durchlauf Beauftrage den rechten Teilbaum des Knotens k mit postorder-durchlauf Besuche den Knoten k selbst Beispiel: Folie 55/77

58 2.8.5 Exkurs 1 - Knoten löschen Vorgehen beim Löschen - 1 Es gibt drei Fälle, die beim Löschen eines Datenelements eintreten können: Das DATENELEMENT wird von einem Knoten k referenziert, der keine Kinder hat (Nur Abschlüsse als Nachfolger): k wird gelöscht, ein beliebiger Nachfolger (ABSCHLUSS) wird zurückgegeben. Folie 56/77

59 2.8.5 Exkurs 1 - Knoten löschen Vorgehen beim Löschen - 2 Das DATENELEMENT wird von einem Knoten k referenziert, der ein Kind hat: k wird durch das Kind ersetzt. Folie 57/77

60 2.8.5 Exkurs 1 - Knoten löschen Vorgehen beim Löschen - 3 Das DATENELEMENT wird von einem Knoten k referenziert, der zwei Kinder hat: Dann bleibt Knoten k erhalten. Das DATENELEMENT in k wird durch das kleinste DATENELEMENT des rechten Teilbaums (bzw. größte DATENELEMENT des linken Teilbaums) von k ersetzt. Jedes dieser beiden DATENELEMENTe wird von einem Knoten referenziert, der höchstens ein Kind besitzt und daher wie in Fall 1 oder 2 entfernt werden kann. Folie 58/77

61 2.8.6 Exkurs 2 - B-Baum 3 3 Quelle: Haui/My Images: Folie 59/77

62 2.9 Die Datenstruktur Graph Folie 60/77

63 2.9.1 Eigenschaften von Graphen Unterschied Baum - Graph Ein Knoten in einem Baum hat höchstens einen Vorgänger - in einem Graphen kann er mehr als einen haben. In einem Baum gibt es keine Zyklen (Pfad, bei dem der Start- und Zielknoten identisch sind). Ein Baum ist ein spezieller Graph. Folie 61/77

64 2.9.1 Eigenschaften von Graphen Definition Ein Graph G = (V,E) besteht aus einer nichtleeren Menge von Knoten V und einer endlichen Menge von Kanten E. Eine Kante verbindet zwei Knoten. Folie 62/77

65 2.9.1 Eigenschaften von Graphen Definition Gerichtung Bei gerichteten Graphen gibt es eine eindeutige Richtung der Kante von einem Startknoten zu einem Zielknoten. Bei ungerichteten Graphen gilt die Verbindung für beide Richtungen. Folie 63/77

66 2.9.1 Eigenschaften von Graphen Definition Gewichtung Bei einem gewichteten Graph wird jeder Kante ein Wert zugeordnet Bei einem ungewichteten Graph besitzen die Kanten keine Werte. Folie 64/77

67 2.9.1 Eigenschaften von Graphen Definition Zusammenhängend 1 Ungerichteter Graph: Ein ungerichteter Graph ist zusammenhängend, wenn von jedem Knoten zu jeden anderen Knoten mindestens ein Pfad existiert. Dieser Graph ist zusammenhängend. Ohne Kante zwischen A und D ist er nicht zusammenhängend! Folie 65/77

68 2.9.1 Eigenschaften von Graphen Definition Zusammenhängend 2 Gerichteter Graph: Ein gerichteter Graph ist (stark) zusammenhängend, falls es von jedem Knoten aus einen gerichteten Weg zu jeden anderen Knoten im Graph gibt. Dieser Graph ist (stark) zusammenhängend. Ohne Kante zwischen E und C ist er nicht (stark) zusammenhängend! Da dieser Graph aber als ungerichteter Graph zusammenhängend wäre, ist er (schwach) zusammenhängend. Folie 66/77

69 2.9.1 Eigenschaften von Graphen Teiler Ein Graph hat die Zahlenwerte 1 bis 9 als Knoten. Über die Beziehung ist echter Teiler von sind diese gerichtet miteinander verbunden. 1 Wie viele Kanten gibt es? Zeichne den Graphen 2 Welcher Knoten muss entfernt werden, damit der Graph nicht mehr zusammenhängend ist? 3 Wie ändert sich der Graph, wenn die Beziehung ist Teiler von lautet? Folie 67/77

70 2.9.1 Eigenschaften von Graphen Klassendiagramm Folie 68/77

71 2.9.2 Adjazenzmatrix Definition Für die weitere Betrachtung von Algorithmen auf der Datenstruktur Graph bietet sich die einfachere Umsetzung mittels Adjazenzmaritx an. Dabei werden die Kanteninformationen in der GRAPH-Klasse belassen und nur die Knoten-Informationen in der Klasse KNOTEN ausgelagert. In Java kann man die Kanteninformationen über ein zweidimensionales Feld definieren. Folie 69/77

72 2.9.2 Adjazenzmatrix Folie 70/77 von nach A B C D E F G A B C 10 8 D 2 E 5 6 F G

73 2.9.2 Adjazenzmatrix von nach A B C D E F A 9 3 B 5 C 4 D 8 E 1 5 F 2 Folie 71/77

74 2.9.2 Adjazenzmatrix Klassendiagramm Folie 72/77

75 2.9.2 Adjazenzmatrix Folie 73/77

76 2.9.3 Breitensuche Siehe Folien - Breitensuche Warteschlange.pdf Folie 74/77

77 2.9.4 Tiefenensuche Siehe Folien - Tiefensuche Rekursiver Aufruf.pdf und Tiefensuche Stack.pdf Folie 75/77

78 2.9.5 Adjazenzliste Folie 76/77

79 2.9.6 Dijkstra-Alorithmus Siehe Folien - Dijkstra Prioritätswarteschlange.pdf Folie 77/77

1 topologisches Sortieren

1 topologisches Sortieren Wolfgang Hönig / Andreas Ecke WS 09/0 topologisches Sortieren. Überblick. Solange noch Knoten vorhanden: a) Suche Knoten v, zu dem keine Kante führt (Falls nicht vorhanden keine topologische Sortierung

Mehr

Konzepte der Informatik

Konzepte der Informatik Konzepte der Informatik Vorkurs Informatik zum WS 2011/2012 26.09. - 30.09.2011 17.10. - 21.10.2011 Dr. Werner Struckmann / Christoph Peltz Stark angelehnt an Kapitel 1 aus "Abenteuer Informatik" von Jens

Mehr

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

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny Grundlagen der Informatik Prof. Dr. Stefan Enderle NTA Isny 2 Datenstrukturen 2.1 Einführung Syntax: Definition einer formalen Grammatik, um Regeln einer formalen Sprache (Programmiersprache) festzulegen.

Mehr

368 4 Algorithmen und Datenstrukturen

368 4 Algorithmen und Datenstrukturen Kap04.fm Seite 368 Dienstag, 7. September 2010 1:51 13 368 4 Algorithmen und Datenstrukturen Java-Klassen Die ist die Klasse Object, ein Pfeil von Klasse A nach Klasse B bedeutet Bextends A, d.h. B ist

Mehr

U08 Entwurfsmuster (II)

U08 Entwurfsmuster (II) U08 Entwurfsmuster (II) Inhalt der Übung Diskussion und Implementierung von Entwurfsmustern Übungsaufgaben Aufgabe 1 (Queue) Gegeben ist das folgende Analysemodell einer Warteschlange (Queue): Eine Warteschlange

Mehr

Vorlesung Informatik 2 Algorithmen und Datenstrukturen. (20 Graphen) T. Lauer

Vorlesung Informatik 2 Algorithmen und Datenstrukturen. (20 Graphen) T. Lauer Vorlesung Informatik 2 Algorithmen und Datenstrukturen (20 Graphen) T. Lauer 1 Motivation Wie komme ich am besten von Freiburg nach Ulm? Was ist die kürzeste Rundreise durch eine gegebene Menge von Städten?

Mehr

Algorithmen und Datenstrukturen 2

Algorithmen und Datenstrukturen 2 Algorithmen und Datenstrukturen 2 Sommersemester 2006 3. Vorlesung Peter F. Stadler Universität Leipzig Institut für Informatik studla@bioinf.uni-leipzig.de Algorithmen für Graphen Fragestellungen: Suche

Mehr

Kapiteltests zum Leitprogramm Binäre Suchbäume

Kapiteltests zum Leitprogramm Binäre Suchbäume Kapiteltests zum Leitprogramm Binäre Suchbäume Björn Steffen Timur Erdag überarbeitet von Christina Class Binäre Suchbäume Kapiteltests für das ETH-Leitprogramm Adressaten und Institutionen Das Leitprogramm

Mehr

Binäre Bäume Darstellung und Traversierung

Binäre Bäume Darstellung und Traversierung Binäre Bäume Darstellung und Traversierung Name Frank Bollwig Matrikel-Nr. 2770085 E-Mail fb641378@inf.tu-dresden.de Datum 15. November 2001 0. Vorbemerkungen... 3 1. Terminologie binärer Bäume... 4 2.

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In

Mehr

Breiten- und Tiefensuche in Graphen

Breiten- und Tiefensuche in Graphen Breiten- und Tiefensuche in Graphen Inhalt Theorie. Graphen. Die Breitensuche in der Theorie am Beispiel eines ungerichteten Graphen. Die Tiefensuche in der Theorie am Beispiel eines gerichteten Graphen

Mehr

Software Engineering Klassendiagramme Assoziationen

Software Engineering Klassendiagramme Assoziationen Software Engineering Klassendiagramme Assoziationen Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Lesen von Multiplizitäten (1) Multiplizitäten werden folgendermaßen

Mehr

Anmerkungen zur Übergangsprüfung

Anmerkungen zur Übergangsprüfung DM11 Slide 1 Anmerkungen zur Übergangsprüfung Aufgabeneingrenzung Aufgaben des folgenden Typs werden wegen ihres Schwierigkeitsgrads oder wegen eines ungeeigneten fachlichen Schwerpunkts in der Übergangsprüfung

Mehr

Folge 19 - Bäume. 19.1 Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12

Folge 19 - Bäume. 19.1 Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12 Grundlagen: Folge 19 - Bäume 19.1 Binärbäume - Allgemeines Unter Bäumen versteht man in der Informatik Datenstrukturen, bei denen jedes Element mindestens zwei Nachfolger hat. Bereits in der Folge 17 haben

Mehr

1 Mathematische Grundlagen

1 Mathematische Grundlagen Mathematische Grundlagen - 1-1 Mathematische Grundlagen Der Begriff der Menge ist einer der grundlegenden Begriffe in der Mathematik. Mengen dienen dazu, Dinge oder Objekte zu einer Einheit zusammenzufassen.

Mehr

Struktur am Beispiel einer Liste

Struktur am Beispiel einer Liste Struktur am Beispiel einer 1 Einfügen(neues element ) Aktiv Wartend knoten knoten 2 Einfügen(neues element ) Aktiv Wartend knoten knoten 3 Einfügen(neues element ) Aktiv Wartend knoten knoten 4 Aha, ich

Mehr

Suchbäume. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Suchbäume. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung Suchbäume Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-13-14/infoeinf WS13/14 Action required now 1. Smartphone: installiere die App "socrative

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum

Mehr

Datenstrukturen & Algorithmen

Datenstrukturen & Algorithmen Datenstrukturen & Algorithmen Matthias Zwicker Universität Bern Frühling 2010 Übersicht Binäre Suchbäume Einführung und Begriffe Binäre Suchbäume 2 Binäre Suchbäume Datenstruktur für dynamische Mengen

Mehr

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren Lineargleichungssysteme: Additions-/ Subtraktionsverfahren W. Kippels 22. Februar 2014 Inhaltsverzeichnis 1 Einleitung 2 2 Lineargleichungssysteme zweiten Grades 2 3 Lineargleichungssysteme höheren als

Mehr

4. Jeder Knoten hat höchstens zwei Kinder, ein linkes und ein rechtes.

4. Jeder Knoten hat höchstens zwei Kinder, ein linkes und ein rechtes. Binäre Bäume Definition: Ein binärer Baum T besteht aus einer Menge von Knoten, die durch eine Vater-Kind-Beziehung wie folgt strukturiert ist: 1. Es gibt genau einen hervorgehobenen Knoten r T, die Wurzel

Mehr

1. Motivation / Grundlagen 2. Sortierverfahren 3. Elementare Datenstrukturen / Anwendungen 4. Bäume / Graphen 5. Hashing 6. Algorithmische Geometrie

1. 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. äume / Graphen 5. Hashing 6. Algorithmische Geometrie 4/5, olie 1 2014 Prof. Steffen Lange - HDa/bI

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen

Mehr

Idee: Wenn wir beim Kopfknoten zwei Referenzen verfolgen können, sind die Teillisten kürzer. kopf Eine Datenstruktur mit Schlüsselwerten 1 bis 10

Idee: Wenn wir beim Kopfknoten zwei Referenzen verfolgen können, sind die Teillisten kürzer. kopf Eine Datenstruktur mit Schlüsselwerten 1 bis 10 Binäre Bäume Bäume gehören zu den wichtigsten Datenstrukturen in der Informatik. Sie repräsentieren z.b. die Struktur eines arithmetischen Terms oder die Struktur eines Buchs. Bäume beschreiben Organisationshierarchien

Mehr

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen

Binäre Bäume. 1. Allgemeines. 2. Funktionsweise. 2.1 Eintragen Binäre Bäume 1. Allgemeines Binäre Bäume werden grundsätzlich verwendet, um Zahlen der Größe nach, oder Wörter dem Alphabet nach zu sortieren. Dem einfacheren Verständnis zu Liebe werde ich mich hier besonders

Mehr

Kapitel 6: Graphalgorithmen Gliederung

Kapitel 6: Graphalgorithmen Gliederung Gliederung 1. Grundlagen 2. Zahlentheoretische Algorithmen 3. Sortierverfahren 4. Ausgewählte Datenstrukturen 5. Dynamisches Programmieren 6. Graphalgorithmen 7. String-Matching 8. Kombinatorische Algorithmen

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Universität der Bundeswehr Fakultät für Informatik Institut 2 Priv.-Doz. Dr. Lothar Schmitz FT 2006 Zusatzaufgaben Lösungsvorschlag Objektorientierte Programmierung Lösung 22 (Java und UML-Klassendiagramm)

Mehr

Lernziele: Ausgleichstechniken für binäre Bäume verstehen und einsetzen können.

Lernziele: Ausgleichstechniken für binäre Bäume verstehen und einsetzen können. 6. Bäume Lernziele 6. Bäume Lernziele: Definition und Eigenschaften binärer Bäume kennen, Traversierungsalgorithmen für binäre Bäume implementieren können, die Bedeutung von Suchbäumen für die effiziente

Mehr

Große Übung Praktische Informatik 1

Große Übung Praktische Informatik 1 Große Übung Praktische Informatik 1 2005-12-08 fuessler@informatik.uni-mannheim.de http://www.informatik.uni-mannheim.de/pi4/people/fuessler 1: Announcements / Orga Weihnachtsklausur zählt als Übungsblatt,

Mehr

Algorithmische Mathematik

Algorithmische Mathematik Algorithmische Mathematik Wintersemester 2013 Prof. Dr. Marc Alexander Schweitzer und Dr. Einar Smith Patrick Diehl und Daniel Wissel Übungsblatt 6. Abgabe am 02.12.2013. Aufgabe 1. (Netzwerke und Definitionen)

Mehr

Primzahlen und RSA-Verschlüsselung

Primzahlen und RSA-Verschlüsselung Primzahlen und RSA-Verschlüsselung Michael Fütterer und Jonathan Zachhuber 1 Einiges zu Primzahlen Ein paar Definitionen: Wir bezeichnen mit Z die Menge der positiven und negativen ganzen Zahlen, also

Mehr

Über Arrays und verkettete Listen Listen in Delphi

Über Arrays und verkettete Listen Listen in Delphi Über Arrays und verkettete Listen Listen in Delphi Michael Puff mail@michael-puff.de 2010-03-26 Inhaltsverzeichnis Inhaltsverzeichnis 1 Einführung 3 2 Arrays 4 3 Einfach verkettete Listen 7 4 Doppelt verkettete

Mehr

Das Briefträgerproblem

Das Briefträgerproblem Das Briefträgerproblem Paul Tabatabai 30. Dezember 2011 Inhaltsverzeichnis 1 Problemstellung und Modellierung 2 1.1 Problem................................ 2 1.2 Modellierung.............................

Mehr

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!.

Würfelt man dabei je genau 10 - mal eine 1, 2, 3, 4, 5 und 6, so beträgt die Anzahl. der verschiedenen Reihenfolgen, in denen man dies tun kann, 60!. 040304 Übung 9a Analysis, Abschnitt 4, Folie 8 Die Wahrscheinlichkeit, dass bei n - maliger Durchführung eines Zufallexperiments ein Ereignis A ( mit Wahrscheinlichkeit p p ( A ) ) für eine beliebige Anzahl

Mehr

Grundlagen der Theoretischen Informatik, SoSe 2008

Grundlagen der Theoretischen Informatik, SoSe 2008 1. Aufgabenblatt zur Vorlesung Grundlagen der Theoretischen Informatik, SoSe 2008 (Dr. Frank Hoffmann) Lösung von Manuel Jain und Benjamin Bortfeldt Aufgabe 2 Zustandsdiagramme (6 Punkte, wird korrigiert)

Mehr

Zählen von Objekten einer bestimmten Klasse

Zählen von Objekten einer bestimmten Klasse Zählen von Objekten einer bestimmten Klasse Ziel, Inhalt Zur Übung versuchen wir eine Klasse zu schreiben, mit der es möglich ist Objekte einer bestimmten Klasse zu zählen. Wir werden den ++ und den --

Mehr

Studentische Lösung zum Übungsblatt Nr. 7

Studentische Lösung zum Übungsblatt Nr. 7 Studentische Lösung zum Übungsblatt Nr. 7 Aufgabe 1) Dynamische Warteschlange public class UltimateOrderQueue private Order[] inhalt; private int hinten; // zeigt auf erstes freies Element private int

Mehr

Scala kann auch faul sein

Scala kann auch faul sein Scala kann auch faul sein Kapitel 19 des Buches 1 Faulheit Faulheit ( lazy evaluation ) ist auch in C oder Java nicht unbekannt int x=0; if(x!=0 && 10/x>3){ System.out.println("In if"); } Nutzen der Faulheit?

Mehr

Institut für Programmierung und Reaktive Systeme 25. August 2014. Programmier-Labor. 04. + 05. Übungsblatt. int binarysearch(int[] a, int x),

Institut für Programmierung und Reaktive Systeme 25. August 2014. Programmier-Labor. 04. + 05. Übungsblatt. int binarysearch(int[] a, int x), Technische Universität Braunschweig Dr. Werner Struckmann Institut für Programmierung und Reaktive Systeme 25. August 2014 Programmier-Labor 04. + 05. Übungsblatt Aufgabe 21: a) Schreiben Sie eine Methode

Mehr

WS 2009/10. Diskrete Strukturen

WS 2009/10. Diskrete Strukturen WS 2009/10 Diskrete Strukturen Prof. Dr. J. Esparza Lehrstuhl für Grundlagen der Softwarezuverlässigkeit und theoretische Informatik Fakultät für Informatik Technische Universität München http://www7.in.tum.de/um/courses/ds/ws0910

Mehr

Informationsblatt Induktionsbeweis

Informationsblatt Induktionsbeweis Sommer 015 Informationsblatt Induktionsbeweis 31. März 015 Motivation Die vollständige Induktion ist ein wichtiges Beweisverfahren in der Informatik. Sie wird häufig dazu gebraucht, um mathematische Formeln

Mehr

Folge 18 - Vererbung

Folge 18 - Vererbung Workshop Folge 18 - Vererbung 18.1 Ein einfacher Fall der Vererbung Schritt 1 - Vorbereitungen Besorgen Sie sich - vielleicht aus einer der Übungen der Folge 17 - ein fertiges und lauffähiges Listenprojekt,

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Dipl. Inform. Andreas Wilkens aw@awilkens.com Überblick Grundlagen Definitionen Elementare Datenstrukturen Rekursionen Bäume 2 1 Datenstruktur Baum Definition eines Baumes

Mehr

Arbeiten mit UMLed und Delphi

Arbeiten mit UMLed und Delphi Arbeiten mit UMLed und Delphi Diese Anleitung soll zeigen, wie man Klassen mit dem UML ( Unified Modeling Language ) Editor UMLed erstellt, in Delphi exportiert und dort so einbindet, dass diese (bis auf

Mehr

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala

Das Typsystem von Scala. L. Piepmeyer: Funktionale Programmierung - Das Typsystem von Scala Das Typsystem von Scala 1 Eigenschaften Das Typsystem von Scala ist statisch, implizit und sicher 2 Nichts Primitives Alles ist ein Objekt, es gibt keine primitiven Datentypen scala> 42.hashCode() res0:

Mehr

Algorithmik II. a) Fügen Sie in einen anfangs leeren binären Baum die Schlüsselfolge 20, 28, 35, 31, 9, 4, 13, 17, 37, 25 ein.

Algorithmik II. a) Fügen Sie in einen anfangs leeren binären Baum die Schlüsselfolge 20, 28, 35, 31, 9, 4, 13, 17, 37, 25 ein. Aufgabe 10 Binäre Bäume a) Fügen Sie in einen anfangs leeren binären Baum die Schlüsselfolge, 28, 35, 31, 9, 4,, 17, 37, 25 ein. 1. Einfügen von : 3. Einfugen von 35: 2. Einfügen von 28: 28 28 10. Einfügen

Mehr

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Java Kurs für Anfänger Einheit 4 Klassen und Objekte Java Kurs für Anfänger Einheit 4 Klassen und Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 13. Juni 2009 Inhaltsverzeichnis klasse

Mehr

EndTermTest PROGALGO WS1516 A

EndTermTest PROGALGO WS1516 A EndTermTest PROGALGO WS1516 A 14.1.2016 Name:................. UID:.................. PC-Nr:................ Beachten Sie: Lesen Sie erst die Angaben aufmerksam, genau und vollständig. Die Verwendung von

Mehr

In vergleichsbasierten Suchbäumen wird nicht in Schlüssel hineingeschaut.

In vergleichsbasierten Suchbäumen wird nicht in Schlüssel hineingeschaut. Binäre Suchbäume Tries (Folie 182, Seite 58 im Skript) In vergleichsbasierten Suchbäumen wird nicht in Schlüssel hineingeschaut. In Tries entspricht die ite Verzweigung dem iten Zeichen des Schlüssels.

Mehr

Fachdidaktik der Informatik 18.12.08 Jörg Depner, Kathrin Gaißer

Fachdidaktik der Informatik 18.12.08 Jörg Depner, Kathrin Gaißer Fachdidaktik der Informatik 18.12.08 Jörg Depner, Kathrin Gaißer Klassendiagramme Ein Klassendiagramm dient in der objektorientierten Softwareentwicklung zur Darstellung von Klassen und den Beziehungen,

Mehr

Java: Vererbung. Teil 3: super() www.informatikzentrale.de

Java: Vererbung. Teil 3: super() www.informatikzentrale.de Java: Vererbung Teil 3: super() Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und IMMER zuerst den Konstruktor der Elternklasse auf! Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und

Mehr

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag Ludwig-Maximilians-Universität München WS 2015/16 Institut für Informatik Übungsblatt 9 Prof. Dr. R. Hennicker, A. Klarl Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung:

Mehr

Kapitel 4 Die Datenbank Kuchenbestellung Seite 1

Kapitel 4 Die Datenbank Kuchenbestellung Seite 1 Kapitel 4 Die Datenbank Kuchenbestellung Seite 1 4 Die Datenbank Kuchenbestellung In diesem Kapitel werde ich die Theorie aus Kapitel 2 Die Datenbank Buchausleihe an Hand einer weiteren Datenbank Kuchenbestellung

Mehr

Erstellen von x-y-diagrammen in OpenOffice.calc

Erstellen von x-y-diagrammen in OpenOffice.calc Erstellen von x-y-diagrammen in OpenOffice.calc In dieser kleinen Anleitung geht es nur darum, aus einer bestehenden Tabelle ein x-y-diagramm zu erzeugen. D.h. es müssen in der Tabelle mindestens zwei

Mehr

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

Fachgebiet Informationssysteme Prof. Dr.-Ing. N. Fuhr. Programmierung Prof. Dr.-Ing. Nobert Fuhr. Übungsblatt Nr. 6 Gudrun Fischer Sascha Kriewel programmierung@is.informatik.uni-duisburg.de Anmeldung zur Klausur! Übungsblatt Nr. 6 Um an der Klausur teilzunehmen, müssen sich Studierende der angewandten Informatik in

Mehr

AVL-Bäume Analyse. Theorem Ein AVL-Baum der Höhe h besitzt zwischen F h und 2 h 1 viele Knoten. Definition Wir definieren die nte Fibonaccizahl:

AVL-Bäume Analyse. Theorem Ein AVL-Baum der Höhe h besitzt zwischen F h und 2 h 1 viele Knoten. Definition Wir definieren die nte Fibonaccizahl: AVL-Bäume Analyse (Folie 85, Seite 39 im Skript) Theorem Ein AVL-Baum der Höhe h besitzt zwischen F h und 2 h 1 viele Knoten. Definition Wir definieren die nte Fibonaccizahl: 0 falls n = 0 F n = 1 falls

Mehr

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag

Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung: Lösungsvorschlag Ludwig-Maximilians-Universität München WS 2015/16 Institut für Informatik Übungsblatt 13 Prof. Dr. R. Hennicker, A. Klarl Übungen zu Einführung in die Informatik: Programmierung und Software-Entwicklung:

Mehr

8 Diskrete Optimierung

8 Diskrete Optimierung 8 Diskrete Optimierung Definition 8.1. Ein Graph G ist ein Paar (V (G), E(G)) besteh aus einer lichen Menge V (G) von Knoten (oder Ecken) und einer Menge E(G) ( ) V (G) 2 von Kanten. Die Ordnung n(g) von

Mehr

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss

Systeme 1. Kapitel 6. Nebenläufigkeit und wechselseitiger Ausschluss Systeme 1 Kapitel 6 Nebenläufigkeit und wechselseitiger Ausschluss Threads Die Adressräume verschiedener Prozesse sind getrennt und geschützt gegen den Zugriff anderer Prozesse. Threads sind leichtgewichtige

Mehr

Datenstrukturen und Algorithmen

Datenstrukturen und Algorithmen Datenstrukturen und Algorithmen VO 708.031 Bäume robert.legenstein@igi.tugraz.at 1 Inhalt der Vorlesung 1. Motivation, Einführung, Grundlagen 2. Algorithmische Grundprinzipien 3. Sortierverfahren 4. Halden

Mehr

Algorithmen und Datenstrukturen Suchbaum

Algorithmen und Datenstrukturen Suchbaum Algorithmen und Datenstrukturen Suchbaum Matthias Teschner Graphische Datenverarbeitung Institut für Informatik Universität Freiburg SS 12 Motivation Datenstruktur zur Repräsentation dynamischer Mengen

Mehr

Programmierung 2. Übersetzer: Code-Erzeugung. Sebastian Hack. Klaas Boesche. Sommersemester 2012. hack@cs.uni-saarland.de. boesche@cs.uni-saarland.

Programmierung 2. Übersetzer: Code-Erzeugung. Sebastian Hack. Klaas Boesche. Sommersemester 2012. hack@cs.uni-saarland.de. boesche@cs.uni-saarland. 1 Programmierung 2 Übersetzer: Code-Erzeugung Sebastian Hack hack@cs.uni-saarland.de Klaas Boesche boesche@cs.uni-saarland.de Sommersemester 2012 Bytecodes Der Java Übersetzer erzeugt keine Maschinensprache

Mehr

Einführung in die Programmierung

Einführung in die Programmierung : Inhalt Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund - mit / ohne Parameter - mit / ohne Rückgabewerte

Mehr

Repetitionsaufgaben Wurzelgleichungen

Repetitionsaufgaben Wurzelgleichungen Repetitionsaufgaben Wurzelgleichungen Inhaltsverzeichnis A) Vorbemerkungen B) Lernziele C) Theorie mit Aufgaben D) Aufgaben mit Musterlösungen 4 A) Vorbemerkungen Bitte beachten Sie: Bei Wurzelgleichungen

Mehr

Mediator 9 - Lernprogramm

Mediator 9 - Lernprogramm Mediator 9 - Lernprogramm Ein Lernprogramm mit Mediator erstellen Mediator 9 bietet viele Möglichkeiten, CBT-Module (Computer Based Training = Computerunterstütztes Lernen) zu erstellen, z. B. Drag & Drop

Mehr

Vorlesung Diskrete Strukturen Graphen: Wieviele Bäume?

Vorlesung Diskrete Strukturen Graphen: Wieviele Bäume? Vorlesung Diskrete Strukturen Graphen: Wieviele Bäume? Bernhard Ganter Institut für Algebra TU Dresden D-01062 Dresden bernhard.ganter@tu-dresden.de WS 2013/14 Isomorphie Zwei Graphen (V 1, E 1 ) und (V

Mehr

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang sysplus.ch outlook - mail-grundlagen Seite 1/8 Outlook Mail-Grundlagen Posteingang Es gibt verschiedene Möglichkeiten, um zum Posteingang zu gelangen. Man kann links im Outlook-Fenster auf die Schaltfläche

Mehr

13. Binäre Suchbäume

13. Binäre Suchbäume 1. Binäre Suchbäume Binäre Suchbäume realiesieren Wörterbücher. Sie unterstützen die Operationen 1. Einfügen (Insert) 2. Entfernen (Delete). Suchen (Search) 4. Maximum/Minimum-Suche 5. Vorgänger (Predecessor),

Mehr

Grundlagen der Programmierung Prof. H. Mössenböck. 14. Schrittweise Verfeinerung

Grundlagen der Programmierung Prof. H. Mössenböck. 14. Schrittweise Verfeinerung Grundlagen der Programmierung Prof. H. Mössenböck 14. Schrittweise Verfeinerung Entwurfsmethode für Algorithmen Wie kommt man von der Aufgabenstellung zum Programm? Beispiel geg.: Text aus Wörtern ges.:

Mehr

Synchronisations- Assistent

Synchronisations- Assistent TimePunch Synchronisations- Assistent Benutzerhandbuch Gerhard Stephan Softwareentwicklung -und Vertrieb 25.08.2011 Dokumenten Information: Dokumenten-Name Benutzerhandbuch, Synchronisations-Assistent

Mehr

Graphen: Datenstrukturen und Algorithmen

Graphen: Datenstrukturen und Algorithmen Graphen: Datenstrukturen und Algorithmen Ein Graph G = (V, E) wird durch die Knotenmenge V und die Kantenmenge E repräsentiert. G ist ungerichtet, wenn wir keinen Start- und Zielpunkt der Kanten auszeichnen.

Mehr

Kapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete

Kapitel 4: Dynamische Datenstrukturen. Algorithmen und Datenstrukturen WS 2012/13. Prof. Dr. Sándor Fekete Kapitel 4: Dynamische Datenstrukturen Algorithmen und Datenstrukturen WS 2012/13 Prof. Dr. Sándor Fekete 4.4 Binäre Suche Aufgabenstellung: Rate eine Zahl zwischen 100 und 114! Algorithmus 4.1 INPUT: OUTPUT:

Mehr

Bitte wenden. Name: KURSARBEIT NR. 4 (10 DIFF GA) 18.06.2002. Seite 1

Bitte wenden. Name: KURSARBEIT NR. 4 (10 DIFF GA) 18.06.2002. Seite 1 Aufgabe 1: Gegeben ist das folgende Programm: PR figur :n :Länge WH 3 [ VW :Länge WENN :n>1 DANN ( RE 90 figur :n-1 :Länge/2 RW :Länge Seite 1 Zeichne das Bild, welches beim Aufruf der Prozedur mit figur

Mehr

Programmiersprachen und Übersetzer

Programmiersprachen und Übersetzer Programmiersprachen und Übersetzer Sommersemester 2010 19. April 2010 Theoretische Grundlagen Problem Wie kann man eine unendliche Menge von (syntaktisch) korrekten Programmen definieren? Lösung Wie auch

Mehr

3.2 Binäre Suche. Usr/local/www/ifi/fk/menschen/schmid/folien/infovk.ppt 1

3.2 Binäre Suche. Usr/local/www/ifi/fk/menschen/schmid/folien/infovk.ppt 1 3.2 Binäre Suche Beispiel 6.5.1: Intervallschachtelung (oder binäre Suche) (Hier ist n die Anzahl der Elemente im Feld!) Ein Feld A: array (1..n) of Integer sei gegeben. Das Feld sei sortiert, d.h.: A(i)

Mehr

3.1 Konstruktion von minimalen Spannbäumen Es gibt zwei Prinzipien für die Konstruktion von minimalen Spannbäumen (Tarjan): blaue Regel rote Regel

3.1 Konstruktion von minimalen Spannbäumen Es gibt zwei Prinzipien für die Konstruktion von minimalen Spannbäumen (Tarjan): blaue Regel rote Regel 3.1 Konstruktion von minimalen Spannbäumen Es gibt zwei Prinzipien für die Konstruktion von minimalen Spannbäumen (Tarjan): blaue Regel rote Regel EADS 3.1 Konstruktion von minimalen Spannbäumen 16/36

Mehr

Übungspaket 31 Entwicklung eines einfachen Kellerspeiches (Stacks)

Übungspaket 31 Entwicklung eines einfachen Kellerspeiches (Stacks) Übungspaket 31 Entwicklung eines einfachen Kellerspeiches (Stacks) Übungsziele: Skript: 1. Definieren einer dynamischen Datenstruktur 2. Dynamische Speicher Speicherallokation 3. Implementierung eines

Mehr

Installation OMNIKEY 3121 USB

Installation OMNIKEY 3121 USB Installation OMNIKEY 3121 USB Vorbereitungen Installation PC/SC Treiber CT-API Treiber Einstellungen in Starke Praxis Testen des Kartenlesegeräts Vorbereitungen Bevor Sie Änderungen am System vornehmen,

Mehr

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom 21.10.2013b

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom 21.10.2013b AGROPLUS Buchhaltung Daten-Server und Sicherheitskopie Version vom 21.10.2013b 3a) Der Daten-Server Modus und der Tresor Der Daten-Server ist eine Betriebsart welche dem Nutzer eine grosse Flexibilität

Mehr

Objektorientierte Programmierung. Kapitel 12: Interfaces

Objektorientierte Programmierung. Kapitel 12: Interfaces 12. Interfaces 1/14 Objektorientierte Programmierung Kapitel 12: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/ brass/oop12/

Mehr

SEP 114. Design by Contract

SEP 114. Design by Contract Design by Contract SEP 114 Design by Contract Teile das zu entwickelnde Programm in kleine Einheiten (Klassen, Methoden), die unabhängig voneinander entwickelt und überprüft werden können. Einheiten mit

Mehr

Institut für Informatik

Institut für Informatik Technische Universität München Institut für Informatik Lehrstuhl für Computer Graphik & Visualisierung WS 2010 Praktikum: Grundlagen der Programmierung Lösungsblatt 7 Prof. R. Westermann, A. Lehmann, R.

Mehr

Die Komplexitätsklassen P und NP

Die Komplexitätsklassen P und NP Die Komplexitätsklassen P und NP Prof. Dr. Berthold Vöcking Lehrstuhl Informatik 1 Algorithmen und Komplexität RWTH Aachen 3. Dezember 2009 Berthold Vöcking, Informatik 1 () Vorlesung Berechenbarkeit und

Mehr

Feiertage in Marvin hinterlegen

Feiertage in Marvin hinterlegen von 6 Goecom GmbH & Co KG Marvin How to's Feiertage in Marvin hinterlegen Feiertage spielen in Marvin an einer Reihe von Stellen eine nicht unerhebliche Rolle. Daher ist es wichtig, zum Einen zu hinterlegen,

Mehr

Erstellen der Barcode-Etiketten:

Erstellen der Barcode-Etiketten: Erstellen der Barcode-Etiketten: 1.) Zuerst muss die Schriftart Code-39-Logitogo installiert werden! Das ist eine einmalige Sache und muss nicht zu jeder Börse gemacht werden! Dazu speichert man zunächst

Mehr

Mandant in den einzelnen Anwendungen löschen

Mandant in den einzelnen Anwendungen löschen Mandant in den einzelnen Anwendungen löschen Bereich: ALLGEMEIN - Info für Anwender Nr. 6056 Inhaltsverzeichnis 1. Allgemein 2. FIBU/ANLAG/ZAHLUNG/BILANZ/LOHN/BELEGTRANSFER 3. DMS 4. STEUERN 5. FRISTEN

Mehr

Lehrer: Einschreibemethoden

Lehrer: Einschreibemethoden Lehrer: Einschreibemethoden Einschreibemethoden Für die Einschreibung in Ihren Kurs gibt es unterschiedliche Methoden. Sie können die Schüler über die Liste eingeschriebene Nutzer Ihrem Kurs zuweisen oder

Mehr

4. AuD Tafelübung T-C3

4. AuD Tafelübung T-C3 4. AuD Tafelübung T-C3 Simon Ruderich 17. November 2010 Arrays Unregelmäßige Arrays i n t [ ] [ ] x = new i n t [ 3 ] [ 4 ] ; x [ 2 ] = new i n t [ 2 ] ; for ( i n t i = 0; i < x. l e n g t h ; i ++) {

Mehr

Abschlussprüfung Realschule Bayern II / III: 2009 Haupttermin B 1.0 B 1.1

Abschlussprüfung Realschule Bayern II / III: 2009 Haupttermin B 1.0 B 1.1 B 1.0 B 1.1 L: Wir wissen von, dass sie den Scheitel hat und durch den Punkt läuft. Was nichts bringt, ist beide Punkte in die allgemeine Parabelgleichung einzusetzen und das Gleichungssystem zu lösen,

Mehr

50. Mathematik-Olympiade 2. Stufe (Regionalrunde) Klasse 11 13. 501322 Lösung 10 Punkte

50. Mathematik-Olympiade 2. Stufe (Regionalrunde) Klasse 11 13. 501322 Lösung 10 Punkte 50. Mathematik-Olympiade. Stufe (Regionalrunde) Klasse 3 Lösungen c 00 Aufgabenausschuss des Mathematik-Olympiaden e.v. www.mathematik-olympiaden.de. Alle Rechte vorbehalten. 503 Lösung 0 Punkte Es seien

Mehr

WinVetpro im Betriebsmodus Laptop

WinVetpro im Betriebsmodus Laptop WinVetpro im Betriebsmodus Laptop Um Unterwegs Daten auf einem mobilen Gerät mit WinVetpro zu erfassen, ohne den Betrieb in der Praxis während dieser Zeit zu unterbrechen und ohne eine ständige Online

Mehr

Erwin Grüner 09.02.2006

Erwin Grüner 09.02.2006 FB Psychologie Uni Marburg 09.02.2006 Themenübersicht Folgende Befehle stehen in R zur Verfügung: {}: Anweisungsblock if: Bedingte Anweisung switch: Fallunterscheidung repeat-schleife while-schleife for-schleife

Mehr

4. BEZIEHUNGEN ZWISCHEN TABELLEN

4. BEZIEHUNGEN ZWISCHEN TABELLEN 4. BEZIEHUNGEN ZWISCHEN TABELLEN Zwischen Tabellen können in MS Access Beziehungen bestehen. Durch das Verwenden von Tabellen, die zueinander in Beziehung stehen, können Sie Folgendes erreichen: Die Größe

Mehr

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Objektorientierte Programmierung für Anfänger am Beispiel PHP Objektorientierte Programmierung für Anfänger am Beispiel PHP Johannes Mittendorfer http://jmittendorfer.hostingsociety.com 19. August 2012 Abstract Dieses Dokument soll die Vorteile der objektorientierten

Mehr

Auswertung des Jahresabschlusses Bilanzanalyse 2

Auswertung des Jahresabschlusses Bilanzanalyse 2 KA11 Unternehmensergebnisse aufbereiten, bewerten und nutzen Auswertung des Jahresabschlusses Bilanzanalyse 2 Kennzahlen zur Bilanzanalyse Die aufbereitete Bilanz kann mit Hilfe unterschiedlicher Kennzahlen

Mehr

Dokumentation Schedulingverfahren

Dokumentation Schedulingverfahren Dokumentation Schedulingverfahren von Norbert Galuschek Gordian Maugg Alexander Hahn Rebekka Weissinger June 23, 2011 1 Contents 1 Aufgabe 3 2 Vorgehensweise 4 2.1 Warum Android.......................

Mehr

Statuten in leichter Sprache

Statuten in leichter Sprache Statuten in leichter Sprache Zweck vom Verein Artikel 1: Zivil-Gesetz-Buch Es gibt einen Verein der selbstbestimmung.ch heisst. Der Verein ist so aufgebaut, wie es im Zivil-Gesetz-Buch steht. Im Zivil-Gesetz-Buch

Mehr

Einführung in die Java- Programmierung

Einführung in die Java- Programmierung Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags keine Pommes... Praktikum A 230 C 207 (Madeleine + Esma) F 112 F 113

Mehr

MCRServlet Table of contents

MCRServlet Table of contents Table of contents 1 Das Zusammenspiel der Servlets mit dem MCRServlet... 2 1 Das Zusammenspiel der Servlets mit dem MCRServlet Als übergeordnetes Servlet mit einigen grundlegenden Funktionalitäten dient

Mehr

Übungsblatt 4. Aufgabe 7: Datensicht Fachkonzept (Klausur SS 2002, 1. Termin)

Übungsblatt 4. Aufgabe 7: Datensicht Fachkonzept (Klausur SS 2002, 1. Termin) Übungsblatt 4 Aufgabe 7: Datensicht Fachkonzept (Klausur SS 2002, 1. Termin) Die Saartal Linien beauftragen Sie mit dem Entwurf der Datenstrukturen für ein Informationssystem. Dieses soll zur Verwaltung

Mehr