Algorithmen und Datenstrukturen 1 SS 2002

Slides:



Advertisements
Ähnliche Präsentationen
Ziele von EINI I + II Einführen in „Informatik“
Advertisements

Forschungszentrum caesar
Software-Engineering II Eingebettete Systeme, Softwarequalität, Projektmanagement Prof. Dr. Holger Schlingloff Institut für Informatik der Humboldt.
Einführung in die Programmierung Zusammenfassung
Zusammenfassung der Vorwoche
Einführung in JavaScript II
10. Grundlagen imperativer Programmiersprachen
der Universität Oldenburg
Terminierung und Deadlocks Enkhbat Daginaa Betreuerin Prof. Heike Wehrheim Totale Korrektheit.
FH-Hof Verwaltung von Zeichenketten Richard Göbel.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Tobias Lauer.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 2 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Die Skriptsprache Perl (2) Wolfgang Friebel DESY Zeuthen.
DVG Ablaufsteuerung
Einführung in die Programmierung Datensammlung
Einführung in die Programmierung Anweisungen und Datentypen
Struktogramme IF-ELSE FOR – Schleife
PRJ 2007/1 Stefan Dissmann Verkettete datenstruktur: Liste Problem: Liste, die eine beliebige Zahl von Elementen verwaltet Operationen: Erzeugen, Anfügen,
Informatik 1 Übung 2.
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen Übungsmodul 4 Dr. W. Narzt u. Dr. A. Stritzinger.
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Kontrollstrukturen Verwendung: Steuerung des Ablaufs.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
Einführung in die Programmierung
Einführung in die Programmiersprache C 4
Informatik 1 Übung 4.
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.
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.
Auswahlanweisungen, Iterationsanweisungen, Blöcke, Sprunganweisungen
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.
Programmiersprachen Proseminar Grundlagen wissenschaftlichen Arbeitens
Algorithmen und Datenstrukturen Übungsmodul 8
Algorithmen und Datenstrukturen Übungsmodul 11
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
Einführung in PHP.
Starten der Entwicklungsumgebung (IDE)
Agenda für heute, 7. April, 2005 Bedingte ProgrammausführungBedingte Programmausführung Algorithmische Grundlagen Vergleichsoperatoren, Wahrheitswerte.
BMEVIEEA100 Grundlagen der Programmierung
PHP: Operatoren und Kontrollstrukturen
Hochschule Fulda – FB ET Sommersemester 2014
Algorithmen und Datenstrukturen 1 SS 2002
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger Institut.
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Programmierpraktikum Java SS 2005 Mag.Thomas Hilpold.
Java Syntaxdiagramme Buchstabe A B Z a z ... Ziffer
Software Engineering Struktogramme
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Lernlandkarte OOP (ObjektOrientiertes Programmieren)
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.
Programmierkurs JavaUE 4 Anweisungen und ProgrammeDietrich BolesSeite 1 Programmierkurs Java Dr. Dietrich Boles Teil Imperative Programmierung Unterrichtseinheit.
The Programming Language Pascal
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen 1 SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger Institut.
Wann ist eine Funktion (über den natürlichen Zahlen) berechenbar?
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 Programmierpraktikum Java SS 2005 Mag.Thomas Hilpold.
TRUE und FALSE in C Der Wert 0 steht für FALSE Jeder von 0 verschiedene Wert steht für TRUE FALSE wird als 0 dargestellt TRUE wird als 1 dargestellt.
Schleifen Datenfelder (Arrays) Verzweigungen
 Präsentation transkript:

Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas Hilpold Institut für Wirtschaftsinformatik Software Engineering JKU Linz Termin 2 – Dijkstra Diagramme

Übersicht Organisation Themenbereiche heute Strukturierung im Kleinen unbeschränkte Ablaufstrukturen D-Diagramme (Dijkstra) Transformation in D-Diagramme Beispiele Übungsbesprechung Übung 2

Organisation Teilnehmerliste Grundsätzlich ist Jana zu verwenden Java optional; Jana ist Klausur-relevant Vorsicht: Java unterstützt einige Features von Jana nicht: Ausgangsparameter Übergabeparameter ÜBUNGSABGABE: Ausarbeitungen bitte links oben klammern ! keine Klarsichthülle abgeben. Präsentation von 2 Übungen; bei der Präsentation kann der Quelltext von mir am Beamer dargestellt werden. Musterlösung oder eine Übung muß verfügbar sein, um Laborbetrieb zu gewährleisten

Rückblick Prosa Ablaufdiagramm Struktogramm Algorithmenbeschreibungssprache Programmiersprache User: integer erwartet, String eingegeben Device: Hardware Fehler: Printer ausgeschaltet, Festplatte defekt, Web-page kurzfristig nicht erreichbar Physical: Disk full, Mem full Code errors: Eine Methode wird inkorrekt ausgeführt, ungültiger Array index

Ablaufdiagramm Liest durch komma separierte Integers aus einer Datei Problem im Beispiel: Was ist geschehen, wenn –1 zurückgegeben wird File zu ende, Disk defekt, an der Lesestelle steht kein auswertbarer Integer "I23" (Buchstabe I) Vöest; interner Fehler der Java Maschine, Speicher voll

JANA Übersicht Algorithmen (Prozeduren) Kommentare Operatoren Ablaufsteuerung (Sequenz, Selektion, Iteration) if / else if / else, switch; while, repeat, for 4 Elementare Datentypen boolean, int, float, char Felder (inkl. Zeichenketten) boolean[1:n], char[], float[-3:3], int[1:n; 1:m] und weitere Sprachkonstrukte Dies paßt auch zur Objektorientierung; Diskussion des Beispiels, Zeit lassen Welcher Code wird ausgeführt, Abarbeitung bis i =

Strukturierung im Kleinen Algorithmen sollen einfach zu lesen sein Entwicklung (z.B. Testen) Wartung unbeschränkte Ablaufstrukturen Dies paßt auch zur Objektorientierung; Diskussion des Beispiels, Zeit lassen Welcher Code wird ausgeführt, Abarbeitung bis i = erschweren die Lesbarkeit (Verständlichkeit) einige Sprachen ermöglichen GOTO oder JUMP-Anweisungen Sprung von jeder Stelle an jede Stelle möglich dadurch sind beliebige Ablaufstrukturen möglich z.B: Basic, Assembler nicht möglich: Java, Modula 2

unbeschränkte Ablaufstrukturen Beispiel (~BASIC) A:PRINT " IST N EINE PRIMZAHL ?" INPUT "Welche Zahl ?"; N PRINT IF N == 1 THEN GOTO C IF N == 2 THEN GOTO D T = 1 B:T = T + 1 IF T * T > N THEN GOTO D IF N <> T * INT (N / T) THEN GOTO B C:PRINT " N IST KEINE PRIMZAHL" GOTO A D:PRINT "N IST EINE PRIMZAHL" (da ein Teiler t mit t * t > n einen Gegenteiler n/t mit n/t < t hätte) Problem: schlechte Lesbarkeit, da beliebig gesprungen werden darf Dies paßt auch zur Objektorientierung; Diskussion des Beispiels, Zeit lassen Welcher Code wird ausgeführt, Abarbeitung bis i =

unbeschränkte Ablaufstrukturen (2) Probleme Sprunganweisungen ermöglichen unbeschränkte Ablaufstrukturen hohe Komplexität möglich (statisch, dynamisch) schwierige Validation, hoher Aufwand für Verifikation Beispiel: mehrere Einsprünge in Schleifen, mehrere Aussprünge aus Schleifen, ... Dies paßt auch zur Objektorientierung; Diskussion des Beispiels, Zeit lassen Welcher Code wird ausgeführt, Abarbeitung bis i = Grundidee der strukturierten Programmierung nur Ablaufstrukturen mit einem Eingang und einem Ausgang zulassen Böhm und Jacopini haben gezeigt, daß jeder (!) Algorithmus durch Kombination von Sequenz, Verzweigung und Wiederholung mit einem Ein-und Ausgangdarstellbar ist (das allein bietet noch keine Garantie für Strukturiertheit (z.B. ist es möglich schlecht strukturierte Programme ohne Sprunganweisung zu schreiben))

D-Diagramme Idee rekursive Definition Beschränkung auf wenige Ablaufstrukturen Folge: weniger Komplexität, bessere Strukturiertheit rekursive Definition einfache Anweisung S ist ein D-Diagramm wenn S1 und S2 D-Diagramme sind, so sind auch folgende Konstrukte D-Diagramme: S1; S2 // Sequenz if p then S1 // Verzweigung if p then S1 else S2 while p do S1 end // Abweisschleife nichts anderes ist ein D-Diagramm Dies paßt auch zur Objektorientierung; Diskussion des Beispiels, Zeit lassen Welcher Code wird ausgeführt, Abarbeitung bis i =

D-Diagramme (2) Grundlegende D-Diagramm Strukturen jeweils genau ein Eingang, ein Ausgang rekursive Komposition dieser Strukturen erlaubt dadurch entstehen neue Strukturen, die wieder sog. reine D-Diagramme sind keine reinen D-Diagramm Strukturen: Repeat, For, Switch

D-Diagramme (3) erweiterte D-Diagramme Die Erfahrung hat gezeigt, daß einige weitere Strukturen verwendet werden dürfen Repeat-Schleife (Durchlaufschleife) Case Statement (Fallunterscheidung, switch) (For-Schleife) Diese Strukturen können wir zusätzlich einsetzten.

D-Diagramme (4) Beispiel (D-Diagramm?) Für jede Anweisung ein Kasten DIM N = 12 PRINT IF N = 1 THEN GOTO C IF N = 2 THEN GOTO D T = 1 B:T = T + 1 IF T * T > N THEN GOTO D IF N <> T * INT (N / T) THEN GOTO B C:PRINT " N IST KEINE PRIMZAHL" END D:PRINT "N IST EINE PRIMZAHL" Dies paßt auch zur Objektorientierung; Diskussion des Beispiels, Zeit lassen Welcher Code wird ausgeführt, Abarbeitung bis i = Für jede Anweisung ein Kasten Pfeile für Gotos Verzeigung ? Bedingung

D-Diagramme (5) D-Diagramm ? j ? p Ja n ? N==1 ? q Nein j ? N==2 n Ja T = 1 B T = T + 1 j ? r Ja ? T*T > N n j Nein ? s Ja ? N <> T * INT (N/T) n Nein C PRINT "Prim" D PRINT "nicht Prim" E END

Nicht D-Diagramm Strukturen Einige grundlegende Strukturen Verzweigung mit Einsprung Verzweigung mit Aussprung (Verzweigung in Verzweigung, die aus der umgebenden Verzweigung rausführt) Schleife mit Einsprung Schleife mit Aussprung (Verzweigung in Schleife, die aus der Schleife rausführt)

Transformation in D-Diagramme Allgemeines Jede beliebige Ablaufstruktur läßt sich als D-Diagramm darstellen (lt. Böhm und Jacopini) Wie kann man ein Nicht-D-Diagramm in ein D-Diagramm transformieren? Mehrere Methoden Einige ändern die Struktur des ursprüngl. Algo. stark Wir -> heuristisch: Codeverdoppelung oder/und Einführung boolescher Hilfsvariablen

Transformation in D-Diagramme (2) Beispiel

Transformation in D-Diagramme (3) Beispiel D-Diagramm? Code Verdoppelung oder boolesche Hilfsparameter

Transformation in D-Diagramme (4) Lösungen D-Diagramm?

Transformation in D-Diagramme (4) Problem und Lösung D-Diagramm?;

Transformation in D-Diagramme (5) Problem (Kreuzstruktur) Idee: zwei Spieler, die abwechselnd drankommen; r,q == gewonnen

Transformation in D-Diagramme (6) Lösung (Kreuzstruktur) D-Diagramm?

Transformation Wie prüft und transformiert man Algorithmen? Algorithmus von Jana als Ablaufdiagramm darstellen Prüfen, ob D-Diagramm konform Ablaufdiagramm durch: boolesche Hilfsvariable und Code-Verdoppelung in D-Diagramm überführen 4. D-Diagramm prüfen (z.B. von außen nach innen) 5. D-Diagramm in Algorithmenbeschreibungssprache darstellen

Übung 2 Jana wird um GOTO-Statement erweitert Übung betrifft Darstellung, Transformation Nur Grundstrukturen + Repeat Schleife nötig Achten Sie auf saubere Darstellung Einsatz der Mittel: Codeverdoppelung, boolesche Hilfsvariablen Anmerkung: In der Praxis (z.B. Java): Programmierprache ohne Goto Statement -> gut dann prüfen, ob break oder continue Anweisungen verwendet wurden, da z.B. Java auch mehrere Schleifenaussprünge ermöglicht