Algorithmisches Probleml¶sen mit Kara Klaus Becker 2008

download Algorithmisches Probleml¶sen mit Kara Klaus Becker 2008

of 50

  • date post

    05-Apr-2015
  • Category

    Documents

  • view

    110
  • download

    1

Embed Size (px)

Transcript of Algorithmisches Probleml¶sen mit Kara Klaus Becker 2008

  • Folie 1
  • Algorithmisches Problemlsen mit Kara Klaus Becker 2008
  • Folie 2
  • 2 Kara
  • Folie 3
  • 3 Teil 1 Ausfhrsystem Kara
  • Folie 4
  • 4 Kara, ein steuerbarer Marienkfer Kara ist ein Marienkfer. Kara lebt in einer Welt mit unbewegliche Baumstmpfen, mit Pilzen (die Kara verschieben kann) und mit Kleeblttern, die Kara hinlegen und aufnehmen kann.
  • Folie 5
  • 5 Aufgabe Kara steht hier im Eingang seines Baus - das ist der Bereich, der von den Bumen begrenzt wird. Kara soll jetzt einmal um den Bau laufen und den Weg mit Kleeblttern auslegen. Benutzen Sie die Schaltflchen im Kara-Fenster, um diese Aufgabe zu erledigen. vorhernachher
  • Folie 6
  • 6 Aufgabe Kara steht hier im Eingang seines Baus - das ist der Bereich, der von den Bumen begrenzt wird. Kara soll jetzt einmal um den Bau laufen und den Weg mit Kleeblttern auslegen. Benutzen Sie die Kara-Operationen, um diese Aufgabe zu erledigen. KaraweltfensterProgrammfenster
  • Folie 7
  • 7 Elementare Anweisungen Operation Bedeutung move() einen Schritt weiter gehen turnLeft() sich um 90 nach links drehen turnRight() sich um 90 nach rechts drehen putLeaf() ein Kleeblatt auf das aktuelle Feld legen removeLeaf() das Kleeblatt vom aktuellen Feld entfernen Aufrufe von Operationen sind Beispiele fr Anweisungen. Es handelt sich - genauer gesagt - um die elementaren Anweisungen, die das Ausfhrsystem Kara zur Verfgung stellt. elementare Anweisung kara.move()
  • Folie 8
  • 8 bungen siehe www.inf-schule.de
  • Folie 9
  • 9 Teil 2 Algorithmisches Problemlsen
  • Folie 10
  • 10 Allgemeines Problem Problem: vom Eingang des Baus in die hintere linke Ecke laufen vorher groer Bau nachher vorher nachher kleiner Bau
  • Folie 11
  • 11 Lsung zum allgemeinen Problem Problem: vom Eingang des Baus in die hintere linke Ecke laufen vorher nachher vorher nachher SOLANGE nicht vor_baum: weiter_gehen links_drehen SOLANGE nicht vor_baum: weiter_gehen
  • Folie 12
  • 12 Problemspezifikation / Algorithmus Problem: vom Eingang des Baus in die hintere linke Ecke laufen Problemspezifikation Algorithmus SOLANGE nicht vor_baum: weiter_gehen links_drehen SOLANGE nicht vor_baum: weiter_gehen Eine Problemspezifikation ist eine mglichst przise Beschreibung eines Problems. Vorher: Kara steht im Eingang seines beliebig groen Baus und schaut in den Bau hinein. Nachher: Kara befindet sich in der linken hinteren Ecke des Baus (mit Blick gegen die Wand). Ein Algorithmus ist eine Verarbeitungsvorschrift, die so przise formuliert ist, dass sie (zumindest im Prinzip) auch von einer Maschine abgearbeitet werden kann. Problemspezifikation
  • Folie 13
  • 13 Algorithmus / Programm Problem: vom Eingang des Baus in die hintere linke Ecke laufen Programm SOLANGE nicht vor_baum: weiter_gehen links_drehen SOLANGE nicht vor_baum: weiter_gehen Ein Programm ist ein Algorithmus zur Lsung eines Problems, der in einer vorgegebenen formalen Sprache verfasst ist. Vorher: Kara steht im Eingang seines beliebig groen Baus und schaut in den Bau hinein. Nachher: Kara befindet sich in der linken hinteren Ecke des Baus (mit Blick gegen die Wand). Ein Algorithmus ist eine Verarbeitungsvorschrift, die so przise formuliert ist, dass sie (zumindest im Prinzip) auch von einer Maschine abgearbeitet werden kann. while not kara.treeFront(): kara.move() kara.turnLeft() while not kara.treeFront(): kara.move()
  • Folie 14
  • 14 Aufgaben Problem: Kara soll um den Bau laufen. Vorher: Kara steht im Eingang seines beliebig groen Baus und schaut aus dem Bau heraus. Nachher: Kara ist einmal um den Bau gelaufen und steht wieder im Eingang. Aufgabe: Entwickeln Sie einen Algorithmus zur Lsung des Problems.
  • Folie 15
  • 15 Teil 3 Bausteine von Algorithmen
  • Folie 16
  • 16 Aufgabe Was bewirken die Programme? Beschreiben Sie jeweils die Situation nach der Ausfhrung. vorher while not kara.treeFront(): kara.move() kara.turnLeft() while not kara.treeFront(): if kara.onLeaf(): kara.removeLeaf() kara.move() kara.turnLeft()
  • Folie 17
  • 17 Aufgabe ndern Sie das Programm jeweils so ab, dass die folgenden Endsituationen erreicht werden. vorher while not kara.treeFront(): kara.move() kara.turnLeft() * Kara soll im Eingang des Baus stehen bleiben. * Kara soll zustzlich den zurckgelegten Weg mit Kleeblttern auslegen. * Kara soll zur hinteren Wand des Baus und wieder zurck in den Eingang seines Baus laufen. * Kara soll zur hinteren Wand des Baus laufen und dabei nur den Weg bis zum Eingang seines Baus mit Kleeblttern auslegen. berprfen Sie auch, ob ihre entwickelten Programme das Gewnschte leisten.
  • Folie 18
  • 18 Aufgabe ndern Sie das Programm so ab, dass die folgende Endsituation erreicht werden. vorher * Kara soll zur hinteren Wand laufen und die Lcken zwischen den Kleeblttern mit weiteren Kleeblttern auffllen. while not kara.treeFront(): if kara.onLeaf(): kara.removeLeaf() kara.move() kara.turnLeft() berprfen Sie auch, ob ihre entwickelten Programme das Gewnschte leisten.
  • Folie 19
  • 19 Bedingungen Eine Bedingung wird mit Hilfe von elementaren Bedingungen und logischen Operatoren aufgebaut. elementare Bedingung kara.treeFront() True / False logischer Operator not kara.treeFront() Operation Bedeutung treeFront() Baum vorne? treeLeft() Baum links? treeRight() Baum rechts? onLeaf() auf einem Kleeblatt?
  • Folie 20
  • 20 Exkurs: logische Operatoren Eine Bedingung wird mit Hilfe von elementaren Bedingungen und logischen Operatoren aufgebaut. a b a and b False False False False True False True False False True True True konmplexe Bedingung SOLANGE nicht (Baum_links und Baum_rechts): weiter_gehen a b a or b False False False False True True True False True True True True a not a False True True False KonjunktionDisjunktionNegation undoder nicht
  • Folie 21
  • 21 Solange-Anweisung Eine Solange-Anweisung dient dazu, wiederholte Ablufe zu beschreiben. Sie ist aus einer Bedingung und einer (eventuell einelementigen) Anweisungssequenz aufgebaut. solange nicht vor_baum: kleeblatt_hinlegen schritt_weiter while [Bedingung]: [Anweisungssequenz] solange [Bedingung]: [Anweisungssequenz] Implementierung in PythonKara
  • Folie 22
  • 22 Solange-Anweisung Eine Solange-Anweisung dient dazu, wiederholte Ablufe zu beschreiben. Sie ist aus einer Bedingung und einer (eventuell einelementigen) Anweisungssequenz aufgebaut. solange nicht vor_baum: kleeblatt_hinlegen schritt_weiter kein Schleifendurchlauf Endlosschleife
  • Folie 23
  • 23 Wenn-Anweisung Eine Wenn-Anweisung dient dazu, alternative Ablufe bzw. Fallunterscheidungen zu beschreiben. zweiseitige Variante WENN [Bedingung]: [Anweisungssequenz] SONST: [Anweisungssequenz] if [Bedingung]: [Anweisungssequenz] else: [Anweisungssequenz] WENN auf_kleeblatt: kleeblatt_aufheben SONST: kleeblatt_hinlegen
  • Folie 24
  • 24 Wenn-Anweisung Eine Wenn-Anweisung dient dazu, alternative Ablufe bzw. Fallunterscheidungen zu beschreiben. WENN [Bedingung]: [Anweisungssequenz] if [Bedingung]: [Anweisungssequenz] einseitige Variante WENN auf_kleeblatt: kleeblatt_aufheben
  • Folie 25
  • 25 Kontrollstrukturen Kontrollstrukturen dienen dazu, den Ablauf der Ausfhrungsschritte festzulegen. Wesentliche Kontrollstrukturen sind die Sequenzbildung, die Fallunterscheidung und die Wiederholung. Flussdiagramme Programmablaufplne
  • Folie 26
  • 26 Kontrollstrukturen Kontrollstrukturen dienen dazu, den Ablauf der Ausfhrungsschritte festzulegen. Wesentliche Kontrollstrukturen sind die Sequenzbildung, die Fallunterscheidung und die Wiederholung. Struktogramme SequenzbildungFallunterscheidungWiederholung
  • Folie 27
  • 27 Aufgaben Problem: Kara soll Kleebltter um den Bau legen. Aufgabe: Ergnze das Struktogramm zu einem Algorithmus zur Lsung des Problems. Bedingungen: * nicht Baum_links * nicht Baum_rechts Elementare Anweisungen: * weiter_gehen * rechts_drehen * Kleeblatt_hinlegen
  • Folie 28
  • 28 Aufgaben siehe www.inf-schule.de
  • Folie 29
  • 29 Teil 4 Teilalgorithmen
  • Folie 30
  • 30 Problemzerlegung Problem: Kara soll mit den an der hinteren Wand abgelegten Blttern umziehen. Teilprobleme: in die rechte hintere Ecke laufen das nchste Kleeblatt suchen das gefundene Kleeblatt aufheben zum Ausgang des Baus laufen zum Eingang des anderen Baus laufen in die rechte hintere Ecke laufen die Stelle suchen, an der das Blatt abgelegt werden kann das transportierte Kleeblatt ablegen, falls nicht schon ein Kleeblatt hier liegt zum Ausgang des Baus laufen zum Eingang des anderen Baus laufen
  • Folie 31
  • 31 Teile und herrsche Problem: Kara soll mit den an der hinteren Wand abgelegten Blttern umziehen. laufe_in_die_rechte_hintere_Ecke SOLANGE auf_Kleeblatt: entferne_Kleeblatt laufe_zum_Ausgang laufe_zum_Eingang_des_anderen_Baus laufe_in_die_rechte_hintere_Ecke suche_einen_leeren_Platz WENN nicht auf_Kleeblatt: lege_Kleeblatt_ab laufe_zum_Ausgang laufe_zum_Eingang_des_anderen_Baus laufe_in_die_rechte_hintere_Ecke suche_ein_kleeblatt laufe_zum_Ausgang laufe_zum_Eingang_des_anderen_Baus Teile und herrsche ist eine Problemlsestrategie, bei der ein Problem immer weiter in Teilprobleme zerlegt wird, bis sich diese einfach lsen lassen. Aus den Lsungen der Teilprobleme wird dann die Lsung des Gesamtpro