Click here to load reader

Algorithmisches Problemlösen Klaus Becker 2005. 2 Algorithmisches Problemlösen

  • View
    115

  • Download
    4

Embed Size (px)

Text of Algorithmisches Problemlösen Klaus Becker 2005. 2 Algorithmisches Problemlösen

  • Folie 1
  • Algorithmisches Problemlsen Klaus Becker 2005
  • Folie 2
  • 2 Algorithmisches Problemlsen
  • Folie 3
  • 3 Teil 1 Programmgesteuerte Systeme
  • Folie 4
  • 4 Automatisierung Gelenkarmroboter mit Schweibrenner (Foto: H. Weihe, 2000, Lizenz: Public Domain) Mit Hilfe programmgesteuerter Systeme lassen sich Vorgnge automatisieren.
  • Folie 5
  • 5 Karol, der Roboter Als Beispiel eines sehr einfachen programmgesteuerten Systems betrachten wir einen Roboter (Karol oder Karel oder Karl), der seine Arbeit in einer rechteckigen Welt verrichtet. Die Welt, in der sich Karol bewegt, ist in Felder aufgeteilt ist. Auf diesen Feldern knnen Quader, Ziegel oder Markierungen liegen.
  • Folie 6
  • 6 Karol, der Roboter Mit Hilfe von Anweisungen lsst sich Karol steuern. Karol fhrt dann jeweils bestimmte Aktionen aus. Anweisung:Aktion: SchrittKarol bewegt sich ein Feld weiter (sofern dies mglich ist). LinksDrehenKarol dreht sich um 90 nach links. RechtsDrehenKarol dreht sich um 90 nach rechts. HinlegenKarol legt einen Ziegel vor sich ab. AufhebenKarol hebt einen vor ihm liegenden Ziegel auf. MarkeSetzenKarol markiert das Feld, auf dem er gerade steht. MarkeLschenKarol entfernt eine Markierung, auf der er gerade steht.
  • Folie 7
  • 7 Steuern Sie Karol zunchst im Direktmodus mit Hilfe der vorgesehenen Schaltflchen. Steuern Sie Karol anschlieend mit den entsprechenden Anweisungen. Diese werden in das dafr vorgesehene Fenster geschrieben. Nach einem Programmstart ( ) werden die Anweisungen von Karol automatisch ausgefhrt. Aufgabe Vorher: Karol steht in der Ausgangsposition. Nachher: Karol hat eine Treppe gebaut. LinksDrehen Schritt LinksDrehen...
  • Folie 8
  • 8 Aufgabe Vorher: Karol steht in der Ausgangsposition. Nachher: Karol hat eine Siegerpodest gebaut. Versuchen Sie, direkt ein korrektes Programm zu schreiben. Beachten Sie, dass Karol bei einem Schritt nach vorne maximal einen Ziegel hoch steigen kann.
  • Folie 9
  • 9 Karol als programmgesteuertes System LinksDrehen Schritt LinksDrehen LinksDrehen Hinlegen Hinlegen Hinlegen LinksDrehen LinksDrehen Schritt LinksDrehen LinksDrehen Hinlegen Hinlegen LinksDrehen LinksDrehen... Zustand vorher Zustand nachher Programm (Algorithmus) Roboter (Prozessor)
  • Folie 10
  • 10 Problemspezifikation Zustand vorher Zustand nachher Roboter (Prozessor) Eine Problemspezifikation ist eine vollstndige und eindeutige Beschreibung des Ausgangszustands (Zustand vorher) und Zielzustandes (Zustand nachher).
  • Folie 11
  • 11 LinksDrehen Schritt LinksDrehen LinksDrehen Hinlegen... Programm (Algorithmus) Roboter (Prozessor) Algorithmus Eine Algorithmus ist eine endliche Folge eindeutig ausfhrbarer Anweisungen zur Lsung eines Problems. Ziel ist es, einen komplizierten Ablauf / Vorgang so zu beschreiben, dass er von einem Prozessor (Mensch oder Maschine, der bzw. die fr die Ausfhrung zustndig ist) ausgefhrt werden wird.
  • Folie 12
  • 12 LinksDrehen Schritt LinksDrehen LinksDrehen Hinlegen... Programm (Algorithmus) Roboter (Prozessor) Algorithmus Anforderungen an Algorithmen: - Endlichkeit: Die Anweisungsfolge ist durch einen endlichen Text beschrieben. - Ausfhrbarkeit: Die Anweisungen sind fr den Prozessor (Mensch oder Maschine) verstndlich formuliert und ausfhrbar. - Eindeutigkeit: An jeder Stelle ist der Ablauf der Anweisungen eindeutig festgelegt. - Allgemeinheit: Die Anweisungen besitzen Gltigkeit fr die Lsung einer ganzen Problemklasse, nicht nur fr ein Einzelproblem. (s. Gasper, Lei, Spengler, Stimm: Technische und theoretische Informatik)
  • Folie 13
  • 13 Korrektheit Programm (Algorithmus) Roboter (Prozessor) LinksDrehen Schritt LinksDrehen LinksDrehen Hinlegen... Eine Algorithmus ist korrekt bzgl. einer Spezifikation, wenn er jeden mglichen Ausgangszustand tatschlich in den festgelegten Zielzustand berfhrt. Zustand vorher
  • Folie 14
  • 14 Aufgabe Linksdrehen Schritt LinksDrehen, LinksDrehen Hinlegen Ablegen Hin- legen... Roboter (Prozessor) Beim Schreiben eines Programms mssen bestimmte Regeln eingehalten werden. Prfen Sie, welche der folgenden Schreibweisen erlaubt bzw. nicht erlaubt sind: - Anweisungen hintereinander schreiben - Trennsymbole benutzen (z. B. ein Komma) - Gro- / Kleinschreibung nicht beachten - Anweisungsbezeichner ndern oder trennen -... Programm (Algorithmus)
  • Folie 15
  • 15 Syntaxfehler Linksdrehen Schritt LinksDrehen, Links Drehen Hinlegen Ablegen Hin- legen... Anweisungen (Programm) Roboter (Prozessor) Die Sprache, in der Algorithmen fr einen Prozessor formuliert werden, ist (normalerweise) genau festgelegt. Den Aufbau der in dieser Sprache korrekt formulierten Programme wird durch sog. Syntaxregeln beschrieben. Verstt man gegen eine dieser Syntaxregeln, so kommt es zu einem Syntaxfehler (Fehlermeldung z. B.: unbekannte Anweisung). Syntaxfehler
  • Folie 16
  • 16 Logische Fehler LinksDrehen Schritt LinksDrehen LinksDrehen Hinlegen Hinlegen Hinlegen LinksDrehen Schritt LinksDrehen LinksDrehen... Ausgangs- zustand Wenn das Programm nicht korrekt ist, dann liegt ein logischer Fehler vor. Beachte, dass man in der Regel in einem solchen Fall keine Fehlermeldung erhlt. Logische Fehler kann man durch Austesten des Programms feststellen. Beabsichtigter Zielzustand Tatschlicher Zielzustand
  • Folie 17
  • 17 Teil 2 Wiederholungen
  • Folie 18
  • 18 MarkeSetzen Schritt MarkeSetzen Schritt MarkeSetzen Schritt MarkeSetzen Schritt MarkeSetzen Schritt MarkeSetzen Schritt MarkeSetzen Schritt Viel (zu viel) Schreibarbeit! Vorher: Karol steht in der Ausgangsposition. Nachher: Karol hat den Weg zur Wand markiert. Sequenz: Folge von Anweisungen
  • Folie 19
  • 19 Wiederhole 7 mal MarkeSetzen Schritt *wiederhole Algorithmus mit Wiederholung Vorher: Karol steht in der Ausgangsposition. Nachher: Karol hat den Weg zur Wand markiert. Wiederholungs- anweisung
  • Folie 20
  • 20 Wiederholung mit fester Anzahl Wiederhole mal *wiederhole Wiederhole 7 mal Schritt MarkeSetzen *wiederhole Soll eine Sequenz (von Anweisungen) mehrfach ausgefhrt werden, wobei die Anzahl der Wiederholungen von Anfang an feststeht, so benutzt man zur Beschreibung eine Wiederholung mit fester Anzahl. Allgemeines Schema Beispiel Eine solche Wiederholung mit fester Anzahl kann als Einheit aufgefasst werden und bildet dann eine einzelne (strukturierte) Anweisung.
  • Folie 21
  • 21 Schachtelung von Wiederholungen Vorher: Karol steht in der Ausgangsposition. Nachher: Karol hat seine Welt umrundet und Markierungen hinterlegt. wiederhole 4 mal MarkeSetzen Schritt *wiederhole LinksDrehen wiederhole 4 mal MarkeSetzen Schritt *wiederhole... wiederhole 4 mal wiederhole 4 mal MarkeSetzen Schritt *wiederhole LinksDrehen *wiederhole
  • Folie 22
  • 22 Schachtelung von Wiederholungen wiederhole 4 mal MarkeSetzen Schritt *wiederhole LinksDrehen wiederhole 4 mal MarkeSetzen Schritt *wiederhole... wiederhole 4 mal wiederhole 4 mal MarkeSetzen Schritt *wiederhole LinksDrehen *wiederhole Wiederholungsanweisungen kann man auch ineinander schachteln. Um einen besseren berblick ber die zusammengehrenden Anweisungen zu erhalten, sollte man sie systematisch einrcken (am besten 2 Anschlge). Struktogramm Programm
  • Folie 23
  • 23 Aufgabe Vorher: Karol steht in der Ausgangsposition in einer 10x10-Zellen-Welt. Nachher: Karol hat eine 6 Ziegel hohe Mauer gebaut.
  • Folie 24
  • 24 Aufgabe Vorher: Karol steht in der Ausgangsposition in einer 10x10-Zellen-Welt. Nachher: Karol hat ein Schachbrettmuster gelegt. Zusatz: Etwas schwieriger ist das Problem, wenn der uere freie Rand nicht vorhanden ist.
  • Folie 25
  • 25 Teil 3 Fallunterscheidungen
  • Folie 26
  • 26 Situationsabhngiges Vorgehen Vorher: Karol steht vor einer Reihe mit Ziegeln. Nachher: Karol steht am Ende der Reihe, hat alle Ziegel aufgesammelt und ihre Positionen markiert. Schritt Aufheben Schritt MarkeSetzen Schritt Aufheben Schritt MarkeSetzen Schritt
  • Folie 27
  • 27 Fallunterscheidung falsch Aufheben Schritt MarkeSetzen IstZiegel? wahr Schritt wenn IstZiegel dann Aufheben Schritt MarkeSetzen sonst Schritt *wenn IstZiegel? (w) Aufheben Schritt MarkeSetzen IstZiegel? (f) Schritt
  • Folie 28
  • 28 Algorithmus mit Fallunterscheidung Vorher: Karol steht vor einer Reihe mit Ziegeln. Nachher: Karol steht am Ende der Reihe, hat alle Ziegel aufgesammelt und ihre Positionen markiert. Wiederhole 7 mal wenn IstZiegel dann Aufheben Schritt MarkeSetzen sonst Schritt *wenn *wiederhole
  • Folie 29
  • 29 Aufgabe Vorher: Karol steht vor eine Reihe von Ziegeln. Nachher: Karol hat die Lcken in der Ziegelreihe geschlossen.
  • Folie 30
  • 30 Aufgabe Vorher: Karol steht vor eine Reihe, in der sich genau drei Quader befinden. Es sollen dabei keine zwei Quader nebeneinander stehen. Nachher: Karol hat die Quader auf seinem Weg nach Sden umlaufen.
  • Folie 31
  • 31 Ein- / zweiseitige Fallunterscheidung... wiederhole 9 mal wenn NichtIstZiegel dann Hinlegen Schritt sonst Schritt *wenn *wiederhole...... wiederhole 9 mal wenn NichtIstZiegel dann Hinlegen *wenn Schritt *wiederhole... falsch Hinlegen Schritt NichtIstZiegel? wahr Schritt falsch Hinlegen NichtIstZiegel? wahr Schritt Zweiseitige Fallunter- scheidung Einseitige Fallunter- scheidung
  • Folie 32
  • 32 Darstellungen wenn NichtIstZiegel dann Hinlegen Schritt sonst Schritt *wenn falsch Hinlegen Schritt NichtIstZiegel? wahr Schritt wenn NichtIstZiegel dann Hinlegen *wenn Schritt falsch Hinlegen NichtIstZiegel? wahr Schritt Struktogramm Programm Flussdiagramm Programmablaufplan
  • Folie 33
  • 33 Teil 4 Wiederholungen mit Abbruchbedingungen
  • Folie 34
  • 34 Wiederholung mit fester Anzahl Vorher: Karol steht in der Ausgangsposition. Nachher: Karol hat den Weg zur Wand markiert. Wiederhole 7 mal MarkeSetzen Schritt *wiederhole Dieses Programm ist nur dann korrekt, wenn die Welt genau 8 Felder lang ist. Bei beliebig groen Welten bentigt man Wiederholungsanweisungen mit nicht vorher feststehender Anzahl.
  • Folie 35
  • 35 Bedingte Wiederholung Vorher: Karol steht in der Ausgangsposition. Nachher: Karol hat den Weg zur Wand markiert. Wiederhole 7 mal MarkeSetzen Schritt *wiederhole solange NichtIstWand tue MarkeSetzen Schritt *solange Steuerung mit einer Abbruchbedingung Steuerung mit einer Wiederholungsanzahl
  • Folie 36
  • 36 Bedingte Wiederholung solange NichtIstWand tue MarkeSetzen Schritt *solange falsch MarkeSetzen NichtIstWand? wahr Schritt NichtIstWand ? MarkeSetzen Schritt NichtIstWand ?...
  • Folie 37
  • 37 Aufgabe solange NichtIstWand tue MarkeSetzen Schritt *solange wiederhole MarkeSetzen Schritt *wiederhole bis IstWand wiederhole MarkeSetzen Schritt *wiederhole solange NichtIstWand Testen Sie die folgenden Varianten bedingter Wiederholungen (u. a. auch in einer 1x1-Felder-Welt). Welche Gemeinsamkeiten bzw. Unterschiede gibt es?
  • Folie 38
  • 38 Aufgabe Verdeutliche die Ausfhrung der Programme jeweils mit einen Programmablaufplan. wiederhole MarkeSetzen Schritt *wiederhole bis IstWand solange NichtIstWand tue MarkeSetzen Schritt *solange
  • Folie 39
  • 39 Aufgabe solange NichtIstMarke tue solange NichtIstWand tue Schritt *solange LinksDrehen LinksDrehen *solange Teste das folgende Programm. Erklre das Verhalten.
  • Folie 40
  • 40 Varianten von Abbruchbedingungen wiederhole MarkeSetzen Schritt *wiederhole bis IstWand falsch MarkeSetzen IstWand? wahr Schritt solange NichtIstWand tue MarkeSetzen Schritt *solange falsch MarkeSetzen NichtIstWand? wahr Schritt Eintrittsbedingung Austrittsbedingung
  • Folie 41
  • 41 Eintrittsbedingung / Austrittsbedingung Vorher: Karol steht in der Ausgangsposition. solange NichtIstWand tue MarkeSetzen Schritt *solange Nachher: Karol hat den Weg zur Wand markiert. Vorher: Karol steht in der Ausgangsposition. wiederhole MarkeSetzen Schritt *wiederhole bis IstWand Abbruch: Karol ist an die Wand gestoen. Bei einer Wiederholung mit Austrittsbedingung wird die Sequenz (von Anweisungen) mindestens einmal ausgefhrt, bei einer Wiederholung mit Eintrittsbedingung kann die Sequenz (von Anweisungen) auch berhaupt nicht ausgefhrt werden.
  • Folie 42
  • 42 Varianten von Austrittsbedingungen wiederhole MarkeSetzen Schritt *wiederhole bis IstWand wiederhole MarkeSetzen Schritt *wiederhole solange NichtIstWand falsch MarkeSetzen IstWand? wahr Schritt wahr MarkeSetzen NichtIstWand? falsch Schritt Bei einer Wiederholung mit Austrittsbedingung kann berprft werden, ob die Austrittsbedingung erfllt bzw. nicht erfllt ist.
  • Folie 43
  • 43 Endlosschleife Bei einer Wiederholung mit Abbruchbedingung kann es vorkommen, dass es zu keinem regulren Abbruch der Wiederholungen kommt. Karol gert dann in eine Endlosschleife. solange NichtIstMarke tue solange NichtIstWand tue Schritt *solange LinksDrehen LinksDrehen *solange wiederhole immer solange NichtIstWand tue Schritt *solange LinksDrehen LinksDrehen *wiederhole
  • Folie 44
  • 44 Aufgabe Vorher: Karol steht in der Ausgangsposition in einer beliebig groen Welt. Nachher: Karol hat eine 6 Ziegel hohe Mauer gebaut.
  • Folie 45
  • 45 Aufgabe Vorher: Karol steht in der Ausgangsposition in einer beliebig groen Welt. Nachher: Karol hat eine 1 Ziegel hohe Mauer zur Begrenzung der Welt gebaut.
  • Folie 46
  • 46 Aufgabe Entwickle ein passendes Programm mit Hilfe geeigneter Entscheidungs- und Wiederholungsanweisungen. Vorher: Karol steht in der Ausgangsposition. In der Welt ist eine geschlossene Bahn aus Ziegeln gelegt. Nachher: Karol hat die Ziegelbahn umrundet und Markierungen hinterlegt.
  • Folie 47
  • 47 Teil 5 Aufbau und Entwicklung von Algorithmen
  • Folie 48
  • 48 Ein Komplexer Algorithmus solange NichtIstMarke tue MarkeSetzen wenn IstZiegel dann Schritt sonst LinksDrehen wenn IstZiegel dann Schritt sonst RechtsDrehen RechtsDrehen Schritt *wenn *wenn *solange Vorher: Nachher:
  • Folie 49
  • 49 Strukturbetonte Darstellung solange NichtIstMarke tue MarkeSetzen wenn IstZiegel dann Schritt sonst LinksDrehen wenn IstZiegel dann Schritt sonst RechtsDrehen RechtsDrehen Schritt *wenn *wenn *solange Struktogramm Programm
  • Folie 50
  • 50 Kontrollstrukturen Sequenz Wiederholung Fallunterscheidung Kontrollstrukturen dienen dazu, den Ablauf der Verarbeitung festzulegen.
  • Folie 51
  • 51 Bausteine von Algorithmen S F W E E S F E E S E E E Ein Algorithmus ist aus - Elementaranweisungen (E) und den Kontrollstrukturen - Sequenzbildung (S), - Fallunterscheidung (F), - Wiederholung (W) aufgebaut.
  • Folie 52
  • 52 Entwicklung von Algorithmen Wie findet man einen Algorithmus / ein Programm zur Lsung eines Problems? solange NichtIstMarke tue MarkeSetzen wenn IstZiegel dann Schritt sonst LinksDrehen wenn IstZiegel dann Schritt sonst RechtsDrehen RechtsDrehen Schritt *wenn *wenn *solange ?
  • Folie 53
  • 53 Von Ablaufsituationen... Schritt 1: Ablaufsituationen klren und die Verarbeitung beschreiben Marke setzen Ziegel vorne? nein Schritt vorwrts Rechts drehen Rechts drehen Schritt vorwrts Schritt vorwrts Marke setzen Ziegel vorne? ja Marke setzen Ziegel vorne? nein Links drehen Ziegel vorne? nein Links drehen Ziegel vorne? ja
  • Folie 54
  • 54... ber einen Algorithmus... Schritt 2: Die Verarbeitungsablufe mit Hilfe von Kontrollstrukturen beschreiben (strukturbetonte, z. T. informelle Darstellung)
  • Folie 55
  • 55... zum Programm Schritt 3: Den Algorithmus in ein (syntaktisch korrektes) Programms bersetzen solange NichtIstMarke tue MarkeSetzen wenn IstZiegel dann Schritt sonst LinksDrehen wenn IstZiegel dann Schritt sonst RechtsDrehen RechtsDrehen Schritt *wenn *wenn *solange
  • Folie 56
  • 56 Aufgabe Fhren Sie die Schritte, die zum Algorithmus fhren, explizit aus: Schritt 1: Ablaufsituationen klren und die Verarbeitung beschreiben Schritt 2: Die Verarbeitungsablufe mit Hilfe von Kontrollstrukturen beschreiben
  • Folie 57
  • 57 Teil 6 Unterprogramme
  • Folie 58
  • 58 Ein komplexes Problem Vorher: Karol steht vor eine Reihe von Ziegeln. Nachher: Karol hat die Ziegel alle eingesammelt und in der Ecke aufgestapelt.
  • Folie 59
  • 59 Ablaufbeschreibung Ziegel aufheben Schritt vorwrts Marke setzen Umdrehen Bis zur Wand laufen Schritt zurck Ziegel hinlegen Umdrehen Bis zur Marke laufen Marke lschen Ziegel aufheben Schritt vorwrts Marke setzen Umdrehen Bis zum Ziegel laufen Schritt zurck Ziegel hinlegen u. s. w.
  • Folie 60
  • 60 Algorithmus Ziegel aufheben Schritt vorwrts Marke setzen Umdrehen Bis zur Wand laufen Schritt zurck Ziegel hinlegen Umdrehen Bis zur Marke laufen Marke lschen Ziegel aufheben Schritt vorwrts Marke setzen Umdrehen Bis zum Ziegel laufen Schritt zurck Ziegel hinlegen Im Algorithmus kommen Anweisungen vor, die Karol direkt ausfhren kann (z. B. Schritt), aber auch Anweisungen, die Karol noch nicht kennt (z. B. Umdrehen).
  • Folie 61
  • 61 Unterprogramme Programm Aufheben Schritt MarkeSetzen Umdrehen LaufeBisWand SchrittRueckwaerts Hinlegen Umdrehen LaufeBisMarke MarkeLschen solange IstZiegel tue Aufheben Schritt MarkeSetzen Umdrehen LaufeBisZiegel... *solange Umdrehen LaufeBisZiegel Umdrehen *Programm Anweisung Umdrehen RechtsDrehen RechtsDrehen *Anweisung Mit Hilfe eines Unter- programms kann man einen Teilalgorithmus zu einer neuen Einheit zusammenfassen. Der Name, mit dem das Unterprogramms bezeichnet wird, kann als neue Anweisung benutzt werden.
  • Folie 62
  • 62 Karol lernt neue Anweisungen Anweisung Umdrehen RechtsDrehen RechtsDrehen *Anweisung Anweisung SchrittRueckwaerts Umdrehen Schritt Umdrehen *Anweisung Anweisung LaufeBisWand solange NichtIstWand tue Schritt *solange *Anweisung Anweisung LaufeBisZiegel solange NichtIstZiegel tue Schritt *solange *Anweisung... Programm Aufheben Schritt MarkeSetzen Umdrehen LaufeBisWand SchrittRueckwaerts Hinlegen Umdrehen LaufeBisMarke MarkeLschen solange IstZiegel tue Aufheben Schritt... *solange Umdrehen LaufeBisZiegel Umdrehen *Programm Festlegung des Unterprogramms Aufruf des Unterprogramms
  • Folie 63
  • 63 Karol fhrt neue Anweisungen aus Programm Aufheben Schritt MarkeSetzen Umdrehen LaufeBisWand SchrittRueckwaerts Hinlegen Umdrehen LaufeBisMarke MarkeLschen solange IstZiegel tue Aufheben Schritt... *solange Umdrehen LaufeBisZiegel Umdrehen *Programm Anweisung Umdrehen RechtsDrehen RechtsDrehen *Anweisung Wird der Bezeichner eines Unterprogramms in einem Programm aufgerufen, so werden zunchst die Anweisungen des Unter- programms ausgefhrt, bevor die nchste Anweisung des Programms bearbeitet wird. Anweisung Umdrehen Schnell RechtsDrehen RechtsDrehen *Anweisung Das Unterprogramms wird so schnell wie eine Elementaranweisung durchgefhrt.
  • Folie 64
  • 64 Eine Bibliothek anlegen { Anweisung Umdrehen vorher: Karol steht auf einem beliebigen Feld und schaut in eine beliebige Richtung. nachher: Karol hat sich um 180 gedreht. } Anweisung Umdrehen Schnell RechtsDrehen RechtsDrehen *Anweisung... Die Festlegungen von Anweisungen, die in vielen Algorithmen wiederverwendet werden knnen, werden ausgelagert und in einer Bibliotheksdatei gesammelt. Damit der Programmierer sich schnell ber das Verhalten einer Anweisung informieren kann, wird das Verhalten in einem Kommentar zur Anweisung genau spezifiziert. Kommentar zur Spezifikation des Verhaltens des Unterprogramms
  • Folie 65
  • 65 Eine Bibliothek benutzen Einfgen Bibliothek1 *Einfgen Programm Aufheben Schritt MarkeSetzen Umdrehen LaufeBisWand... *Programm Damit die in der Bibliothek festgelegten neuen Anweisungen in einem Programm benutzt werden knnen, muss die Bibliothek in das aktuelle Programm eingefgt werden.
  • Folie 66
  • 66 Karol lernt neue Bedingungen Vorher:Nachher:
  • Folie 67
  • 67 Karol lernt neue Bedingungen Bedingung ZiegelVorne Schnell Falsch wenn IstZiegel dann Wahr *wenn *Bedingung Bedingung ZiegelLinks Schnell Falsch LinksDrehen wenn IstZiegel dann Wahr *wenn RechtsDrehen *Bedingung Programm solange NichtIstMarke tue MarkeSetzen wenn ZiegelVorne dann Schritt sonst wenn ZiegelLinks dann LinksDrehen Schritt sonst RechtsDrehen Schritt *wenn *wenn *solange *Programm
  • Folie 68
  • 68 Aufgabe Vorher: Karol befindet sich in einem zeilenorientierten Labyrinth und schaut nach rechts. Nachher: Karol hat den Ausgang des Labyrinths gefunden. Lse das Problem mit Hilfe geeigneter neuer Anweisungen und Bedingungen.
  • Folie 69
  • 69 Aufgabe Vorher: In der Welt von Karol liegen viele Ziegel herum. Nachher: Karol hat die Ziegel alle eingesammelt und in der jeweiligen Reihe aufgestapelt. Lse das Problem mit Hilfe geeigneter neuer Anweisungen und Bedingungen.
  • Folie 70
  • 70
  • Folie 71
  • 71 Teil 7 Top-Down-Methode
  • Folie 72
  • 72 Karol soll die Welt aufrumen Vorher: In der Welt von Karol liegen viele Ziegel herum. Nachher: Karol hat die Ziegel alle eingesammelt und in der jeweiligen Reihe aufgestapelt.
  • Folie 73
  • 73 Zerlegen... ZiegelSammeln ReiheSammeln InEckeRechtsVorne? NaechsteAusgangsposition Komplexe Probleme zerlegt man in Teilprobleme, die sich in der Regel leichter lsen lassen.
  • Folie 74
  • 74... und lsen ReiheSammeln InEcke? NaechsteAusgangsposition Mit Hilfe der Lsungen der Teilprobleme entwickelt man dann eine Lsung des Gesamtproblems. ZiegelSammeln ReiheSammeln InEckeRechtsVorne? NaechsteAusgangsposition
  • Folie 75
  • 75... top-down weiter... ReiheSammeln LaufeBisZiegelOderWand Umdrehen ZiegelAblegen...
  • Folie 76
  • 76... bis unten angekommen ReiheSammeln LaufeBisZiegelOderWand Umdrehen ZiegelAblegen // BibliothekErweitert Anweisung Umdrehen... Anweisung SchrittRueckwaerts... Bedingung NichtVorZiegelOderWand...
  • Folie 77
  • 77 Noch einmal: Zerlegen und lsen ZiegelSammeln NaechsteAusgangsposition LaufeBisWand Umdrehen // BibliothekErweitert Anweisung Umdrehen... Anweisung LaufeBisWand...
  • Folie 78
  • 78 Top-Down-Methode Die Top-Down-Methode ist eine Methode, die einem hilft, komplexere Problemstellungen zu lsen. Man verschafft sich zunchst einen berblick, welche Teilprobleme zu lsen sind. Entsprechend verfhrt man mit den Teilproblemen selbst. So wird durch schrittweises Verfeinern das Gesamtproblem top-down gelst. ZiegelSammeln ReiheSammeln LaufeBisZiegelOderWand Umdrehen ZiegelAblegen InEckeRechtsVorne? NaechsteAusgangsposition LaufeBisWand Umdrehen
  • Folie 79
  • 79 Teil 8 Der Problemlseprozess
  • Folie 80
  • 80 Beschreibung des Problems Vorher: In der Welt von Karol liegen viele Ziegel herum. Nachher: Karol hat die Ziegel alle eingesammelt und in der jeweiligen Reihe aufgestapelt. Schritt 1: Das Problem wird erfasst und mglichst genau beschrieben.
  • Folie 81
  • 81 Entwicklung von Algorithmen Schritt 2: Eine Lsung des Problems wird Schritt fr Schritt entwickelt. Es hilft dabei, genau zu planen und Problemlsetechniken zu benutzen. ZiegelSammeln ReiheSammeln InEckeRechtsVorne? NaechsteAusgangsposition
  • Folie 82
  • 82 bersetzung in Programme Schritt 3: Die entwickelten Algorithmen werden implementiert und getestet. Beim Testen werden auch extreme Flle durchgespielt. Programm wiederhole ReiheSammeln wenn Nicht InEckeRechtsVorne dann NaechsteAusgangsposition *wenn *wiederhole bis InEckeRechtsVorne *Programm
  • Folie 83
  • 83 Dokumentation Whrend des gesamten Problemlseprozesses werden die wichtigsten Ergebnisse festgehalten. Hierzu gehren: - eine genaue Problembeschreibung - die wichtigsten Algorithmen - kommentierte Programme - Testberichte
  • Folie 84
  • 84 Aufgabe Karol soll eine Treppe zwischen den vorgegebenen Marken bauen. Der gesamte Problemlseprozess soll mglichst gut strukturiert werden.
  • Folie 85
  • 85 Aufgabe Karol sollen Zahlen addieren. Der gesamte Problemlseprozess soll mglichst gut strukturiert werden. Vorher: Die beiden zu addierenden Zahlen sind mit Hilfe von Ziegelstapel dargestellt. Nachher: Karol hat die Stapelzahlen addiert. 2574 + 462 3036
  • Folie 86
  • 86
  • Folie 87
  • 87 Teil 9 Automatisierte Verarbeitung von Daten
  • Folie 88
  • 88 Karol soll Zahlen addieren Vorher: Die beiden zu addierenden Zahlen sind mit Hilfe von Ziegelstapel dargestellt. Nachher: Karol hat die Stapelzahlen addiert. 2574 + 462 3036
  • Folie 89
  • 89 Zahlen schriftlich addieren... Anweisung AddiereStelleMitUebertrag Schnell StapelEinsNachRechts Schritt StapelZweiNachRechts NchsteStelle *Anweisung Programm solange NochZiffernVorhanden tue AddiereStelleMitUebertrag *solange *Programm Solange noch Ziffern vorhanden sind, addiere die Zahlen der betreffenden Stelle unter Bercksichtigung des bertrags. Algorithmus schriftliches Addieren Karol- Programm 2574 + 462 3036
  • Folie 90
  • 90 Zahlen schriftlich addieren Solange noch Ziffern vorhanden sind, addiere die Zahlen der betreffenden Stelle unter Bercksichtigung des bertrags. Algorithmen werden nicht nur zur Steuerung von Computern benutzt, Algorithmen knnen auch Ttigkeiten steuern, die von Menschen ausgefhrt werden (z. B. schriftliches Rechnen). 2574 + 462 3036 Eine Algorithmus ist eine endliche Folge eindeutig ausfhrbarer Anweisungen zur Lsung eines Problems. Algorithmus schriftliches Addieren
  • Folie 91
  • 91 Algorithmus im Alltag ZUTATEN fr 5 Portionen: 650g Erdbeeren 150g Zucker 2 Pk Vanillezucker 5 EL Weinbrand 400 ml Sahne (gut gekhlt) ZUBEREITUNG Erdbeeren kalt abbrausen, abtropfen lassen und trockentupfen. Bltenansatz entfernen. 150 Gramm der Frchte zugedeckt beiseite stellen. Restliche Erdbeeren in Stcke schneiden. Zucker, Vanillezucker und Weinbrand darunterheben und alles 30 Minuten zugedeckt ziehen lassen. Dann mit dem Mixstab fein prieren. Die Hlfte der Sahne steif schlagen und unter das Pree ziehen. Die Creme im Gefrierfach oder in der Tiefkhltruhe gefrieren lassen. Restliche Sahne halbsteif schlagen. Mit einem Esslffel Nocken von der Mousse abstechen und auf Dessertteller verteilen. Die halbsteife Sahne angieen und das Dessert mit den ganzen Erdbeeren garnieren. Quelle: www.daskochrezept.de Rezept fr Erdbeermousse
  • Folie 92
  • 92 Algorithmus im Alltag Bedienungs- anleitung Aufgabe: Beurteilen Sie, welche der blicherweise geforderten Anforderungen an einen Algorithmus (Endlichkeit, Ausfhrbarkeit, Eindeutigkeit, Allgemeinheit) bei den gezeigten Alltagsalgorithmen erfllt sind.
  • Folie 93
  • 93 Al-Khwarizmi Problem des Abu Abd Allah Mohammed Ibn Musa al-Khwarizmi: Lsung im Lehrbuch Kitab al jabr walmuqabalah Algebra Algorithmus Wie ist das Vermgen eines wohlhabender Manns aufzuteilen, der bis zu 4 Frauen in unterschiedlichem Stand und eine Vielzahl von Kindern hat? Die Bezeichnung Algorithmus leitet sich aus dem Namen Al-Khwarizmi einem arabischen Mathematiker ab.
  • Folie 94
  • 94 Al-Khwarizmi Abu Abd Allah Mohammed Ibn Musa Al- Khwarizmi lebte etwa von 780 bis 850 n. Chr. Er stammte aus Choresm (arab. Khwarizmi), eine Gegend sdlich des Aralsees, die heute Teil von Usbekistan und Turkmenistan ist. Fr seinen Namen sind mehrere Schreibweisen gebruchlich, z.B. Alhwarizmi, Al-Hwarizmi, al-Khowarizmi oder auch Mohammed ben Musa. Al-Khwarizmi beschftigte sich u. a. mit Verfahren zur Lsung von Gleichungen. Er verfasste Bcher, die sich mit Algebra, Astronomie und Geographie beschftigten, sowie Werke ber indische Ziffern und den Jdischen Kalender.
  • Folie 95
  • 95 Literaturhinweise Frey, Hubwieser, Winhard: Informatik 1 Objekte, Strukturen, Algorithmen. Klett-Verlag 2004. Buttke, Engelmann, Formann: Informatische Grundbildung. Paetec-Verlag 2004.