Institut für Programmierung und Reaktive Systeme Vorkurs Informatik WiSe 16/17 Konzepte der Informatik Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe, 04.10.2016 Technische Universität Braunschweig, IPS Inhaltsverzeichnis Der Algorithmusbegriff Darstellung von Algorithmen Programmablaufplan DIN66001-1966 Struktogramme Vorschau: Sortieren 04.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 5 Vorkurs Informatik WiSe 16/17 Institut für Programmierung und Reaktive Systeme Studium Im ersten Semester Informatik wird Grundlegendes beleuchtet: Mathematik Programmierung Algorithmen und Datenstrukturen Vorlesungsbeginn: 17. Okt. 2016 Vorkurse sollen den Einsteig erleichtern, Vorkurse sind keine Pflichtvoraussetzung fürs Studium! 04.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 6 Vorkurs Informatik WiSe 16/17 Institut für Programmierung und Reaktive Systeme Vorkurs Ziel des Vorkurses Informatik – Algorithmen Grundlegende Einführung in algorithmisches Denken Was ist ein Algorithmus? Was sind Berechnungsschritte? In welcher Reihenfolge sollen sie ausgeführt werden? Eingaben, Ausgaben, Zwischenergebnisse. . . anhand von Beispielen: Sortierverfahren, Graphenalgorithmen Zielgruppe Studierende, die wenige Vorkenntnisse mit Informatik haben. Insbesondere, wenn Sie keinen Grund- oder Leistungskurs Informatik belegt haben, keine Programmiererfahrung haben. 04.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 7 Vorkurs Informatik WiSe 16/17 Institut für Programmierung und Reaktive Systeme Ablaufplan 04.10 Algorithmen und ihre Darstellung 04.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 8 Vorkurs Informatik WiSe 16/17 Institut für Programmierung und Reaktive Systeme Ablaufplan 04.10 Algorithmen und ihre Darstellung 05.10 Einfache Sortierverfahren 04.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 8 Vorkurs Informatik WiSe 16/17 Institut für Programmierung und Reaktive Systeme Ablaufplan 04.10 Algorithmen und ihre Darstellung 05.10 Einfache Sortierverfahren 06.10 Weitere Sortierverfahren und Rucksackprobleme 04.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 8 Vorkurs Informatik WiSe 16/17 Institut für Programmierung und Reaktive Systeme Ablaufplan 04.10 Algorithmen und ihre Darstellung 05.10 Einfache Sortierverfahren 06.10 Weitere Sortierverfahren und Rucksackprobleme 07.10 Rucksackproblem und dynamische Programmierung 04.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 8 Vorkurs Informatik WiSe 16/17 Institut für Programmierung und Reaktive Systeme Ablaufplan 04.10 Algorithmen und ihre Darstellung 05.10 Einfache Sortierverfahren 06.10 Weitere Sortierverfahren und Rucksackprobleme 07.10 Rucksackproblem und dynamische Programmierung 10.10 Suchverfahren und Bäume 04.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 8 Vorkurs Informatik WiSe 16/17 Institut für Programmierung und Reaktive Systeme Ablaufplan 04.10 Algorithmen und ihre Darstellung 05.10 Einfache Sortierverfahren 06.10 Weitere Sortierverfahren und Rucksackprobleme 07.10 Rucksackproblem und dynamische Programmierung 10.10 Suchverfahren und Bäume 11.10 Graphen und Wegfindung mit Dijkstra 04.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 8 Vorkurs Informatik WiSe 16/17 Institut für Programmierung und Reaktive Systeme Ablaufplan 04.10 Algorithmen und ihre Darstellung 05.10 Einfache Sortierverfahren 06.10 Weitere Sortierverfahren und Rucksackprobleme 07.10 Rucksackproblem und dynamische Programmierung 10.10 Suchverfahren und Bäume 11.10 Graphen und Wegfindung mit Dijkstra 12.10 Gerichtete Graphen und Darstellung 04.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 8 Vorkurs Informatik WiSe 16/17 Institut für Programmierung und Reaktive Systeme Ablaufplan 04.10 Algorithmen und ihre Darstellung 05.10 Einfache Sortierverfahren 06.10 Weitere Sortierverfahren und Rucksackprobleme 07.10 Rucksackproblem und dynamische Programmierung 10.10 Suchverfahren und Bäume 11.10 Graphen und Wegfindung mit Dijkstra 12.10 Gerichtete Graphen und Darstellung 13.10 Codierung von Zeichen 04.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 8 Vorkurs Informatik WiSe 16/17 Institut für Programmierung und Reaktive Systeme Ablaufplan 04.10 Algorithmen und ihre Darstellung 05.10 Einfache Sortierverfahren 06.10 Weitere Sortierverfahren und Rucksackprobleme 07.10 Rucksackproblem und dynamische Programmierung 10.10 Suchverfahren und Bäume 11.10 Graphen und Wegfindung mit Dijkstra 12.10 Gerichtete Graphen und Darstellung 13.10 Codierung von Zeichen 14.10 Codierung von Medien 04.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 8 Vorkurs Informatik WiSe 16/17 Institut für Programmierung und Reaktive Systeme Übungen Ab 14:00 bis 17:00 Theorie Werkzeuge (Unix) Programmieren (Java) Selbst aufteilen! Räume: IZ 161 Theorie IZ G40 Rechnerraum IZ 359 Rechnerraum IZ 443 Rechnerraum (nur Programmieren) IZ 251 Laptopgruppe IZ 305 Laptopgruppe 04.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 9 Vorkurs Informatik WiSe 16/17 Institut für Programmierung und Reaktive Systeme Einführung Informatik - was ist das? Informatik setzt sich aus den Worten Information und Mathematik oder Automatik zusammen. Informatik ist die Wissenschaft von der systematischen Verarbeitung von Informationen, insbesondere der automatischen Verarbeitung durch Rechenanlagen. Computer sind die Werkzeuge der Informatiker. E.W. Dijkstra: „In der Informatik geht es genauso wenig um Computer, wie in der Astronomie um Teleskope.“ 04.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 10 Vorkurs Informatik WiSe 16/17 Institut für Programmierung und Reaktive Systeme Einführung – Gliederung der Informatik Hauptgebiete: Interdisziplinäre Nebengebiete: 04.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 11 Vorkurs Informatik WiSe 16/17 Institut für Programmierung und Reaktive Systeme Überblick Der Algorithmusbegriff Darstellung von Algorithmen Programmablaufplan DIN66001-1966 Struktogramme Vorschau: Sortieren 04.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 12 Vorkurs Informatik WiSe 16/17 Institut für Programmierung und Reaktive Systeme Der Algorithmusbegriff – Handlungsvorschriften Viele Dinge im Leben werden nach einem festgelegtem Schema durchgeführt. Schemata regeln, welche Schritte mit welchen Objekten in welcher Reihenfolge gemacht werden. Beispiel: Wie heben Sie Geld am Geldautomaten ab? Von der Handlungsvorschrift zum Algorithmus. . . 04.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 13 Vorkurs Informatik WiSe 16/17 Institut für Programmierung und Reaktive Systeme Der Algorithmusbegriff – Rezept für Vanillekipferl 200g Mehl 250g Butter 180g Zucker 200g fein gemahlene Mandeln 1 Päckchen Vanillezucker Zubereitung: Aus den Zutaten einen Teig kneten. Eine etwa walnussgroße Menge Teig in der Hand rollen und ein Hörnchen formen. Diese nicht zu dicht auf ein mit Backpapier ausgelegtes Blech legen und im vorgeheizten Backofen bei schwacher Hitze (ca. 150 ◦ C) für ca. 10-15 Minuten goldbraun backen. Solange sie noch warm sind mit einem Gemisch aus 1 Tasse Puderzucker und 1 Päckchen Vanillezucker bestäuben. Abkühlen lassen und in einer gut verschließbaren Dose aufbewahren. Der Algorithmusbegriff – Handlungsvorschrift I Implizit können wir dem Rezept folgende Handlungsvorschrift entnehmen: Nimm eine Schüssel Fülle 200g Mehl hinein Fülle 250g Butter hinein Fülle 180g Zucker hinein Fülle 200g fein gemahlene Mandeln hinein Fülle 1 Päckchen Vanillezucker hinein Knete den Inhalt der Schüssel, bis ein glatter Teig entsteht Forme aus walnussgroßen Stückchen Teig kleine Hörnchen und lege sie auf ein mit Papier ausgelegtes Blech 04.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 15 Vorkurs Informatik WiSe 16/17 Institut für Programmierung und Reaktive Systeme Der Algorithmusbegriff – Handlungsvorschrift II Schalte den Backofen auf 150 ◦ C Warte 10 Minuten Schiebe Blech in den Backofen Stelle eine Mischung aus einer Tasse Puderzucker und einer Packung Vanillezucker her Warte 10-15 Minuten bis Vanillekipferl goldbraun Nimm Blech aus dem Backofen heraus Bestäube die warmen Kipferl mit Mischung aus Puder- und Vanillezucker 04.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 16 Vorkurs Informatik WiSe 16/17 Institut für Programmierung und Reaktive Systeme Der Algorithmusbegriff – Intuitives Verständnis Gegeben sei ein „Problem“ oder eine „Problemklasse“ Ein Algorithmus ist eine Handlungsvorschrift zum „Lösen“ des Problems, wobei die Handlungsvorschrift erkennbar einen Anfang und ein Ende1 hat, aus einzelnen Schritten besteht, für die jeweils klar ist, was mit welchen Dingen zu tun ist und die Reihenfolge der Schritte festlegt. Ein Problem, für dessen Lösung ein Algorithmus existiert, heißt berechenbar. 1 Die Beschreibung ist ein endlicher Text, die Ausführung der Handlungsvorschrift dagegen muss nicht enden. 04.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 17 Vorkurs Informatik WiSe 16/17 Institut für Programmierung und Reaktive Systeme Der Algorithmusbegriff – Als Algorithmus I Nimm eine Schüssel Fülle 200g Mehl hinein Fülle 250g Butter hinein Fülle 180g Zucker hinein Fülle 200g fein gemahlene Mandeln hinein Fülle 1 Päckchen Vanillezucker hinein Knete den Inhalt der Schüssel, bis ein glatter Teig entsteht Forme aus walnussgroßen Stückchen Teig kleine Hörnchen und lege sie auf ein mit Papier ausgelegtes Blech 04.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 18 Vorkurs Informatik WiSe 16/17 Institut für Programmierung und Reaktive Systeme Der Algorithmusbegriff – Als Algorithmus II Schalte den Backofen auf 150 ◦ C Warte 10 Minuten Schiebe Blech in den Backofen Stelle eine Mischung aus einer Tasse Puderzucker und einer Packung Vanillezucker her Warte 10-15 Minuten bis Vanillekipferl goldbraun Nimm Blech aus dem Backofen heraus Bestäube die warmen Kipferl mit Mischung aus Puder- und Vanillezucker 04.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 19 Vorkurs Informatik WiSe 16/17 Institut für Programmierung und Reaktive Systeme Der Algorithmusbegriff – Ein Algorithmus? The one with the power to vanquish the Dark Lord approaches... born to those who have thrice defied him, born as the seventh month dies... and the Dark Lord will mark him as his equal, but he will have power the Dark Lord knows not... and either must die at the hand of the other for neither can live while the other survives... the one with the power to vanquish the Dark Lord will be born as the seventh month dies . . . J.K. Rowling’s The Order of the Phoenix. 04.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 20 Vorkurs Informatik WiSe 16/17 Institut für Programmierung und Reaktive Systeme Der Algorithmusbegriff – Ein Algorithmus? Engagement, Teamgeist und das permanente Streben nach Perfektion sind wichtige Bausteine unseres Erfolgs. Und unserer Philosophie. Mit technologischer Kompetenz und Innovationskraft bringt XX bewegende Ideen auf die Straße. Der schnellste Sportwagen der Welt, das größte und stärkste Diesel-Aggregat, das je in einen PKW eingebaut wurde oder das sparsamste Automobil aller Zeiten sind nur einige Beispiele, wie XX mit technischen Revolutionen neue Maßstäbe setzt. 04.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 21 Vorkurs Informatik WiSe 16/17 Institut für Programmierung und Reaktive Systeme Der Algorithmusbegriff – Ein Algorithmus? Zum Brauen des Vielsaft-Trankes benötigt man folgende Zutaten: Florfliegen, Blutegel, Flussgras, Knöterich, gemahlenes Horn eines Zweihorns, kleingeschnittene Baumschlangenhaut und ein Stück der Person, in die man sich verwandeln möchte (z.B. Haare). Alle Zutaten sind in der vorgeschriebenen Menge und vorgegebener Reihenfolge und in bestimmten zeitlichen Abständen zu dem Gebräu zusammenzumischen. Die benötigte Baumschlangenhaut sowie das Zweihorn-Horn ist nicht im öffentlichen Handel erhältlich. Die Herstellung des Trankes dauert mehrere Wochen, wobei bestimmte Mondphasen zu beachten sind. Alle Details sind in Zaubertränke und Zauberbräue von Arsenius Bunsen nachzulesen. Der fertige Trank sieht aus wie dunkler, träge blubbernder Schleim. 04.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 22 Vorkurs Informatik WiSe 16/17 Institut für Programmierung und Reaktive Systeme Der Algorithmusbegriff – Beispiele Koch- und Backrezepte Bedienungsanleitungen (z.B. für Handys) Notenfolgen zum Musizieren Waschmaschinenprogramme Sortierverfahren Abfolge in Produktionsstraßen Berechnungsverfahren: ggT bestimmen Funktionen ableiten 04.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 23 Vorkurs Informatik WiSe 16/17 Institut für Programmierung und Reaktive Systeme Der Algorithmusbegriff – Präzisierung Ein Algorithmus ist eine wohldefinierte Rechenvorschrift, die eine (eventuell leere) Menge von Eingaben verwendet und eine Menge von Ausgaben erzeugt. Ein Algorithmus ist also eine Abfolge von Berechnungsschritten, die die Eingabe in die Ausgabe umwandelt. Der Algorithmus muss durch einen endlichen Text in einer wohldefinierten Sprache beschrieben sein. Die Objekte der Berechnung müssen klar sein. Die elementaren Operationen müssen mechanisch ausführbar sein. Die Reihenfolge der Operationen muss feststehen. 04.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 24 Vorkurs Informatik WiSe 16/17 Institut für Programmierung und Reaktive Systeme Überblick Der Algorithmusbegriff Darstellung von Algorithmen Programmablaufplan DIN66001-1966 Struktogramme Vorschau: Sortieren 04.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 25 Vorkurs Informatik WiSe 16/17 Institut für Programmierung und Reaktive Systeme Darstellung von Algorithmen Man kann einen Algorithmus beispielsweise als Text Pseudocode oder in einer Programmiersprache Als Flussdiagramm (Programmablaufplan) Struktogramm (Nassi-Shneiderman-Diagramm) ... darstellen. Wir verwenden Struktogramme nach DIN 66261 04.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 26 Vorkurs Informatik WiSe 16/17 Institut für Programmierung und Reaktive Systeme Überblick Der Algorithmusbegriff Darstellung von Algorithmen Programmablaufplan DIN66001-1966 Struktogramme Vorschau: Sortieren 04.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 27 Vorkurs Informatik WiSe 16/17 Institut für Programmierung und Reaktive Systeme Sinnbilder: Sinnbilder für Programmablaufplan nach DIN66001-1966 Sinnbilder: Bennenung und Bemerkung Sinnbild Sinnbilder: Programmablaufplan DIN66001-1966 –(process) Sinnbilder Bennenung und Bemerkung Sinnbild Operation, allgemein Sinnbilder: Bennenung und Bemerkung Sinnbild Operation, allgemein (process) Bennenung und Bemerkung Sinnbild Operation, allgemein (process) Sinnbild Benennung und Bemerkung Operation, allgemein (process) Verzweigung (decision) Operation, allgemein (process) Verzweigung (decision) Verzweigung (decision) Verzweigung (decision) Verzweigung (decision) Unterprogramm (prefdefined process) Unterprogramm (prefdefined process) Unterprogramm (prefdefined Unterprogramm (pre-defined process) process) Unterprogramm (prefdefined Einund Ausgabe (input/output) process) Ausgabe (input/output) Ein- Einund und Ausgabe (input/output) Ein- und Ausgabe (input/output) Ein- und Ausgabe (input/output) 02.04.2014 | Vorkurs Informatik – Algorithmen 1 | Seite 13 02.04.2014 | Vorkurs Informatik – Algorithmen 1 | Seite 13 02.04.2014 | Vorkurs Informatik – Algorithmen 1 | Seite 13 04.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 28 02.04.2014 | Vorkurs Informatik – Algorithmen 1 | Seite 13 Vorkurs Informatik WiSe 16/17 Institut für Programmierung und Reaktive Systeme Sinnbilder für Programmablaufplan nach DIN66001-1966 Sinnbilder: Sinnbilder: Sinnbilder: Programmablaufplan Sinnbild Sinnbild Sinnbilder: Sinnbild Sinnbild Sinnbild DIN66001-1966 – Sinnbilder Bennenung Bemerkung Bennenung undund Bemerkung Bennenung und Bemerkung Schleifenbegrenzung (loop limit) Schleifenbegrenzung (loop limit) Bennenung und Bemerkung Schleifenbegrenzung (loop limit) Anfang Benennung und Bemerkung Anfang Anfang Schleifenbegrenzung (loop limit) Schleifenbegrenzung (loop limit) Anfang Anfang Schleifenbegrenzung (loop limit) Schleifenbegrenzung (loop limit) Schleifenbegrenzung (loop limit) Ende Ende Schleifenbegrenzung (loop Ende Schleifenbegrenzung (looplimit) limit) Ende Ende Ablauflinie (flow line) Vorzugsrichtungen Ablauflinie (flow line) Ablauflinie (flow line) Ablauflinie (flow line) Vorzugsrichtungen (Pfeil optional): (Pfeil optional): Vorzugsrichtungen (Pfeil optional): Vorzugsrichtungen (Pfeil optional): a) von oben nach unten a) von oben nach unten a) von oben nach unten Ablauflinie (flow line) a) obenlinks nach unten b) von nach rechts b) von von nach rechts b) von linkslinks nach rechts Vorzugsrichtungen (Pfeil optional): b) von links nach rechts a) von oben nach unten Zusammenführen (junction) Zusammenführen (junction) Zusammenführen (junction) b) von links nach rechts Zusammenführen (junction) Ausgang sollte durch einen Pfeil Ausgang sollte durch einen Pfeil gekennzeichAusgang sollte durch einen Pfeil sollte durch einen Pfeil gekennzeichnet werden gekennzeichnet werden net Ausgang werden Zusammenführen (junction) gekennzeichnet werden Ausgang sollte durch einen Pfeil gekennzeichnet werden 02.04.2014 | Vorkurs Informatik – Algorithmen 1 | Seite 14 02.04.2014 | Vorkurs Informatik – Algorithmen 1 | Seite 14 02.04.2014 | Vorkurs Informatik – Algorithmen 1 | Seite 14 | Vorkurs Informatik – Algorithmen 1 | Garbe Seite 14Seite 29 04.10.2016 Dr. 02.04.2014 Werner Struckmann / Stephan Mielke, Jakob Vorkurs Informatik WiSe 16/17 Institut für Programmierung und Reaktive Systeme Programmablaufplan DIN66001-1966 – Beispiel Beispiel für Programmablaufplan nach DIN66001-1966 Beginn Dreckwäsche in die Waschmaschine Fertig? Waschmittel in die Waschmaschine Warten Waschmaschine anstellen ja Fertig? ja nein nein Wäsche in den Trockner Trockner anstellen Warten Wäsche zusammenlegen Wäsche in den Schrank räumen Ende 02.04.2014 | Vorkurs Informatik – Algorithmen 1 | Seite 15 04.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 30 Vorkurs Informatik WiSe 16/17 Institut für Programmierung und Reaktive Systeme Überblick Der Algorithmusbegriff Darstellung von Algorithmen Programmablaufplan DIN66001-1966 Struktogramme Vorschau: Sortieren 04.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 31 Vorkurs Informatik WiSe 16/17 Institut für Programmierung und Reaktive Systeme Struktogramme Linearer Ablauf (Sequenz): Anweisung 1 Anweisung 2 Anweisung 3 Anweisung 4 Anweisung 5 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. 04.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 32 Vorkurs Informatik WiSe 16/17 Institut für Programmierung und Reaktive Systeme Struktogramme – Vanillekipferl Nimm eine Schüssel Fülle 200g Mehl hinein Fülle 250g Butter hinein Fülle 180g Zucker hinein Fülle 200g fein gemahlene Mandeln hinein Fülle 1 Päckchen Vanillezucker hinein Knete den Inhalt der Schüssel, bis ein glatter Teig entsteht Forme aus walnussgroßen Stückchen Teig kleine Hörnchen und lege sie auf ein mit Papier ausgelegtes Backblech Schalte Backofen auf 150 ◦ C Warte 10 Minuten Schiebe Blech in den Backofen Warte 10-15 Minuten Stelle eine Mischung aus einer Tasse Puderzucker und einer Packung Vanillezucker her Nimm Blech aus Backofen heraus Bestäube die noch warmen Kipferl mit Mischung aus Puder- und Vanillezucker 04.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 33 Vorkurs Informatik WiSe 16/17 Institut für Programmierung und Reaktive Systeme Struktogramme – Alternative Auswahl Bedingung Wahr Anweisungsblock 1 Falsch Anweisungsblock 2 Anweisungsblock 1 wenn Bedingung wahr Sonst Block 2 Blöcke bestehen wieder aus weiteren Blöcken Am Ende wird die Auswahl verlassen 04.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 34 Vorkurs Informatik WiSe 16/17 Institut für Programmierung und Reaktive Systeme Struktogramme – Alternative Auswahl Anweisungen . . . Fülle ein Päckchen Vanillezucker hinzu Knete den Inhalt der Schüssel, bis ein glatter Teig entsteht Ist der Teig fest? Ja Fortfahren Nein Füge einen Esslöffel Mehl hinzu 04.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 35 Vorkurs Informatik WiSe 16/17 Institut für Programmierung und Reaktive Systeme Struktogramme – Verschachtelte Auswahl Anweisungen . . . Wird Mehl für das Rezept benötigt? Ja Ist Mehl vorrätig? Ja Nein Fortfahren Setze Mehl auf Einkaufsliste ∅ Anweisungen ... Nein Fortfahren 04.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 36 Vorkurs Informatik WiSe 16/17 ∅ Institut für Programmierung und Reaktive Systeme Struktogramme – Fallauswahl Variable Wert 1 Anweisungsblock 1 Wert 2 Anweisungsblock 2 Wert n Anweisungsblock n Sonst Alternativblock (optional) Prüft auf mehrere Bedingungen Reihenfolge wichtig Gleichheits- oder Bereichsprüfung möglich Besitzt Standardfall Sonst wie „Auswahl“ 04.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 37 Vorkurs Informatik WiSe 16/17 Institut für Programmierung und Reaktive Systeme Struktogramme – Abweisende Schleife Anweisungen . . . Bedingung Anweisungsblock Anweisungen . . . Wiederholungsstruktur mit vorausgehender Bedingungsprüfung: Zuerst Bedingung auswerten: Bei wahr: Schleifenkörper ausführen Sonst: Beende die Schleife ohne Ausführung des Körpers Nach jeder Ausführung des Körpers wird die Bedingung erneut geprüft Bedingungen sollten keine Konstanten sein ⇒ Endlosschleife Schleifen führen solange ihren Körper aus bis die Bedingung falsch ist. 04.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 38 Vorkurs Informatik WiSe 16/17 Institut für Programmierung und Reaktive Systeme Struktogramme – Abweisende Schleife – Beispiel Anweisungen . . . Schiebe das Blech in den Backofen Kipferl im Backofen noch nicht goldbraun warte eine Minute Nimm das Blech aus dem Ofen Anweisungen . . . 04.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 39 Vorkurs Informatik WiSe 16/17 Institut für Programmierung und Reaktive Systeme Struktogramme – Durchführung Probieren Sie diesen Algorithmus doch zu Hause einmal aus. Wir würden uns im Laufe des Vorkurses über einen Nachweis der erfolgreichen Durchführung freuen! 04.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 40 Vorkurs Informatik WiSe 16/17 Institut für Programmierung und Reaktive Systeme Überblick Der Algorithmusbegriff Darstellung von Algorithmen Programmablaufplan DIN66001-1966 Struktogramme Vorschau: Sortieren 04.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 41 Vorkurs Informatik WiSe 16/17 Institut für Programmierung und Reaktive Systeme Vorschau: Sortieren – Einführung Sortieren als eines der Standardprobleme der Informatik Verschiedenste Algorithmen – Unterschiedliche Laufzeiten – Schlecht im Extremfall, gut im Mittel Wichtige Unterschiede zum menschlichen Sortieren Um sich einen Überblick über mehrere Elemente zu verschaffen, müssen sie einzeln angesehen und Zwischenergebnisse gebildet werden. Jedes „sich Merken“ oder „Ablegen“ muss in eigens angelegten Speicherstellen stattfinden. Unterschiedliche Arten des Zugriffs auf das n-te Element. 04.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 42 Vorkurs Informatik WiSe 16/17 Institut für Programmierung und Reaktive Systeme Vorschau: Sortieren 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) Für jede weitere Karte aus dem Stapel Zahl der Karte < der bisher kleinsten Zahl? Ja Schreibe die Zahl als bisher kleinste gefundene Karte auf die Leerkarte Nein Fahre fort 04.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 43 Vorkurs Informatik WiSe 16/17 ∅ Institut für Programmierung und Reaktive Systeme Vorschau: Sortieren – Algorithmus? Ist das beschriebene Verfahren ein Algorithmus? Das Verfahren ist in einer endlichen Beschreibung durch ein Struktogramm beschrieben. Die Objekte der Berechnung sind die Zahlen des Stapels. Die elementaren Operationen sind das Vergleichen von zwei Zahlen und das Ablegen des Wertes in einer lokalen Variable. Die Reihenfolge der Operationen ist ebenfalls durch das Struktogramm festgelegt. 04.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 44 Vorkurs Informatik WiSe 16/17 Institut für Programmierung und Reaktive Systeme Vorschau: Sortieren – Algorithmus? Ist das beschriebene Verfahren ein Algorithmus? Das Verfahren ist in einer endlichen Beschreibung durch ein Struktogramm beschrieben. Die Objekte der Berechnung sind die Zahlen des Stapels. Die elementaren Operationen sind das Vergleichen von zwei Zahlen und das Ablegen des Wertes in einer lokalen Variable. Die Reihenfolge der Operationen ist ebenfalls durch das Struktogramm festgelegt. Das Verfahren ist ein Algorithmus. 04.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 44 Vorkurs Informatik WiSe 16/17 Institut für Programmierung und Reaktive Systeme Vorschau: Sortieren – Selection-Sort Idee: 1. Zu Beginn liegt der Stapel unsortierter Zahlen verdeckt vor einem. 2. Man sucht die kleinste Karte und legt sie vor sich. 3. Man wiederholt 2. so lange bis der Stapel leer ist Umsetzung: Benutzt den Algorithmus von gestern zum Finden der kleinen Zahl Anpassen des Algorithmus damit die Position der Karte im Stapel zurückgegeben wird. 04.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 45 Vorkurs Informatik WiSe 16/17 Institut für Programmierung und Reaktive Systeme Zusammenfassung Informatik Algorithmus Backen Sortieren Darstellung von Algorithmen Morgen: Sortieren Gleich: Programmieren Literatur: Abenteuer Informatik, 3. Auflage Jens Gallenbacher Springer Spektrum 04.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 46 Vorkurs Informatik WiSe 16/17 Institut für Programmierung und Reaktive Systeme Karte 04.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 47 Vorkurs Informatik WiSe 16/17 Institut für Programmierung und Reaktive Systeme Danke Vielen Dank für Ihre Aufmerksamkeit! 04.10.2016 Dr. Werner Struckmann / Stephan Mielke, Jakob Garbe Seite 48 Vorkurs Informatik WiSe 16/17 Institut für Programmierung und Reaktive Systeme