Algorithmisches Problemlösen

  • View
    34

  • Download
    4

Embed Size (px)

DESCRIPTION

Algorithmisches Problemlösen. In den vergangenen Stunden haben wir uns mit Karol beschäftigt – mancher Schüler hat bereits ein lauffähiges Programm geschrieben ;-). Algorithmisches Problemlösen. Teil 1. Programmgesteuerte Systeme. Automatisierung. - PowerPoint PPT Presentation

Text of Algorithmisches Problemlösen

  • Algorithmisches ProblemlsenIn den vergangenen Stunden haben wir uns mit Karol beschftigt mancher Schler hat bereits ein lauffhiges Programm geschrieben ;-)

  • *Algorithmisches Problemlsen

  • *Teil 1Programmgesteuerte Systeme

  • *AutomatisierungMit Hilfe programmgesteuerter Systeme lassen sich Vorgnge automatisieren. Aibos beim Robocup 2005

  • *Karol, der RoboterAls Beispiel eines sehr einfachen programmgesteuerten Systems betrachten wir Roboter, der seine Arbeit in einer rechteckigen Welt verrichtet. Die Welt, in der sich Karol bewegt, ist in Felder aufgeteilt . Auf diesen Feldern knnen Quader, Ziegel oder Markierungen liegen.

  • *Karol, der RoboterMit Hilfe von Anweisungen lsst sich Karol steuern. Karol fhrt dann jeweils bestimmte Aktionen aus.Mit rechtem Mausklick kannst du die Befehle ins Script leicht einfgen.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.

  • *Steuere Karol zunchst im Direktmodus mit Hilfe der vorgesehenen Schaltflchen.

    Steuer 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 1Vorher: Karol steht in der Ausgangsposition.Nachher: Karol hat eine Treppe gebaut.LinksDrehen Schritt LinksDrehen ...

  • *Aufgabe 2Vorher: Karol steht in der Ausgangsposition.Nachher: Karol hat eine Siegerpodest gebaut.Versuche, direkt ein korrektes Programm zu schreiben. Beachte, dass Karol bei einem Schritt nach vorne maximal einen Ziegel hoch steigen kann.

  • *Karol als programmgesteuertes SystemLinksDrehen Schritt LinksDrehen LinksDrehen Hinlegen Hinlegen Hinlegen LinksDrehen LinksDrehen Schritt LinksDrehen LinksDrehen Hinlegen Hinlegen LinksDrehen LinksDrehen ...Zustand vorherZustand nachherProgramm (Algorithmus)Roboter (Prozessor)

  • *ProblemspezifikationZustand vorherZustand nachherRoboter (Prozessor)Eine Problemspezifikation ist eine vollstndige und eindeutige Beschreibung des Ausgangszustands (Zustand vorher) und Zielzustandes (Zustand nachher).

  • *LinksDrehen Schritt LinksDrehen LinksDrehen Hinlegen ...Programm (Algorithmus)Roboter (Prozessor)AlgorithmusEine 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.

  • *LinksDrehen Schritt LinksDrehen LinksDrehen Hinlegen ...Programm (Algorithmus)Roboter (Prozessor)AlgorithmusAnforderungen 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.

  • *KorrektheitProgramm (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 vorherZustand vorher

  • *AufgabeLinksdrehen Schritt LinksDrehen, LinksDrehen Hinlegen Ablegen Hin- legen ...Roboter (Prozessor)Beim Schreiben eines Programms mssen bestimmte Regeln eingehalten werden. Prfe, 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)

  • *SyntaxfehlerLinksdrehen 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

  • *Logische FehlerLinksDrehen Schritt LinksDrehen LinksDrehen Hinlegen Hinlegen Hinlegen LinksDrehen Schritt LinksDrehen LinksDrehen...Ausgangs-zustandWenn 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 ZielzustandTatschlicher Zielzustand

  • *Teil 2Wiederholungen

  • *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

  • *Wiederhole 7 mal MarkeSetzen Schritt *wiederholeAlgorithmus mit WiederholungVorher: Karol steht in der Ausgangsposition.Nachher: Karol hat den Weg zur Wand markiert.Wiederholungs-anweisung

  • *Wiederholung mit fester AnzahlWiederhole mal *wiederholeWiederhole 7 mal Schritt MarkeSetzen *wiederholeSoll 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 SchemaBeispielEine solche Wiederholung mit fester Anzahl kann als Einheit aufgefasst werden und bildet dann eine einzelne (strukturierte) Anweisung.

  • *Schachtelung von WiederholungenVorher: 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

  • *Schachtelung von Wiederholungenwiederhole 4 mal MarkeSetzen Schritt *wiederhole LinksDrehen wiederhole 4 mal MarkeSetzen Schritt *wiederhole ...wiederhole 4 mal wiederhole 4 mal MarkeSetzen Schritt *wiederhole LinksDrehen *wiederholeWiederholungsanweisungen kann man auch ineinander schachteln. Um einen besseren berblick ber die zusammengehrenden Anweisungen zu erhalten, sollte man sie systematisch einrcken (am besten 2 Anschlge). StruktogrammProgramm

  • *AufgabeVorher: Karol steht in der Ausgangsposition in einer 10x10-Zellen-Welt.Nachher: Karol hat eine 6 Ziegel hohe Mauer gebaut.

  • *AufgabeVorher: 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.

  • *Teil 3Fallunterscheidungen

  • *Situationsabhngiges VorgehenVorher: Karol steht vor einer Reihe mit Ziegeln.Nachher: Karol steht am Ende der Reihe, hat alle Ziegel aufgesammelt und ihre Positionen markiert.SchrittAufheben Schritt MarkeSetzenSchrittSchrittAufheben Schritt MarkeSetzenAufheben Schritt MarkeSetzenSchritt

  • *FallunterscheidungfalschAufheben Schritt MarkeSetzenIstZiegel?wahrSchrittwenn IstZiegel dann Aufheben Schritt MarkeSetzen sonst Schritt *wennIstZiegel? (w) Aufheben Schritt MarkeSetzenIstZiegel? (f) Schritt

  • *Algorithmus mit FallunterscheidungVorher: 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

  • *AufgabeVorher: Karol steht vor eine Reihe von Ziegeln.Nachher: Karol hat die Lcken in der Ziegelreihe geschlossen.

  • *Aufgabe 3Vorher: 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.

  • *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 ...falschHinlegen SchrittNichtIstZiegel?wahrSchrittfalschHinlegenNichtIstZiegel?wahrSchrittZweiseitige Fallunter- scheidungEinseitige Fallunter- scheidung

  • *Darstellungenwenn NichtIstZiegel dann Hinlegen Schritt sonst Schritt *wennfalschHinlegen SchrittNichtIstZiegel?wahrSchrittwenn NichtIstZiegel dann Hinlegen *wenn SchrittfalschHinlegenNichtIstZiegel?wahrSchrittStruktogrammProgrammFlussdiagramm Programmablaufplan

  • *Teil 4Wiederholungen mit Abbruchbedingungen

  • *Wiederholung mit fester AnzahlVorher: Karol steht in der Ausgangsposition.Nachher: Karol hat den Weg zur Wand markiert.Wiederhole 7 mal MarkeSetzen Schritt *wiederholeDieses 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.

  • *Bedingte WiederholungVorher: Karol steht in der Ausgangsposition.Nachher: Karol hat