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 SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger Institut.

Ähnliche Präsentationen


Präsentation zum Thema: "Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger Institut."—  Präsentation transkript:

1 Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger Institut für Wirtschaftsinformatik- Software Engineering JKU Linz

2 Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 2 Lösung Übung 2 Schrittweise Verfeinerung Übungsbesprechung Übung 4 Überblick

3 Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 3 Schrittweise Verfeinerung 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 Engl: Stepwise Refinement

4 Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 4 Schrittweise Verfeinerung Beispiel: Wörter Zählen Wörter zählen mit beliebigen Leerzeichen XXXX XXXX XXXX # 1. Schritt int countWords(char[] line) { int nrOfWords; while (!endeErreicht) { überspringeLeerzeichen; if (wortKannGelesenWerden) nrOfWords++; } return nrOfWords; }

5 Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 5 Schrittweise Verfeinerung Beispiel: Wörter Zählen Wörter zählen mit beliebigen leerzeichen XXXX XXXX XXXX # 2. Schritt int countWords(char[] line) { int i = 0; int nrOfWords = 0; while (!line [i] == '#') { skipBlanks( i, line); // i at next char if (skipWord( i, line)) nrOfWords++; } return nrOfWords; }

6 Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 6 Schrittweise Verfeinerung Beispiel: Zentrierte Ausgabe Idee: Text linksbündig (in einer Datei); Ziel: Zentriert ausgeben Eingabe XXXX XXXX XXXX#// 1 blank garantiert XXXXXXXXX XXXX XXXX XXXX XXXX# XX XX# Ausgabe: Zentriert XXXX XXXX XXXX XXXXXXXXX XXXX XXXX XXXX XXXX XX vordefiniert: r ead(char ch, boolean eof) write(char [] line) + writeln

7 Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 7 Schrittweise Verfeinerung Beispiel: Zentrierte Ausgabe Eingabe Operator + char[] + char[] 'Uni' + 'Linz führt zu 'UniLinz' char[] + char 'Uni' + ' ' +'Linz' führt zu 'Uni Linz' Operator = char[] = char[] Kopiert die gesamte Zeichenkette

8 Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 8 Schrittweise Verfeinerung Beispiel: Zentrierte Ausgabe centerText(int width) { char []line boolean eof readLine( line, eof ) while (!eof) { formatLine( line, width) writeLine( line) readLine( line, eof) }//while }

9 Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 9 Schrittweise Verfeinerung Beispiel: Zentrierte Ausgabe readLine(char[] line, boolean eof){ line = '' readCharacter( ch, eof) while (!eof && !endOfline) { line = line + ch readCharacter( ch, eof) }//while }

10 Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 10 Schrittweise Verfeinerung Beispiel: Zentrierte Ausgabe readLine(char[] line, boolean eof){ line = '' char ch read( ch, eof) while (!eof && ch != '#') { line = line + ch read( ch, eof) }//while } endOfLine refined, readCharacter replaced

11 Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 11 Schrittweise Verfeinerung Beispiel: Zentrierte Ausgabe formatLine(char[] line, int width) { int offset char[]centeredLine = '' offset = offsetFromLeft( line, width) for (int i = 1.. offset) { centeredLine = centeredLine + ' ' }//for centeredLine = centeredLine + line line = centeredLine }

12 Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 12 Schrittweise Verfeinerung Beispiel: Zentrierte Ausgabe formatLine(char[] line, int width) { int offset char[] centeredLine = '' offset = (width-strlen(line)) / 2 for (int i = 1.. offset) { centeredLine = centeredLine + ' ' }//for centeredLine = centeredLine + line line = centeredLine } OffsetFromLeft refined

13 Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 13 Schrittweise Verfeinerung Beispiel: Zentrierte Ausgabe centerText(int width) { char[] line bool eof readLine( line, eof) while (!eof) { formatLine( line, width) writeln( line) readLine( line, eof) }//while } writeLine replaced

14 Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 14 Übung 4 Mehrere Verfeinerungsschritte angeben (kommentieren!) Annahmen kommentieren, falls Angabe unklar


Herunterladen ppt "Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger Institut."

Ähnliche Präsentationen


Google-Anzeigen