Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger Institut.

Slides:



Advertisements
Ähnliche Präsentationen
Imperative Programmierung
Advertisements

DVG Einfache Klassen Einfache Klassen. DVG Einfache Klassen 2 Strukturen Beispiel: Personendaten bestehen aus –String name –String vorname.
Objektorientierte Programmierung Definition von Klassen
der Universität Oldenburg
der Universität Oldenburg
Gliederung Motivation / Grundlagen Sortierverfahren
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Indirekte Adressierung
FH-Hof Indirekte Adressierung Richard Göbel. FH-Hof Einfache Speicherung von Daten Eine "einfache" Deklaration definiert direkt eine Speicherplatz für.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (03 – Verschiedene Algorithmen für dasselbe Problem) Prof. Dr. Th. Ottmann.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (03 – Verschiedene Algorithmen für dasselbe Problem) Prof. Dr. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 4 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (03 – Verschiedene Algorithmen für dasselbe Problem) Prof. Dr. Th. Ottmann.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Imperative Programmierung
Java-Kurs - 2. Übung Entwicklungsumgebung Struktur von Programmen
PKJ 2005/1 Stefan Dissmann Zusammenfassung Bisher bekannt: Einfache Variable Feld Vereinbarung Zuweisung Block while-Schleife Bedingte Anweisung (if) Typ.
Zusammenfassung Vorwoche
Arrays,Strings&Pointer in C/C++
DVG Klassen und Objekte
DVG Einfache Klassen 1 Einfache Klassen. 2DVG Einfache KlassenStrukturen Beispiel: Personendaten bestehen aus String name String name.
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen Übungsmodul 4 Dr. W. Narzt u. Dr. A. Stritzinger.
Repetitorium PG : Gültigkeit, Sichtbarkeit & Operatorüberladung FH-Darmstadt, FB Informatik.
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.
Einführung in die Programmiersprache C 3.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger Institut.
Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger Institut für Wirtschaftsinformatik- Software Engineering JKU Linz.
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger Institut.
Christian Mansky Design - Fallstudien Christian Mansky
Algorithmen und Datenstrukturen Übungsmodul 6
Algorithmen und Datenstrukturen Übungsmodul 10
Algorithmen und Datenstrukturen SS 2005
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen 1 SS 2007 Dr. W. Narzt u. Dr. A. Stritzinger Institut.
Dynamische Datentypen
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen Übungsmodul 5 Dr. W. Narzt u. Dr. A. Stritzinger.
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger Institut.
Algorithmen und Datenstrukturen Übungsmodul 8
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Thomas Hilpold: Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger.
Algorithmen und Datenstrukturen SS 2005
Algorithmen und Datenstrukturen Übungsmodul 1
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen Übungsmodul 2 Dr. W. Narzt u. Dr. A. Stritzinger.
Algorithmen und Datenstrukturen Übungsmodul 3
Agenda für heute, 12. Mai, 2005 ProzedurenProzeduren Funktionsprozeduren Prozedurparameter Lokale und globale Variablen Datentypen: Ordinaltypen.
Agenda für heute, 28. April, 2005 Strukturierte VariablenStrukturierte Variablen Arrays.
Agenda für heute, 7. April, 2005 Bedingte ProgrammausführungBedingte Programmausführung Algorithmische Grundlagen Vergleichsoperatoren, Wahrheitswerte.
Programmieren in C Grundlagen C 2
Algorithmen und Datenstrukturen 1 SS 2002
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Programmierpraktikum Java SS 2005 Mag.Thomas Hilpold.
Algorithmen und Datenstrukturen 1 SS 2002
Java-Kurs - 3. Übung Hausaufgabe Arrays For-Schleifen.
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
Algorithmen und Datenstrukturen 1 SS 2002
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
Java-Kurs Übung Besprechung der Hausaufgabe
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen 1 SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger Institut.
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
Funktionen. Aufgabe : Eingabe zweier Zahlen ---> Minimum bestimmen Dann nochmals Eingabe zweier Zahlen ---> Minimum bestimmen.
Variablen und Operatoren. C++ Teil 2: Grundstrukturen Variablen Operatoren Kontrollstrukturen Funktionen Header-Dateien Pointer und Referenzen.
Tutorium Software-Engineering SS14 Florian Manghofer.
Java Programme nur ein bisschen objektorientiert.
C++ FÜR cOMPUTERSPIELENTWICKLER
Einführung in die Programmierung
Felder in der Informatik
 Präsentation transkript:

Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger Institut für Wirtschaftsinformatik- Software Engineering JKU Linz

Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 2 Lösung Übung 3 Algorithmen mit Gedächtnis Verbunddatentypen Übungsbesprechung Übung 5 Überblick

Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 3 Algorithmen mit Gedächtnis Motivation Bei vielen Aufgabenstellungen muß man sich Zustände über mehrere Aufrufe von Algorithmen hinweg merken (Gedächtnis). Bisher verwendeten wir ausschließlich lokale Variable, die beim Verlassen eines Algorithmus zerstört werden. addValue(  int v) { int sum = 0 sum = sum + v write("Aktuelle Summe = "); write(sum) writeln }

Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 4 Globale Variable oder statisch lokale Variable Zur Realisierung eines "Gedächtnisses", das sich Zustände über mehrere Aufrufe einer Algorithmus hinweg merkt, können Variable entweder als globale Variable oder als statische lokale Variable deklariert werden. Global: int sum = 0 //auch für weitere Algorithmen sichtbar addValue(  int v) { sum = sum + v write("Aktuelle Summe = "); write(sum) writeln } Local: addValue(  int v) { static int sum = 0 // nur in addValue sichtbar sum = sum + v write("Aktuelle Summe = "); write(sum) writeln }

Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 5 Beispiel: Schadstoffstatistik Schreiben Sie einen Algorithmus mit Gedächtnis, der als Eingangsparameter einen aktuellen Meßwert für einen Luftschadstoff erwartet und bei jedem 10. Aufruf den aktuellen Mittelwert für alle bisherigen Meßwerte und das bisher aufgetretene Maximum ausdruckt. Verwendung: addSample(0.123) addSample(0.23) addSample(0.421) addSample(0.232).... //nach 10. Aufruf: Maximum SO = 7.21 Durchschnitt SO = //nach

Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 6 Beispiel: Schadstoffstatistik addSample(  float val) { static float max = 0 static float avg = 0 static int numOfVal = 0 if (val > max) { max = val } avg = (avg * numOfVal + val) / (numOfVal + 1) numOfVal ++ if (numOfVal % 10 == 0) { write("Maximaler Wert SO2 = "); write(max); writeLn() write("Durschnitt SO2 = "); write(avg); writeLn() }

Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 7 Motivation: Bisher wurden nur primitive (einfache) Datentypen sowie Felder dieser behandelt. Das Arbeiten mit nur primitiven Datentypen ist nur für sehr kleine Problemlösungen ausreichend, da man schnell die Übersicht verliert, welche Variablen logisch zusammen gehören. Beispiel: Verwalten einer Person mit Vor- und Zuname? char[1:n] first, last Beispiel: Verwalten zweier Personen mit Vor- und Zuname? char[1:n] first1, last1, first2, last2 Beispiel: Verwalten von m Personen mit Vor- und Zuname? char [1:m, 1:n] firstArray, lastArray Idee: Verbund, also zusammengesetzter Datentyp Person Benutzerdefinierte Datentypen (Verbunde)

Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 8 Benutzerdefinierte Datentypen (Verbunde) Typdeklaration: type Person { char[1:n] first, last } type Point { int x,y } Variablen: Person a // Person a sind unmittelbar definiert, Speicherplatz ist reserviert a.first = "Max"// Zuweisung sofort möglich a.last = "Mustermann" Point p1; p1.x = 5 p1.y = 8 Variablendeklaration, Zuweisung, Vergleich, et.c. ähnlich primitiver Variable

Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 9 Benutzerdefinierte Datentypen (Verbunde) Verwendung als Eingangsparameter: f(  Person p) { p.firstName = "nix" } Gesamte Person p wird kopiert. Änderungen haben somit keine Außenwirksamkeit. Verwendung als Übergangsparameter: f(  Person p) { Person a a.firstName = "franz" a.lastName = "Huber" p = a } // keine Kopie, direkte Manipulation von p, außenwirksam

Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 10 Felder von Verbunden Variablendeklaration: type Person { char[1:n] first, last } Person [n] pers //Array ist deklariert und definiert //Index 0..n-1 Person [1:n] pers2 //Array ist deklariert und definiert //Index 1..n Verwendung: pers[1].first = "Max" pers[1].last = "Mustermann" pers[2] = pers[1] //Alle Werte werden kopiert. if(pers[1] == pers[2]) // true, Wertvergleich pers2 = pers //pers2 muß gleich groß oder größer sein. // die einzelnen Datenwerte werden kopiert pers == pers2 (bedeutet: alle Werte aller Datenobjekte sind gleich -> Felder gleich groß)

Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 11 Zusammengesetzte Verbunde Typdeklaration: type Point { int x,y } type Rectangle { Point p int width, height } Verwendung: Rectangle r1, r2; // r ist mit allen inneren Verbunden definiert r1.p.x = 5 r1.p.y = 10 r1.width = 100 r1.height = 50 r2 = r1 // kopiert alle (inkl. innerer) Werte if (r2 == r1) // alle Werte werden verglichen -> true

Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 12 Verbunde mit Algorithmen Motivation: Verbunde können auch Algorithmen enthalten, die logisch zum Verbund gehören. Die Algorithmen greifen meist auf Variablen des Verbunds im Sinne von Gedächtnisvariablen zu. Beim Aufruf des Algorithmus muß eine Variable eines Typs vorhanden sein, der den Algorithmus enthält. z.b. Point p; Rectangle r; r.contains(p) Typdeklaration: type Point { int x,y } type Rectangle { Point p int width, height boolean contains(Point other) { return (other.x >= p.x && other.y >= p.y //p kann implizit verwendet werden && other.x <= p.x + width && other.y <= p.y + height) }.... }

Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 13 Verbunde mit Algorithmen Verwendung: Rectangle r1, r2 Point p1 p1.x = 5 p1.y = 5 r1.p = p1 r1.width = 10 r1.height = 5 r2.p = r1.p r2.width = 15 r2.height = 3 p1.x = 10 p1.y = 4 if (r1.contains(p1) && r2.contains(p1)) {...} //