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

download Algorithmisches Probleml¶sen Klaus Becker 2005. 2 Algorithmisches Probleml¶sen

of 95

  • date post

    06-Apr-2015
  • Category

    Documents

  • view

    112
  • download

    4

Embed Size (px)

Transcript 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- scheidu