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"> 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">

Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Algorithmen und Datenstrukturen Übungsmodul 3

Ähnliche Präsentationen


Präsentation zum Thema: "Algorithmen und Datenstrukturen Übungsmodul 3"—  Präsentation transkript:

1 Algorithmen und Datenstrukturen Übungsmodul 3
Dr. W. Narzt u. Dr. A.Stritzinger Institut für Wirtschaftsinformatik- Software Engineering JKU Linz

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

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

4 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

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

6 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

7 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

8 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)

9 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

10 Transformation in D-Diagramme (2)
Beispiel

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

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

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

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

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

16 Wie prüft und transformiert man Algorithmen?
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


Herunterladen ppt "Algorithmen und Datenstrukturen Übungsmodul 3"

Ähnliche Präsentationen


Google-Anzeigen