Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.

Ähnliche Präsentationen


Präsentation zum Thema: "Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas."—  Präsentation transkript:

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

2 Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 2 Organisation Themenbereiche heute Strukturierung im Kleinen unbeschränkte Ablaufstrukturen D-Diagramme (Dijkstra) Transformation in D-Diagramme Beispiele Übungsbesprechung Übung 2 Übersicht

3 Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 3 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. Organisation

4 Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 4 Prosa Ablaufdiagramm Struktogramm Algorithmenbeschreibungssprache Programmiersprache Rückblick

5 Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 5 Ablaufdiagramm

6 Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 6 Jana 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

7 Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 7 Strukturierung im Kleinen Algorithmen sollen einfach zu lesen sein Entwicklung (z.B. Testen) Wartung unbeschränkte Ablaufstrukturen 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

8 Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 8 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" GOTO A (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

9 Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 9 unbeschr 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,... 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))

10 Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 10 D-Diagramme Idee 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

11 Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 11 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

12 Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 12 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.

13 Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 13 D-Diagramme (4) Beispiel (D-Diagramm?) 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" END Für jede Anweisung ein Kasten Pfeile für Gotos Verzeigung ? Bedingung

14 Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 14 D-Diagramme (5) D-Diagramm ? ? N==1 T = 1 Ja ? N==2 T = T + 1 ? T*T > N ? N <> T * INT (N/T) PRINT "nicht Prim" PRINT "Prim" Ja Nein Ja Nein ? p A ? q END B ? r ? s D C E j j j j n n n n

15 Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 15 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)

16 Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 16 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

17 Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 17 Transformation in D-Diagramme (2) Beispiel

18 Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 18 Transformation in D-Diagramme (3) Beispiel D-Diagramm? Code Verdoppelung oder boolesche Hilfsparameter

19 Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 19 Transformation in D-Diagramme (4) Lösungen D-Diagramm?

20 Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 20 Transformation in D-Diagramme (4) Problem und Lösung D-Diagramm?;

21 Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 21 Transformation in D-Diagramme (5) Problem (Kreuzstruktur) Idee: zwei Spieler, die abwechselnd drankommen; r,q == gewonnen

22 Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 22 Transformation in D-Diagramme (6) Lösung (Kreuzstruktur) D-Diagramm?

23 Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 23 Transformation Wie prüft und transformiert man Algorithmen? 1.Algorithmus von Jana als Ablaufdiagramm darstellen 2.Prüfen, ob D-Diagramm konform 3.Ablaufdiagramm durch: a)boolesche Hilfsvariable und b)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

24 Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 24 Übung 2 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 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


Herunterladen ppt "Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas."

Ähnliche Präsentationen


Google-Anzeigen