1 / 24

Algorithmen und Datenstrukturen 1 SS 2002

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

waldo
Download Presentation

Algorithmen und Datenstrukturen 1 SS 2002

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

  3. 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.

  4. Rückblick • Prosa • Ablaufdiagramm • Struktogramm • Algorithmenbeschreibungssprache • Programmiersprache

  5. Ablaufdiagramm

  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. Strukturierung im Kleinen 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. unbeschränkte Ablaufstrukturen 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. unbeschränkte Ablaufstrukturen (2) unbeschr 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. D-Diagramme 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. 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. 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. D-Diagramme (4) 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. D-Diagramme (5) D-Diagramm ? j ? p Ja n ? N==1 ? q Nein j ? N==2 n Ja Nein A 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

  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. 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. Transformation in D-Diagramme (2) Beispiel

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

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

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

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

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

  23. 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

  24. Ü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

More Related