Chair of Software Engineering



Ähnliche Dokumente
18. Dynamisches Programmieren

binäre Suchbäume Informatik I 6. Kapitel binäre Suchbäume binäre Suchbäume Rainer Schrader 4. Juni 2008 O(n) im worst-case Wir haben bisher behandelt:

ERP Cloud Tutorial. E-Commerce ECM ERP SFA EDI. Backup. Preise erfassen.

Gruppe. Lineare Block-Codes

Einführung in die Finanzmathematik

Zinseszinsformel (Abschnitt 1.2) Begriffe und Symbole der Zinsrechnung. Die vier Fragestellungen der Zinseszinsrechnung 4. Investition & Finanzierung

Methoden der innerbetrieblichen Leistungsverrechnung

Backup- und Restore-Systeme implementieren. Technische Berufsschule Zürich IT Seite 1

Informatik II. Minimalpolynome und Implikanten. Minimalpolynome. Minimalpolynome. Rainer Schrader. 27. Oktober Was bisher geschah: Definition

Polygonalisierung einer Kugel. Verfahren für die Polygonalisierung einer Kugel. Eldar Sultanow, Universität Potsdam,

Funktionsgleichungen folgende Funktionsgleichungen aus der Vorlesung erhält. = e

2. Nullstellensuche. Eines der ältesten numerischen Probleme stellt die Bestimmung der Nullstellen einer Funktion f(x) = 0 dar.

Netzwerkstrukturen. Entfernung in Kilometer:

4. Musterlösung. Problem 1: Kreuzende Schnitte **

12 LK Ph / Gr Elektrische Leistung im Wechselstromkreis 1/ ω Additionstheorem: 2 sin 2 2

Wechselstrom. Dr. F. Raemy Wechselspannung und Wechselstrom können stets wie folgt dargestellt werden : U t. cos (! t + " I ) = 0 $ " I

FORMELSAMMLUNG STATISTIK (I)

1 BWL 4 Tutorium V vom

Für jeden reinen, ideal kristallisierten Stoff ist die Entropie am absoluten Nullpunkt gleich

Algorithmen und Datenstrukturen 6. Vorlesung

Lineare Regression (1) - Einführung I -

Statistik und Wahrscheinlichkeit

1 Definition und Grundbegriffe

12) Generische Datenstrukturen

IT- und Fachwissen: Was zusammengehört, muss wieder zusammenwachsen.

Kreditpunkte-Klausur zur Lehrveranstaltung Projektmanagement (inkl. Netzplantechnik)

Ich habe ein Beispiel ähnlich dem der Ansys-Issue [ansys_advantage_vol2_issue3.pdf] durchgeführt. Es stammt aus dem Dokument Rfatigue.pdf.

Netzsicherheit I, WS 2008/2009 Übung 3. Prof. Dr. Jörg Schwenk

Die Ausgangssituation Das Beispiel-Szenario... 14

nonparametrische Tests werden auch verteilungsfreie Tests genannt, da sie keine spezielle Verteilung der Daten in der Population voraussetzen

1 - Prüfungsvorbereitungsseminar

Wie eröffne ich als Bestandskunde ein Festgeld-Konto bei NIBC Direct?

Wie eröffne ich als Bestandskunde ein Festgeld-Konto bei NIBC Direct?

Algorithmen und ihre Programmierung -Teil 3-

Gesetzlicher Unfallversicherungsschutz für Schülerinnen und Schüler

Der Satz von COOK (1971)

1.1 Das Prinzip von No Arbitrage

phil omondo phil omondo Skalierung von Organisationen und Innovationen gestalten Sie möchten mehr Preise und Leistungen Workshops und Seminare

d da B A Die gesamte Erscheinung der magnetischen Feldlinien bezeichnet man als magnetischen Fluss. = 1 V s = 1 Wb

Einbau-/Betriebsanleitung Stahl-PE-Übergang Typ PESS / Typ PESVS Originalbetriebsanleitung Für künftige Verwendung aufbewahren!

Ihr geschützter Bereich Organisation Einfachheit Leistung

Universität Karlsruhe (TH)

Nernstscher Verteilungssatz

6. Modelle mit binären abhängigen Variablen

Für wen ist dieses Buch? Was ist dieses Buch? Besonderheiten. Neu in dieser Auflage

W i r m a c h e n d a s F e n s t e r

4. Ratenmonotones Scheduling Rate-Monotonic Scheduling (LIU/LAYLAND 1973)

Leistungsmessung im Drehstromnetz

Leitliniengerechte psychosoziale Versorgung aus der Sicht des Krankenhausmanagements

Flußnetzwerke - Strukturbildung in der natürlichen Umwelt -

Resultate / "states of nature" / mögliche Zustände / möglicheentwicklungen

Die Klinikums App. Index

mit der Anfangsbedingung y(a) = y0

Dynamisches Programmieren

"Zukunft der Arbeit" Arbeiten bis 70 - Utopie - oder bald Realität? Die Arbeitnehmer der Zukunft

Praktikum Physikalische Chemie I (C-2) Versuch Nr. 6

Grundlagen der makroökonomischen Analyse kleiner offener Volkswirtschaften

tutorial N o 1a InDesign CS4 Layoutgestaltung Erste Schritte - Anlegen eines Dokumentes I a (Einfache Nutzung) Kompetenzstufe keine Voraussetzung

Free Riding in Joint Audits A Game-Theoretic Analysis

Unter der Drehgruppe verstehen wir diegruppe der homogenen linearen Transformationen

Energiesäule mit drei Leereinheiten, Höhe 491 mm Energiesäule mit Lichtelement und drei Leereinheiten, Höhe 769 mm

Seminar Analysis und Geometrie Professor Dr. Martin Schmidt - Markus Knopf - Jörg Zentgraf. - Fixpunktsatz von Schauder -

Die Annäherung der Binomialverteilung durch die Normalverteilung am Beispiel eines Modells der Schadenversicherung

Entgelte für die Netznutzung, Messung und Abrechnung im Gasverteilnetz

Ionenselektive Elektroden (Potentiometrie)

1.6 Energie Arbeit und Leistung Wird ein Körper unter Wirkung der Kraft F längs eines Weges s verschoben, so wird dabei die Arbeit

Kennlinienaufnahme des Transistors BC170

Facility Location Games

SteigLeitern Systemteile

Bildverarbeitung Herbstsemester Bildspeicherung

3.2 Die Kennzeichnung von Partikeln Partikelmerkmale

Datenträger löschen und einrichten

Standortplanung. Positionierung von einem Notfallhubschrauber in Südtirol. Feuerwehrhaus Zentrallagerpositionierung

Bedingte Entropie. Bedingte Entropie. Bedingte Entropie. Kapitel 4: Bedingte Entropie I(X;Y) H(X Y) H(Y) H(X) H(XY)

Einführungsaufwand von Filesystemen für virtualisierte parallele Datenbanken

9 Komplexe Zahlen ( ) ( ) 9.1 Ziele. 9.2 Warum braucht man komplexe Zahlen? 9.3 Darstellung von komplexen Zahlen. r 2. j 2. j 1.

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

Projektmanagement / Netzplantechnik Sommersemester 2005 Seite 1

MULTIVAC Kundenportal Ihr Zugang zur MULTIVAC Welt

1.1 Grundbegriffe und Grundgesetze 29

Aufgabenteil. - wird nicht mit abgegeben , Uhr. Fakultät für Wirtschaftswissenschaft

Rte de Tavel 10 - Case postale / Postfach Fribourg - Tél. 026 / Fax 026 /

Funds Transfer Pricing. Daniel Schlotmann

Entscheidungsprobleme der Marktforschung (1)

13.Selbstinduktion; Induktivität

wissenschaftliche Einrichtung elektronik

Hochschule Darmstadt Fachbereich Informatik

Kapitel 15: Geldpolitische Instrumente

Java: Vererbung. Teil 3: super()

Übung zur Vorlesung - Theorien Psychometrischer Tests II

CKE Trainingsbausteine. Portfoliomanagement und Risikomanagement Strom und Erdgas Fünf kreative Tage, die Sie weiterbringen werden

Beim Wiegen von 50 Reispaketen ergaben sich folgende Gewichte X(in Gramm):

Objektorientierte Programmierung

Abbildung 3.1: Besetzungszahlen eines Fermigases im Grundzustand (a)) und für eine angeregte Konfiguration (b)).

i itel itel p i p a a K K Inhalt Inhalt i itel itel p i p a a K K Inhalt Inhalt

9 Komplexe Zahlen ( ) ( ) 9.1 Ziele. 9.2 Warum braucht man komplexe Zahlen? 9.3 Darstellung von komplexen Zahlen. r 2. j 2. j 1.

Algorithmen und Datenstrukturen SS09. Foliensatz 13. Michael Brinkmeier. Technische Universität Ilmenau Institut für Theoretische Informatik

Daten sind in Tabellenform gegeben durch die Eingabe von FORMELN können mit diesen Daten automatisierte Berechnungen durchgeführt werden.

Transkript:

1 2 Enführung n de Programmerung Bertrand Meyer Vorlesung 13: Contaner-Datenstrukturen Letzte Bearbetung 1. Dezember 2003 Themen für dese Vorlesung 3 Contaner-Datenstrukturen 4 Contaner und Genercty Enthalten andere Objekte ( s ) Statsche Typserung Bespel: Ene Metrolne st unter anderem en Contaner von Haltestellen Lestung von Algorthmen beurtelen: Bg-Oh- Notaton Verkettete Lsten Möglche Operatonen auf enem Contaner: En Item enfügen Herausfnden, ob en Element enthalten st En Element entfernen De Struktur traverseren um ene Operaton auf jedes Item anzuwen Arrays Vele Arten: Lsten (nkl. lnked lst, ublylnked lsts ), zrkuläre Lsten, Arrays, Stacks, Queues, Prorty-Queues, Hashtabellen En Grundproblem von Contanern 5 Ernnerung: Lsten-Konventonen 6 We behandeln wr Varanten ener Contaner- Klasse, de sch nur durch den Typ hrer Items unterscheden? before after Metrolne: Lste von Haltestellen Route: Lste von Segmenten Telefonlste: Lste von Verzechnsenträgen Aga: Lste von Verabredungen 1 start ndex back forth (Der Cursor) 1

Ohne Genercty 7 Ohne Genercty 8 class METRO_LINE feature start s forth s : METRO_STOP s put_rght (x: METRO_STOP) s Somethng nvolvng x ext (x: METRO_STOP) s class ROUTE feature start s forth s : SEGMENT s put_rght (x: SEGMENT) s Somethng nvolvng x ext (x: SEGMENT) s Ohne Genercty 9 Ene ncht-genersche Lst-Klasse 10 class AGENDA feature start s forth s : APPOINTMENT s put_rght (x: APPOINTMENT) s Somethng nvolvng x ext (x: APPOINTMENT) s class LIST1 feature start s forth s : ANY s put_rght (x: ANY) s Somethng nvolvng x ext (x: ANY) s Generalserte Lste benutzen 11 Lösungen 12 my_route: LIST1 my_aga: LIST1 my_route.ext (seg) my_aga.ext (app) seg := my_route. app := my_aga. seg: SEGMENT app: APPOINTMENT Code wederholen (ncht wrklch akzeptabel) Konversonen, oder casts, erlauben Ungeprüft: C, C++ Geprüft: Java, C# app?= my_aga. f app /= Vod then app := my_route. --????????? Typen-Parametrserung explzt machen (Effel): Genercty 2

Lösung: Genercty 13 Generalserte Lste benutzen 14 class LINKED_LIST [G] feature start s Formaler generscher forth s Parameter : G s put_rght (x: G) s Somethng nvolvng x ext (x: G) s my_route: LIST1 my_aga: LIST1 my_route.ext (seg) my_aga.ext (app) seg := my_route. app := my_aga. app := my_route. --????????? seg: SEGMENT app: APPOINTMENT Genersche Lst-Klasse benutzen 15 Statsche Typserung 16 my_route: LIST [SEGMENT] my_aga: LIST [APPOINTMENT] my_route.ext (seg) my_aga.ext (app) seg := my_route. app := my_aga. seg: SEGMENT app: APPOINTMENT tatsächlcher generscher Parameter Jede Enttät des Programms st mt enem Typen deklarert Jede Zuwesung und jeder Feature-Aufruf muss de Typkompatbltäts-Regeln befolgen Zel: Ne en Feature auf en Objekt anwen, für das deses Feature ncht defnert st app := my_route. -- Type-wrong, rejected Wchtgste Plattüde n der Software-Entwcklung! 17 Ene genersche Klasse: LINKED_LIST 18 Besser enen Fehler früh als spät abfangen Demo (sehe EffelStudo) Besser n der Analyse als m Desgn Besser m Desgn als n der Implementaton Besser n der Komplaton als bem Testen Besser bem Testen als m Ensatz 3

Maxmum berechnen, Verson 1 19 Der Routne-Body, Verson 1 20 hghest_name (lne: METRO_LINE): STRING s -- Alphabetsch grösster Statonsname der Lne lne_exsts: lne /= Vod fancy_lne.start ; Result := " nvarant varant fancy_lne.after Result := greater (Result, lne..name) fancy_lne.forth ensure Result /= Vod and then not Result.empty forth fancy_lne.start ; Result := "" fancy_lne.after Result := greater (Result, lne..name) fancy_lne.forth Der Routne-Body, Verson 2 21 Der Routne-Body, Verson 3 22 : INTEGER _th () : INTEGER _th () := 0 ; Result := "" > n := + 1 Result := greater (Result, lne._th ().name) := + 1 ; Result := "" = 0 := 1 Result := greater (Result, lne._th ().name) We schnell st der Algorthmus? 23 Wesentlche Effzenz abschätzen 24 Abhängg von der Hardware, Betrebssystem, Belastung der Maschne Aber am fundamentalsten abhängg vom Algorthmus! We verhält sch de Laufzet (und der Specherverbrauch) des Algorthmus als Funkton der Grösse der Daten, wenn dese Grösse resg wrd? Verson 1: Zet etwa proportonal zu. Versonen 2 und 3: könnte proportonal zu oder zu 2 sen! 1 + 2 + + = * ( + 1) / 2 4

Bg Oh Notaton 25 Formell 26 O (f (n)), wobe n de Grösse der Engabe repräsentert, bedeutet n der Grössenordnung von f (n). f st n O (g (n)) bedeutet, es gbt ene Konstante K, so dass für alle n glt: Zet für Verson 1 st O () f (n) / g (n) <= K Zet für Versonen 2 und 3 kann O () oder O ( 2 ) sen. O (1) bedeutet also n konstanter Zet, oder durch ene Konstante beschränkte Zet. Auch verwet: f (n) = 3 n 2 + O (g (n)) Bespele 27 Mt ener 1000mal schnelleren Maschne 28 n 2 = 3 n 2 = 3 n 2 + 2 n + 1 = O (n 2 ) O (n 2 ) O (n 2 ) Ver Algorthmen: O (log (n)) Vorherge Maxalgrösse: N Neues Maxmum: N 1000 3 n 2 + 2 n + 1 = O (2 n 2 ) O (n) 1000 N O (n 2 ) 32 N 3 n 2 + 2 n + 1 = 3 n 2 + O (n) O (2 n ) N + 10 Verkettete Lsten 29 hghest_name, Verson 2 30 Haldenegg rght 3 actve Central (Der Cursor) frst_element rght Hauptbahnhof rght : INTEGER _th () := 0 ; Result := "" > n := + 1 Result := greater (Result, lne._th ().name) 5

hghest_name, Verson 3 31 Performance 32 : INTEGER _th () := + 1 ; Result := "" = 0 := 1 Result := greater (Result, lne._th ().name) _th st n O () (n Verson 3) Folglch st hghest_name, und jede andere solche Traverserung, n O ( 2 )! 1 + 2 + + = * ( + 1) / 2 = O ( 2 ) Arrays 33 Array Klassen-Interface 34 class ARRAY [G] feature Indexert von ener unteren bs zu ener oberen Schranke Zugrff auf oder Modfkaton enes Elements st n O (1) (konstante Zet) () lower, upper: INTEGER make (l, h: INTEGER) s -- Allocate wth bound l and h. hgh >= low hgher >= low lower upper Im Memory: n aufenander folgen Stellen gespechert (: INTEGER): G s -- Entry of ndex >= lower <= upper put (x: G; : INTEGER) s -- Replace by x the value of the entry of ndex >= lower <= upper Arrays benutzen 35 Varante: Hashtabellen 36 your_array: ARRAY [REAL] drectory: HASH_TABLE [METRO_STATION, STRING] create your_array.make (1, 100) your_array.put (35.6, 7) your_array.put ( 45.0, 8) create drectory.make (100) drectory.put (Staton_balard, "BALARD") drectory.put (Staton_montrouge, "MONTROUGE") prnt (your_array. (8)) prnt (drectory. ("MONTROUGE")) 6

37 Ende der Vorlesung 13 7