Download - Algorithmisches Problemlösen

Transcript
  • 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 den Weg zur Wand markiert.Wiederhole 7 mal MarkeSetzen Schritt *wiederholesolange NichtIstWand tue MarkeSetzen Schritt *solangeSteuerung mit einer AbbruchbedingungSteuerung mit einer Wiederholungsanzahl

  • *Bedingte Wiederholungsolange NichtIstWand tue MarkeSetzen Schritt *solangefalschMarkeSetzenNichtIstWand?wahrSchrittNichtIstWand ? MarkeSetzen SchrittNichtIstWand ?......

  • *Aufgabe 4solange NichtIstWand tue MarkeSetzen Schritt *solangewiederhole MarkeSetzen Schritt *wiederhole bis IstWandwiederhole MarkeSetzen Schritt *wiederhole solange NichtIstWandTeste die folgenden Varianten bedingter Wiederholungen (u. a. auch in einer 1x1-Felder-Welt). Welche Gemeinsamkeiten bzw. Unterschiede gibt es?

  • *Aufgabe 5Verdeutliche die Ausfhrung der Programme jeweils mit einen Programmablaufplan. wiederhole MarkeSetzen Schritt *wiederhole bis IstWandsolange NichtIstWand tue MarkeSetzen Schritt *solange

  • *Aufgabe 6solange NichtIstMarke tue solange NichtIstWand tue Schritt *solange LinksDrehen LinksDrehen *solangeTeste das folgende Programm. Erklre das Verhalten.

  • *Varianten von Abbruchbedingungenwiederhole MarkeSetzen Schritt *wiederhole bis IstWandfalschMarkeSetzenIstWand?wahrSchrittsolange NichtIstWand tue MarkeSetzen Schritt *solangefalschMarkeSetzenNichtIstWand?wahrSchrittEintrittsbedingungAustrittsbedingung

  • *Eintrittsbedingung / AustrittsbedingungVorher: Karol steht in der Ausgangsposition.solange NichtIstWand tue MarkeSetzen Schritt *solangeNachher: Karol hat den Weg zur Wand markiert.Vorher: Karol steht in der Ausgangsposition.wiederhole MarkeSetzen Schritt *wiederhole bis IstWandAbbruch: 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.

  • *Varianten von Austrittsbedingungenwiederhole MarkeSetzen Schritt *wiederhole bis IstWandwiederhole MarkeSetzen Schritt *wiederhole solange NichtIstWandfalschMarkeSetzenIstWand?wahrSchrittwahrMarkeSetzenNichtIstWand?falschSchrittBei einer Wiederholung mit Austrittsbedingung kann berprft werden, ob die Austrittsbedingung erfllt bzw. nicht erfllt ist.

  • *EndlosschleifeBei 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 *solangewiederhole immer solange NichtIstWand tue Schritt *solange LinksDrehen LinksDrehen *wiederhole

  • *Aufgabe 7Vorher: Karol steht in der Ausgangsposition in einer beliebig groen Welt.Nachher: Karol hat eine 6 Ziegel hohe Mauer gebaut.

  • *Aufgabe 8Vorher: Karol steht in der Ausgangsposition in einer beliebig groen Welt.Nachher: Karol hat eine 1 Ziegel hohe Mauer zur Begrenzung der Welt gebaut.

  • *Aufgabe 9Entwickle 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.

  • *Teil 5Aufbau und Entwicklung von Algorithmen

  • *Ein Komplexer Algorithmussolange NichtIstMarke tue MarkeSetzen wenn IstZiegel dann Schritt sonst LinksDrehen wenn IstZiegel dann Schritt sonst RechtsDrehen RechtsDrehen Schritt *wenn *wenn *solangeVorher: Nachher:

  • *Strukturbetonte Darstellungsolange NichtIstMarke tue MarkeSetzen wenn IstZiegel dann Schritt sonst LinksDrehen wenn IstZiegel dann Schritt sonst RechtsDrehen RechtsDrehen Schritt *wenn *wenn *solangeStruktogrammProgramm

  • *KontrollstrukturenSequenzWiederholungFallunterscheidungKontrollstrukturen dienen dazu, den Ablauf der Verarbeitung festzulegen.

  • *Bausteine von AlgorithmenSFWEESFEESEEEEin Algorithmus ist aus - Elementaranweisungen (E) und den Kontrollstrukturen - Sequenzbildung (S), - Fallunterscheidung (F), - Wiederholung (W) aufgebaut.

  • *Entwicklung von AlgorithmenWie 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?

  • *Von Ablaufsituationen ...Schritt 1: Ablaufsituationen klren und die Verarbeitung beschreibenMarke setzen Ziegel vorne? neinSchritt vorwrtsRechts drehen Rechts drehen Schritt vorwrtsSchritt vorwrtsMarke setzen Ziegel vorne? jaMarke setzen Ziegel vorne? neinLinks drehen Ziegel vorne? neinLinks drehen Ziegel vorne? ja

  • *... ber einen Algorithmus ...Schritt 2: Die Verarbeitungsablufe mit Hilfe von Kontrollstrukturen beschreiben (strukturbetonte, z. T. informelle Darstellung)

  • *... zum ProgrammSchritt 3: Den Algorithmus in ein (syntaktisch korrektes) Programms bersetzensolange NichtIstMarke tue MarkeSetzen wenn IstZiegel dann Schritt sonst LinksDrehen wenn IstZiegel dann Schritt sonst RechtsDrehen RechtsDrehen Schritt *wenn *wenn *solange

  • *Aufgabe 10Fhre 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

  • *Teil 6Unterprogramme

  • *Ein komplexes ProblemVorher: Karol steht vor eine Reihe von Ziegeln.Nachher: Karol hat die Ziegel alle eingesammelt und in der Ecke aufgestapelt.

  • *AblaufbeschreibungZiegel aufheben Schritt vorwrts Marke setzen Umdrehen Bis zur Wand laufen Schritt zurck Ziegel hinlegenUmdrehen Bis zur Marke laufen Marke lschenZiegel aufheben Schritt vorwrts Marke setzen Umdrehen Bis zum Ziegel laufen Schritt zurck Ziegel hinlegenu. s. w.

  • *AlgorithmusZiegel aufheben Schritt vorwrts Marke setzen Umdrehen Bis zur Wand laufen Schritt zurck Ziegel hinlegenUmdrehen Bis zur Marke laufen Marke lschenZiegel aufheben Schritt vorwrts Marke setzen Umdrehen Bis zum Ziegel laufen Schritt zurck Ziegel hinlegenIm Algorithmus kommen Anweisungen vor, die Karol direkt ausfhren kann (z. B. Schritt), aber auch Anweisungen, die Karol noch nicht kennt (z. B. Umdrehen).

  • *UnterprogrammeProgramm Aufheben Schritt MarkeSetzen Umdrehen LaufeBisWand SchrittRueckwaerts Hinlegen Umdrehen LaufeBisMarke MarkeLschen solange IstZiegel tue Aufheben Schritt MarkeSetzen Umdrehen LaufeBisZiegel ... *solange Umdrehen LaufeBisZiegel Umdrehen *ProgrammAnweisung Umdrehen RechtsDrehen RechtsDrehen *AnweisungMit 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.

  • *Karol lernt neue AnweisungenAnweisung Umdrehen RechtsDrehen RechtsDrehen *AnweisungAnweisung SchrittRueckwaerts Umdrehen Schritt Umdrehen *AnweisungAnweisung LaufeBisWand solange NichtIstWand tue Schritt *solange *AnweisungAnweisung 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 *ProgrammFestlegung des UnterprogrammsAufruf des Unterprogramms

  • *Karol fhrt neue Anweisungen ausProgramm Aufheben Schritt MarkeSetzen Umdrehen LaufeBisWand SchrittRueckwaerts Hinlegen Umdrehen LaufeBisMarke MarkeLschen solange IstZiegel tue Aufheben Schritt ... *solange Umdrehen LaufeBisZiegel Umdrehen *ProgrammAnweisung Umdrehen RechtsDrehen RechtsDrehen *AnweisungWird 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 *AnweisungDas Unterprogramms wird so schnell wie eine Elementaranweisung durchgefhrt.

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

  • *Eine Bibliothek benutzenEinfgen Bibliothek1 *EinfgenProgramm Aufheben Schritt MarkeSetzen Umdrehen LaufeBisWand ... *ProgrammDamit die in der Bibliothek festgelegten neuen Anweisungen in einem Programm benutzt werden knnen, muss die Bibliothek in das aktuelle Programm eingefgt werden.

  • *Karol lernt neue BedingungenVorher: Nachher:

  • *Karol lernt neue BedingungenBedingung ZiegelVorne Schnell Falsch wenn IstZiegel dann Wahr *wenn *BedingungBedingung ZiegelLinks Schnell Falsch LinksDrehen wenn IstZiegel dann Wahr *wenn RechtsDrehen *BedingungProgramm solange NichtIstMarke tue MarkeSetzen wenn ZiegelVorne dann Schritt sonst wenn ZiegelLinks dann LinksDrehen Schritt sonst RechtsDrehen Schritt *wenn *wenn *solange *Programm

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

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

  • *Teil 7Top-Down-Methode

  • *Karol soll die Welt aufrumenVorher: In der Welt von Karol liegen viele Ziegel herum.Nachher: Karol hat die Ziegel alle eingesammelt und in der jeweiligen Reihe aufgestapelt.

  • *Zerlegen ...ZiegelSammelnReiheSammelnInEckeRechtsVorne?NaechsteAusgangspositionKomplexe Probleme zerlegt man in Teilprobleme, die sich in der Regel leichter lsen lassen.

  • *... und lsen ReiheSammeln InEcke? NaechsteAusgangspositionMit Hilfe der Lsungen der Teilprobleme entwickelt man dann eine Lsung des Gesamtproblems.ZiegelSammelnReiheSammelnInEckeRechtsVorne?NaechsteAusgangsposition

  • * ... top-down weiter ...ReiheSammelnLaufeBisZiegelOderWandUmdrehenZiegelAblegen...

  • *... bis unten angekommenReiheSammelnLaufeBisZiegelOderWandUmdrehenZiegelAblegen// BibliothekErweitertAnweisung Umdrehen ...Anweisung SchrittRueckwaerts ...Bedingung NichtVorZiegelOderWand ...

  • *Noch einmal: Zerlegen und lsenZiegelSammelnNaechsteAusgangspositionLaufeBisWandUmdrehen// BibliothekErweitertAnweisung Umdrehen ...Anweisung LaufeBisWand ...

  • *Top-Down-MethodeDie 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. ZiegelSammelnReiheSammelnLaufeBisZiegelOderWandUmdrehenZiegelAblegenInEckeRechtsVorne?NaechsteAusgangspositionLaufeBisWandUmdrehen

  • *Teil 8Der Problemlseprozess

  • *Beschreibung des ProblemsVorher: 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.

  • *Entwicklung von AlgorithmenSchritt 2:Eine Lsung des Problems wird Schritt fr Schritt entwickelt. Es hilft dabei, genau zu planen und Problemlsetechniken zu benutzen.ZiegelSammelnReiheSammelnInEckeRechtsVorne?NaechsteAusgangsposition

  • *bersetzung in ProgrammeSchritt 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

  • *DokumentationWhrend des gesamten Problemlseprozesses werden die wichtigsten Ergebnisse festgehalten. Hierzu gehren:- eine genaue Problembeschreibung- die wichtigsten Algorithmen- kommentierte Programme- Testberichte

  • *Aufgabe 13Karol soll eine Treppe zwischen den vorgegebenen Marken bauen. Der gesamte Problemlseprozess soll mglichst gut strukturiert werden.

  • *Aufgabe 14Karol 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

  • *Teil 9Automatisierte Verarbeitung von Daten

  • *Karol soll Zahlen addierenVorher: Die beiden zu addierenden Zahlen sind mit Hilfe von Ziegelstapel dargestellt.Nachher: Karol hat die Stapelzahlen addiert. 2574 + 462 3036

  • *Zahlen schriftlich addieren...Anweisung AddiereStelleMitUebertrag Schnell StapelEinsNachRechts Schritt StapelZweiNachRechts NchsteStelle *AnweisungProgramm solange NochZiffernVorhanden tue AddiereStelleMitUebertrag *solange *ProgrammSolange noch Ziffern vorhanden sind,addiere die Zahlen der betreffenden Stelle unter Bercksichtigung des bertrags.Algorithmus schriftliches AddierenKarol- Programm 2574 + 462 3036

  • *Zahlen schriftlich addierenSolange 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 3036Eine Algorithmus ist eine endliche Folge eindeutig ausfhrbarer Anweisungen zur Lsung eines Problems.Algorithmus schriftliches Addieren

  • *Algorithmus im AlltagZUTATEN fr 5 Portionen:650g Erdbeeren 150g Zucker 2 Pk Vanillezucker 5 EL Weinbrand 400 ml Sahne (gut gekhlt)ZUBEREITUNGErdbeeren 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.deRezept fr Erdbeermousse

  • *Algorithmus im AlltagBedienungs-anleitungAufgabe: Beurteilen Sie, welche der blicherweise geforderten Anforderungen an einen Algorithmus (Endlichkeit, Ausfhrbarkeit, Eindeutigkeit, Allgemeinheit) bei den gezeigten Alltagsalgorithmen erfllt sind.

  • *Al-Khwarizmi Problem des Abu Abd Allah Mohammed Ibn Musa al-Khwarizmi: Lsung im Lehrbuch Kitab al jabr walmuqabalahAlgebraAlgorithmusWie 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.

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

  • Al-Khwarizmi*