Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

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

Ähnliche Präsentationen


Präsentation zum Thema: "Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen Übungsmodul 4 Dr. W. Narzt u. Dr. A. Stritzinger."—  Präsentation transkript:

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

2 Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 2 Schrittweise Verfeinerung l Grundidee Zerlege eine Aufgabe in Teilaufgaben und betrachte jede Teilaufgabe für sich Zerlege Teilaufgaben weiter in Teilaufgaben, bis diese so einfach geworden sind, dass man sie mit Hilfe elementarer Aktionen lösen kann Das Zerlegen einer Aufgabe in Teilaufgaben führt meist zu neuen Prozeduren; das ist aber nicht zwingend Ergibt: TOP-DOWN Entwurf von Algorithmen

3 Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 3 Schrittweise Verfeinerung l Beispiel: Spaltenweise Textausgabe Die Wörter eines einzulesenden Satzes sollen spaltenweise ausgedruckt werden Die Wörter sind durch (beliebig viele) Leerzeichen voneinander getrennt. Ein Punkt kennzeichnet das Satzende Die Ausgabe soll in nrCols Spalten und nrLines Zeilen erfolgen, sodass der Satz spaltenweise von oben nach unten gelesen werden kann Wörter, die länger als die maximale Spaltenbreite colWidth sind, sollen bei der Ausgabe abgeschnitten werden (mind. 1 Blank zur nächsten Spalte) Nach jeweils nrLines * nCols Wörtern soll eine neue Seite begonnen werden

4 Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 4 Schrittweise Verfeinerung l Beispiel nrCols = 3,nrLines = 4, colWidth = 5 Eingabetext Kräht der Hahn am Mist, ändert sich das Wetter oder es bleibt, wie es ist. Ausgabetext Kräht Mist, Wette1. Seite 2 der änder oder 3 Hahn sich es 4 am das bleib wie2. Seite 2 es 3 ist

5 Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 5 Schrittweise Verfeinerung l Annahmen Als elementare, abstrakte Operationen stehen zur Verfügung t newPage() –zum Wechseln der aktuellen Schreibposition auf Zeile 1, Spalte 1 einer neuen Seite t newColumn( colNr) –zum Wechseln der aktuellen Schreibposition auf Zeile 1 der physischen Spalte colNr (nicht logische Spalte!) t newLine() –zum Wechseln auf eine neue Zeile unter Beibehaltung der logischen Spalte

6 Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 6 Schrittweise Verfeinerung l Grobstruktur writeColumns ( int nrCols int nrLines int colWidth) { // Annahme: Satz besteht aus mindestes 1 Wort repeat { read word write word set position } until (end of sentence) }

7 Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 7 Schrittweise Verfeinerung writeColumns ( int nrCols int nrLines int colWidth) { boolean eos char[] word int line = 1 int col = 1 repeat { readWord( colWidth word eos) write( word) setPosition( nrCols nrLines colWidth line col) } until (eos) }

8 Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 8 Schrittweise Verfeinerung readWord( int colWidth char[] word boolean eos) { char c skipBlanks( c) fillWord( c colWidth word eos) }

9 Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 9 Schrittweise Verfeinerung skipBlanks( char c) { char c repeat { read( c) } until (c != ' ') }

10 Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 10 Schrittweise Verfeinerung fillWord( char c int colWidth char[] word boolean eos) { word = '' int len = 0 while (c != ' ') && (c != '.') { if (len < colWidth) { word += c len++ } read( c) } eos = (c == '.') } // Anmerkung: Punkt am Ende wird nicht mehr mitgeliefert

11 Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 11 Schrittweise Verfeinerung setPosition( nrCols nrLines colWidth line col) { if (line < nrLines) { newLine() line++ } else if (col < nrCols) { newColumn( col * (colWidth + 1) + 1) col++ } else { line = 1, col = 1 newPage() }


Herunterladen ppt "Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen Übungsmodul 4 Dr. W. Narzt u. Dr. A. Stritzinger."

Ähnliche Präsentationen


Google-Anzeigen