1 / 14

Algorithmen und Datenstrukturen SS 2005

Algorithmen und Datenstrukturen SS 2005. Mag.Th. Hilpold u. Dr. A.Stritzinger Institut für Wirtschaftsinformatik- Software Engineering JKU Linz. Überblick. Darstellungsarten Ein und Ausgabe in Jana Übungsbesprechung Übung 2. Darstellungsarten. Prosa

lynda
Download Presentation

Algorithmen und Datenstrukturen SS 2005

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 DatenstrukturenSS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger Institut für Wirtschaftsinformatik- Software Engineering JKU Linz

  2. Überblick • Darstellungsarten • Ein und Ausgabe in Jana • Übungsbesprechung Übung 2

  3. Darstellungsarten Prosa Allgemein verständlich; wenig anschaulich; Gefahr von Mehrdeutigkeit, Unstrukturiertheit Ablaufdiagramm sehr anschaulich; Gefahr von Unstrukturiertheit; Aufwendig zu erstellen Struktogramm anschaulich; Aufwendig zu erstellen Algorithmenbeschreibungssprache anschaulich; flexibel in der Handhabung; präzise oder grob je nach Form; leicht in Programmiersprache übersetzbar Programmiersprache Präziseste und vollständigste Beschreibungsform Alle Variablen und Konstante müssen deklariert sein (sprachabhängig) Alle Anweisungen müssen den syntaktischen Regeln der Sprache entsprechen

  4. Ablaufdiagramm

  5. Struktogramm liste[i]<>x

  6. Algorithmenbeschreibungssprache jana (java-based abstract notation for algorithms) • int search (list l int len int x) { Anweisungenreturn i • } • sort (int[1..n]valueArrbooleanincrease) { Anweisungen}

  7. Programmiersprache Java • int search (int[]values, int x) {boolean found = false; int i = 0; while (!found && i < values.length()) { // check if value is x if (values[i] == x) { found = true; } else { i++; } } if (!found) i = -1; • return i • }

  8. Ein- und Ausgabe in Jana Lesen • Lesen eines einzelnen Zeichens mit read(char ch, bool eof). • 2. Ausgangsparameter gibt Auskunft, ob tatsächlich gelesen wurde (eof = end of file). Schreiben • Generische Funktion write (value) für Zeichen, Zahlen, ... char ch bool eof read(ch, eof) while (! eof) { write(ch) read(ch, eof) } Beispiel • Lesen und Schreiben aller Zeichen bis an das Ende im Eingabestrom.

  9. Zeichen und Zahlen in Jana Ord • int ord(char ch) • Liefert den Ordinalwert (z.B. ASCII-Code) des Zeichens ch Beispiele • Umwandelneines Zeichens (Ziffer) in eine Zahl. • Umwandeln von Klein- in Großbuchstaben. int i char c c = ‘4‘ i = Ord(c) – Ord(‘0‘) char c = ‘g‘ if (‘a‘<= c <=‘z‘) { int offset = Ord(c)-Ord(‘a‘) write(Chr(Ord(‘A‘) +offset)) }

  10. Zeichenketten und Zahlen in Jana Beispiel • Umwandeln von Zeichenketten (vorzeichenlose, ganze Zahl darstellend) in entsprechende Zahlen. • Zeichenkette "123"  Zahl 123. Aufgabe • Erkennen von fehlerhaften Zeichenketten (z.B. ‚"12x4"). int convert(char[] s) { int value = 0 for(int i=0.. strlen(s)-1){ int digit = Ord(s[i]) – Ord(‘0‘) value = value*10 + digit }//for return value }

  11. Dezimal- und Binärdarstellung Frage • Wie schaut die Binärdarstellung einer ganzen Zahl aus? Lösungsidee • Betrachte nur das letzte Bit der Zahl; letztes Bit ist 1, wenn die Zahl ungerade ist, sonst 0. • Stelle das Bit in eine Zeichenkette. • Dividiere die Zahl durch 2 und schneide dadurch das letzte Bit ab. • Wiederhole den Vorgang solange Zahl > 0.

  12. Dezimal- und Binärdarstellung Algorithmus in Jana char[] bitString(int x) { char[] bitStr = "" while (x>=0) { if ((x%2) == 0) bitStr = "0" + bitStr else bitStr = "1" + bitStr x = x/2 // ganzzahlige Division! } return bitStr }//bitString x 100 50 25 12 6 3 1 0 x%2 0 0 1 0 0 1 1 0 bitStr 0 00 100 0100 00100 100100 1100100 01100100

  13. Schachbrettmuster Frage • Gesucht ist ein Algorithmus, der ein schachbrettartiges Muster aus zwei verschiedenen Zeichen ausgibt. Erster Entwurf • Schleife über alle Zeilen. • Schleife über alle Spalten. • Gib Zeichen X aus. • Tausche Zeichen X mit Zeichen O aus. XOXOXOXOOXOXOXOXXOXOXOXOOXOXOXOXXOXOXOXOOXOXOXOXXOXOXOXOOXOXOXOX

  14. Schachbrettmuster Algorithmus in Jana chessBoard(int n) { for(int row=1.. n) { for(int col=1..n) { if ( (row+col)%2 == 0){ write(‘X‘) } else { write(‘O‘) } }//for writeln() // Zeile fertig }//for }//chessBorad

More Related