Platzhalter für Bild, Bild auf Titelfolie hinter das Logo einsetzen Konzepte der Informatik Vorkurs Informatik zum WS 2013/2014 16.09. - 27.09.2013 Dr. Werner Struckmann / Hendrik Freytag 1. April 2010 Referent Kurztitel der Präsentation (bitte im Master einfügen) Seite 1
Wiederholung: Struktogramme Linearer Ablauf (Sequenz): Anweisung 1 Anweisung 2 Anweisung 3 Anweisung 4 Jede Anweisung wird in einen rechteckigen Strukturblock geschrieben. Strukturblöcke können untereinander gestellt werden. Die Strukturblöcke werden nacheinander von oben nach unten durchlaufen. 17.09.2013 Konzepte der Informatik Seite 2
Wiederholung: Struktogramme Zweifache Auswahl (alternative Verarbeitung) Wahr Anweisungsblock 1 Bedingung Anweisungsblock 2 Falsch Wenn die Bedingung zutreffend (wahr) ist, wird der Anweisungsblock 1 durchlaufen. Trifft die Bedingung nicht zu (falsch), wird der Anweisungsblock 2 durchlaufen. Ein Anweisungsblock kann aus einer oder mehreren Anweisungen bestehen. Austritt erfolgt nach unten nach Abarbeitung des jeweiligen Anweisungsblocks. 17.09.2013 Konzepte der Informatik Seite 3
Wiederholung: Struktogramme Abweisende (vorprüfende kopfgesteuerte) Schleife... Bedingung Anweisungsblock... Wiederholungsstruktur mit vorausgehender Bedingungsprüfung: Zuerst wird die Bedingung ausgewertet: Ergibt sie wahr, wird der Schleifenkörper (Anweisungsblock) einmal ausgeführt. Danach wird zum Beginn der Schleife zurückgekehrt und erneut mit der Prüfung der Bedingung begonnen. Ergibt die Auswertung der Bedingung falsch, wird unterhalb des Schleifenkörpers fortgefahren (ohne ihn auszuführen). Häufig benutzt man eine Bedingung, deren Wahrheitswert sich im Laufe der Zeit verändert, z.b. indem Variablen im Schleifenkörper verändert werden, die in der Bedingung vorkommen. Man führt also die Anweisungen im Schleifenkörper solange aus, bis die Bedingung nicht mehr zutrifft. 17.09.2013 Konzepte der Informatik Seite 4
Struktogramme: Fallauswahl Wenn n = 1, mache x Wenn n = 2, mache y Wenn n = 3, mache z... Wahr n = 1 Falsch Anweisungsblock für n = 1 Anweisungsblock 2 Wahr n = 2 Falsch Anweisungsblock für 2 usw. 17.09.2013 Konzepte der Informatik Seite 5
Struktogramme Fallauswahl Variable Wert(ebereich) 1 Wert(ebereich) 2 Wert(ebereich) n sonst Anweisungs- Anweisungs- Anweisungs- Alternativblock block 1 block 2 block n (optional) Besonders bei mehr als drei abzuprüfenden Bedingungen geeignet. Der Wert von "Variable" kann bedingt auf Gleichheit wie auch auf Bereiche (größer/kleiner bei Zahlen) geprüft werden und der entsprechend zutreffende "Fall" mit dem zugehörigen Anweisungsblock wird durchlaufen. 17.09.2013 Konzepte der Informatik Seite 6
Selection-Sort Idee: Zu Beginn liegt der Stapel unsortierter Zahlen verdeckt vor einem. Man durchsucht den Stapel nach der kleinsten Zahl und legt diese vor sich hin. Man sucht solange die kleinste Karte im Reststapel und legt sie rechts neben die schon aufgedeckten (und sortierten) Karten, bis der Stapel leer ist und somit alle Karten sortiert vor einem liegen. Umsetzung: Man nutzt den bereits vorhandenen Algorithmus zum Finden der kleinsten Zahl und passt ihn an, sodass nicht das Element selbst, sondern seine Position innerhalb der Liste zurückgegeben wird. 16.09.2013 Konzepte der Informatik Seite 7
Struktogramm für die Feststellung der kleinsten Zahl in einem Stapel Lege eine Leerkarte zum Merken der kleinsten bisher gefundenen Zahl (lokale Variable) Schreibe die Zahl auf der ersten Karte des Stapels auf die Leerkarte (Sie ist ja in jedem Fall erstmal die kleinste, da wir nur die eine Karte kennen) Solange der Stapel nicht leer ist Nehme die oberste Karte vom Stapel Ja Zahl der Karte < der bisher kleinsten Zahl? Nein Schreibe die Zahl als bisher kleinste gefundene Karte auf die Leerkarte Fahre fort 17.09.2013 Konzepte der Informatik Seite 8
Selection-Sort Oftmals arbeitet man bei Sortierverfahren mit Listen, daher werden wir die Idee auf eine Listenstruktur übertragen. Idee: Man benutzt eine Hilfsvariable, die die Position angibt, ab der die Liste bereits sortiert ist. Diese Position teilt die Liste in einen linken, sortierten Teil (Positionen kleiner der Hilfsvariable) und einen rechten, unsortierten Teil (Positionen größer gleich der Liste) Zu Beginn zeigt die Hilfsvariable auf das erste Element, die komplette Liste ist also unsortiert (Positionen größer gleich der Hilfsvariable). Solange der Zeiger nicht auf dem letzten Element steht, tue folgendes: Suche im unsortierten Teil des Feldes das kleinste Element Vertausche dieses Element mit dem Element dessen Position der Hilfsvariable entspricht Versetze die Hilfsvariable um eine Position nach rechts (erhöhe sie um eins) 16.09.2013 Konzepte der Informatik Seite 9
Selection-Sort Struktogramm Lege eine Leerkarte (1) zum Merken der Position ab der noch sortiert werden muss Schreibe die 0 auf Leerkarte (1) (das gesamte Feld ist unsortiert) Lege eine Leerkarte (2) als Zwischenspeicher für die Austauschoperation Lege eine Leerkarte (3) als Zwischenspeicher für die Position des kleinsten Elements Solange der Leerkarte (1) nicht der Position des letzten Elements der Liste entspricht Suche im unsortierten Teil des Feldes (rechts des Zeigers) das kleinste Element und speichere die Position auf Leerkarte (3) Sichere den Wert der ersten noch nicht sortierten Karte (Position auf Leerkarte (1)) im Zwischenspeicher für die Austauschoperation (Leerkarte 2) Überschreibe den Wert der ersten noch nicht sortierten Karte (Position auf Leerkarte (1)) mit dem gefundenen kleinsten Wert (Position auf Leerkarte (3)) Überschreibe die ursprüngliche Position des kleinsten Wertes (Position auf Leerkarte (3)) mit dem Wert im Zwischenspeicher für die Austauschoperation Erhöhe den Wert auf Leerkarte (1) um eins 17.09.2013 Konzepte der Informatik Seite 10
: Bubble Sort Idee: größere Luftblasen steigen an kleineren Luftblasen vorbei auf Irgendwann sind die Luftblasen von unten (klein) nach oben (groß) sortiert. photo by Jonas N on Flickr 17.09.2013 Konzepte der Informatik Seite 11
Bubble Sort 17.09.2013 Konzepte der Informatik Seite 12
Bubble Sort 17.09.2013 Konzepte der Informatik Seite 13
Bubble Sort 17.09.2013 Konzepte der Informatik Seite 14
Bubble Sort 17.09.2013 Konzepte der Informatik Seite 15
Bubble Sort 17.09.2013 Konzepte der Informatik Seite 16
Bubble Sort 1. Iteration 5 3 9 2 1 Die Liste wird von vorne beginnend durchlaufen und die ersten beiden Elemente werden miteinander verglichen. Ist das erste Element größer als das zweite Element, dann folgt ein Vertauschen, denn die größeren Luftblasen können an den kleineren vorbei. 17.09.2013 Konzepte der Informatik Seite 17
Bubble Sort 1. Iteration 3 5 9 2 1 Die kleineren Luftblasen stoßen die größeren Luftblasen an und stoppen selbst dabei. Es findet hier also kein Vertausch der Zahlen 5 und 9 statt. Nun wird die 9 weiter aufsteigen. 17.09.2013 Konzepte der Informatik Seite 18
Bubble Sort 1. Iteration 3 5 2 9 1 Der nächste Vergleich führt wieder zu einem Vertauschen, da die Luftblase mit der Größe 9 an der kleineren Luftblase mit der Größe 2 vorbeikommt und weiter aufsteigen kann. 17.09.2013 Konzepte der Informatik Seite 19
Bubble Sort 1. Iteration 3 5 2 1 9 Der letzte Vergleich führt wieder zu einem Vertauschen. Die Luftblase mit der Größe 9 ist als größte Luftblase an die Oberfläche der Wassersäule gestiegen. Wir fahren mit der nächsten Iteration fort. 17.09.2013 Konzepte der Informatik Seite 20
Bubble Sort 2. Iteration 3 5 2 1 9 Die Luftblase mit der Größe 3 stößt die größere Luftblase an und bleibt selbst dabei stehen. Die größere Luftblase steigt weiter auf, es findet kein Vertauschen statt. 17.09.2013 Konzepte der Informatik Seite 21
Bubble Sort 2. Iteration 3 2 1 5 9 Am Ende der zweiten Iteration bleibt die Luftblase der Größe 5 an der Luftblase mit der Größe 9 hängen. 17.09.2013 Konzepte der Informatik Seite 22
Bubble Sort 3. Iteration 2 1 3 5 9 Nach der dritten Iteration sind die größten drei Elemente aufsteigend sortiert. 17.09.2013 Konzepte der Informatik Seite 23
Bubble Sort 4. Iteration 1 2 3 5 9 Die vierte Iteration sortiert die letzten beiden Elemente. Danach ist die Liste aufsteigend sortiert. 17.09.2013 Konzepte der Informatik Seite 24
Bubble Sort Reserviere eine Hilfsvariable i für die äußere Schleife Setze i auf 1 Reserviere eine Hilfsvariable j für die innere Schleife Solange i <= a - 1 Setze j auf 1 Solange j <= a - 1 j-te Zahl > j+1te Zahl? Ja Nein Tausche Zahl j mit Zahl j+1 Fahre fort Erhöhe j um eins Erhöhe i um eins Hinweis: a sei die Anzahl der zu sortierenden Zahlen 17.09.2013 Konzepte der Informatik Seite 25
Bubble Sort Ist das beschriebene Verfahren ein Algorithmus? Das Verfahren ist in einem endlichen Text durch ein Struktogramm beschrieben. Die Objekte der Berechnung sind die Zahlen der Liste. Die Operationen sind das Vergleichen und Vertauschen zweier Zahlen. Diese sind mechanisch ausführbar. Die Reihenfolge der Operationen ist ebenfalls durch das Struktogramm festgelegt. Das Verfahren ist ein Algorithmus. 17.09.2013 Konzepte der Informatik Seite 26
Aufwandsabschätzung Um den zu leistenden Aufwand für die Durchführung eines Algorithmus' zu bestimmen, muss man sich zuerst die Problemgröße bewusst machen. Sie stellt ein Maß dar, wie schwierig bzw. umfangreich die Aufgabe bzw. das Problem ist. Üblicherweise wird die Problemgröße mit n benannt. Für Sortieralgorithmen ist die Problemgröße die Anzahl der zu sortierenden Elemente. 17.09.2013 Konzepte der Informatik Seite 27
Aufwandsabschätzung Für einfache Sortierverfahren ist der Aufwand meist quadratisch zur Problemgröße. Zu beachten ist hierbei, dass diese Abschätzung nicht allzu genau genommen werden darf, da konstante Faktoren nicht beachtet werden. Wenn wir also von quadratischem Aufwand sprechen, so kann es genauso gut 100*n² sein, als auch 0,5*n² oder auch (n - 1)². Es geht aber auch besser... 17.09.2013 Konzepte der Informatik Seite 28
Bubble Sort: Verbesserung Reserviere eine Hilfsvariable i für die äußere Schleife Setze i auf 1 Reserviere eine Hilfsvariable j für die innere Schleife Reserviere eine Hilfsvariable s für die innere Schleife Solange i <= a - 1 und s = 'nein' Setze j auf 1 Setze s auf 'ja' Solange j <= a - 1 j-te Zahl > j+1te Zahl? Ja Nein Tausche Zahl j mit Zahl j+1 Fahre fort Setze s auf 'nein' Erhöhe j um eins Erhöhe i um eins 17.09.2013 Konzepte der Informatik Seite 29
Zusammenfassung Selection Sort Bubble Sort Aufwandsabschätzung Einfache Algorithmen: quadratisch 15:30 16:45 A1: HS 65.4 B1: IZ 161 C1: IZ 160 A2: HS 65.4 B2: IZ 161 C2: IZ 160 A3: HS 65.2 B3: IZ 305 C3: IZ 160 17.09.2013 Konzepte der Informatik Seite 30
Vielen Dank für Ihre Aufmerksamkeit! 17.09.2013 Konzepte der Informatik Seite 31