Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Algorithmisches Problemlösen In den vergangenen Stunden haben wir uns mit Karol beschäftigt – mancher Schüler hat bereits ein lauffähiges Programm geschrieben.

Ähnliche Präsentationen


Präsentation zum Thema: "Algorithmisches Problemlösen In den vergangenen Stunden haben wir uns mit Karol beschäftigt – mancher Schüler hat bereits ein lauffähiges Programm geschrieben."—  Präsentation transkript:

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

2 2 Algorithmisches Problemlösen

3 3 Teil 1 Programmgesteuerte Systeme

4 4 Automatisierung Mit Hilfe programmgesteuerter Systeme lassen sich Vorgänge automatisieren. Aibos beim Robocup 2005

5 5 Karol, der Roboter Als 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 können Quader, Ziegel oder Markierungen liegen.

6 6 Karol, der Roboter Mit Hilfe von Anweisungen lässt sich Karol steuern. Karol führt dann jeweils bestimmte Aktionen aus. Mit rechtem Mausklick kannst du die Befehle ins Script leicht einfügen. Anweisung:Aktion: SchrittKarol bewegt sich ein Feld weiter (sofern dies möglich 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. MarkeLöschenKarol entfernt eine Markierung, auf der er gerade steht.

7 7 Steuere Karol zunächst im Direktmodus mit Hilfe der vorgesehenen Schaltflächen. Steuer Karol anschließend mit den entsprechenden Anweisungen. Diese werden in das dafür vorgesehene Fenster geschrieben. Nach einem Programmstart ( ) werden die Anweisungen von Karol automatisch ausgeführt. Aufgabe 1 Vorher: Karol steht in der Ausgangsposition. Nachher: Karol hat eine Treppe gebaut. LinksDrehen Schritt LinksDrehen...

8 8 Aufgabe 2 Vorher: 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.

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)

10 10 Problemspezifikation Zustand vorher Zustand nachher Roboter (Prozessor) Eine Problemspezifikation ist eine vollständige und eindeutige Beschreibung des Ausgangszustands (Zustand vorher) und Zielzustandes (Zustand nachher).

11 11 LinksDrehen Schritt LinksDrehen LinksDrehen Hinlegen... Programm (Algorithmus) Roboter (Prozessor) Algorithmus Eine Algorithmus ist eine endliche Folge eindeutig ausführbarer Anweisungen zur Lösung eines Problems. Ziel ist es, einen komplizierten Ablauf / Vorgang so zu beschreiben, dass er von einem Prozessor (Mensch oder Maschine, der bzw. die für die Ausführung zuständig ist) ausgeführt werden wird.

12 12 LinksDrehen Schritt LinksDrehen LinksDrehen Hinlegen... Programm (Algorithmus) Roboter (Prozessor) Algorithmus Anforderungen an Algorithmen: - Endlichkeit: Die Anweisungsfolge ist durch einen endlichen Text beschrieben. - Ausführbarkeit: Die Anweisungen sind für den Prozessor (Mensch oder Maschine) verständlich formuliert und ausführbar. - Eindeutigkeit: An jeder Stelle ist der Ablauf der Anweisungen eindeutig festgelegt. - Allgemeinheit: Die Anweisungen besitzen Gültigkeit für die Lösung einer ganzen Problemklasse, nicht nur für ein Einzelproblem.

13 13 Korrektheit Programm (Algorithmus) Roboter (Prozessor) LinksDrehen Schritt LinksDrehen LinksDrehen Hinlegen... Eine Algorithmus ist korrekt bzgl. einer Spezifikation, wenn er jeden möglichen Ausgangszustand tatsächlich in den festgelegten Zielzustand überführt. Zustand vorher

14 14 Aufgabe Linksdrehen Schritt LinksDrehen, LinksDrehen Hinlegen Ablegen Hin- legen... Roboter (Prozessor) Beim Schreiben eines Programms müssen bestimmte Regeln eingehalten werden. Prüfe, 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)

15 15 Syntaxfehler Linksdrehen Schritt LinksDrehen, Links Drehen Hinlegen Ablegen Hin- legen... Anweisungen (Programm) Roboter (Prozessor) Die Sprache, in der Algorithmen für einen Prozessor formuliert werden, ist (normalerweise) genau festgelegt. Den Aufbau der in dieser Sprache korrekt formulierten Programme wird durch sog. Syntaxregeln beschrieben. Verstößt man gegen eine dieser Syntaxregeln, so kommt es zu einem Syntaxfehler (Fehlermeldung z. B.: unbekannte Anweisung). Syntaxfehler

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 erhält. Logische Fehler kann man durch Austesten des Programms feststellen. Beabsichtigter Zielzustand Tatsächlicher Zielzustand

17 17 Teil 2 Wiederholungen

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

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

20 20 Wiederholung mit fester Anzahl Wiederhole mal *wiederhole Wiederhole 7 mal Schritt MarkeSetzen *wiederhole Soll eine Sequenz (von Anweisungen) mehrfach ausgeführt 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.

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

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 zusammengehörenden Anweisungen zu erhalten, sollte man sie systematisch einrücken (am besten 2 Anschläge). Struktogramm Programm

23 23 Aufgabe Vorher: Karol steht in der Ausgangsposition in einer 10x10-Zellen-Welt. Nachher: Karol hat eine 6 Ziegel hohe Mauer gebaut.

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 äußere freie Rand nicht vorhanden ist.

25 25 Teil 3 Fallunterscheidungen

26 26 Situationsabhängiges 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

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

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

29 29 Aufgabe Vorher: Karol steht vor eine Reihe von Ziegeln. Nachher: Karol hat die Lücken in der Ziegelreihe geschlossen.

30 30 Aufgabe 3 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 Süden umlaufen.

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

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

33 33 Teil 4 Wiederholungen mit Abbruchbedingungen

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 großen Welten benötigt man Wiederholungsanweisungen mit nicht vorher feststehender Anzahl.

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

36 36 Bedingte Wiederholung solange NichtIstWand tue MarkeSetzen Schritt *solange falsch MarkeSetzen NichtIstWand? wahr Schritt NichtIstWand ? MarkeSetzen Schritt NichtIstWand ?...

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

38 38 Aufgabe 5 Verdeutliche die Ausführung der Programme jeweils mit einen Programmablaufplan. wiederhole MarkeSetzen Schritt *wiederhole bis IstWand solange NichtIstWand tue MarkeSetzen Schritt *solange

39 39 Aufgabe 6 solange NichtIstMarke tue solange NichtIstWand tue Schritt *solange LinksDrehen LinksDrehen *solange Teste das folgende Programm. Erkläre das Verhalten.

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

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 gestoßen. Bei einer Wiederholung mit Austrittsbedingung wird die Sequenz (von Anweisungen) mindestens einmal ausgeführt, bei einer Wiederholung mit Eintrittsbedingung kann die Sequenz (von Anweisungen) auch überhaupt nicht ausgeführt werden.

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 überprüft werden, ob die Austrittsbedingung erfüllt bzw. nicht erfüllt ist.

43 43 Endlosschleife Bei einer Wiederholung mit Abbruchbedingung kann es vorkommen, dass es zu keinem regulären Abbruch der Wiederholungen kommt. Karol gerät 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

44 44 Aufgabe 7 Vorher: Karol steht in der Ausgangsposition in einer beliebig großen Welt. Nachher: Karol hat eine 6 Ziegel hohe Mauer gebaut.

45 45 Aufgabe 8 Vorher: Karol steht in der Ausgangsposition in einer beliebig großen Welt. Nachher: Karol hat eine 1 Ziegel hohe Mauer zur Begrenzung der Welt gebaut.

46 46 Aufgabe 9 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.

47 47 Teil 5 Aufbau und Entwicklung von Algorithmen

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:

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

50 50 Kontrollstrukturen Sequenz Wiederholung Fallunterscheidung Kontrollstrukturen dienen dazu, den Ablauf der Verarbeitung festzulegen.

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.

52 52 Entwicklung von Algorithmen Wie findet man einen Algorithmus / ein Programm zur Lösung eines Problems? solange NichtIstMarke tue MarkeSetzen wenn IstZiegel dann Schritt sonst LinksDrehen wenn IstZiegel dann Schritt sonst RechtsDrehen RechtsDrehen Schritt *wenn *wenn *solange ?

53 53 Von Ablaufsituationen... Schritt 1: Ablaufsituationen klären und die Verarbeitung beschreiben Marke setzen Ziegel vorne? nein Schritt vorwärts Rechts drehen Rechts drehen Schritt vorwärts Schritt vorwärts Marke setzen Ziegel vorne? ja Marke setzen Ziegel vorne? nein Links drehen Ziegel vorne? nein Links drehen Ziegel vorne? ja

54 54... über einen Algorithmus... Schritt 2: Die Verarbeitungsabläufe mit Hilfe von Kontrollstrukturen beschreiben (strukturbetonte, z. T. informelle Darstellung)

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

56 56 Aufgabe 10 Führe die Schritte, die zum Algorithmus führen, explizit aus: Schritt 1: Ablaufsituationen klären und die Verarbeitung beschreiben Schritt 2: Die Verarbeitungsabläufe mit Hilfe von Kontrollstrukturen beschreiben

57 57 Teil 6 Unterprogramme

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.

59 59 Ablaufbeschreibung Ziegel aufheben Schritt vorwärts Marke setzen Umdrehen Bis zur Wand laufen Schritt zurück Ziegel hinlegen Umdrehen Bis zur Marke laufen Marke löschen Ziegel aufheben Schritt vorwärts Marke setzen Umdrehen Bis zum Ziegel laufen Schritt zurück Ziegel hinlegen u. s. w.

60 60 Algorithmus Ziegel aufheben Schritt vorwärts Marke setzen Umdrehen Bis zur Wand laufen Schritt zurück Ziegel hinlegen Umdrehen Bis zur Marke laufen Marke löschen Ziegel aufheben Schritt vorwärts Marke setzen Umdrehen Bis zum Ziegel laufen Schritt zurück Ziegel hinlegen Im Algorithmus kommen Anweisungen vor, die Karol direkt ausführen kann (z. B. Schritt), aber auch Anweisungen, die Karol noch nicht kennt (z. B. Umdrehen).

61 61 Unterprogramme Programm Aufheben Schritt MarkeSetzen Umdrehen LaufeBisWand SchrittRueckwaerts Hinlegen Umdrehen LaufeBisMarke MarkeLöschen 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.

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 MarkeLöschen solange IstZiegel tue Aufheben Schritt... *solange Umdrehen LaufeBisZiegel Umdrehen *Programm Festlegung des Unterprogramms Aufruf des Unterprogramms

63 63 Karol führt neue Anweisungen aus Programm Aufheben Schritt MarkeSetzen Umdrehen LaufeBisWand SchrittRueckwaerts Hinlegen Umdrehen LaufeBisMarke MarkeLöschen 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 zunächst die Anweisungen des Unter- programms ausgeführt, bevor die nächste Anweisung des Programms bearbeitet wird. Anweisung Umdrehen Schnell RechtsDrehen RechtsDrehen *Anweisung Das Unterprogramms wird so schnell wie eine Elementaranweisung durchgeführt.

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 können, 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

65 65 Eine Bibliothek benutzen Einfügen Bibliothek1 *Einfügen Programm Aufheben Schritt MarkeSetzen Umdrehen LaufeBisWand... *Programm Damit die in der Bibliothek festgelegten neuen Anweisungen in einem Programm benutzt werden können, muss die Bibliothek in das aktuelle Programm eingefügt werden.

66 66 Karol lernt neue Bedingungen Vorher:Nachher:

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

68 68 Aufgabe 11 Vorher: Karol befindet sich in einem zeilenorientierten Labyrinth und schaut nach rechts. Nachher: Karol hat den Ausgang des Labyrinths gefunden. Löse das Problem mit Hilfe geeigneter neuer Anweisungen und Bedingungen.

69 69 Aufgabe 12 Vorher: In der Welt von Karol liegen viele Ziegel herum. Nachher: Karol hat die Ziegel alle eingesammelt und in der jeweiligen Reihe aufgestapelt. Löse das Problem mit Hilfe geeigneter neuer Anweisungen und Bedingungen.

70 70 Teil 7 Top-Down-Methode

71 71 Karol soll die Welt aufräumen Vorher: In der Welt von Karol liegen viele Ziegel herum. Nachher: Karol hat die Ziegel alle eingesammelt und in der jeweiligen Reihe aufgestapelt.

72 72 Zerlegen... ZiegelSammeln ReiheSammeln InEckeRechtsVorne? NaechsteAusgangsposition Komplexe Probleme zerlegt man in Teilprobleme, die sich in der Regel leichter lösen lassen.

73 73... und lösen ReiheSammeln InEcke? NaechsteAusgangsposition Mit Hilfe der Lösungen der Teilprobleme entwickelt man dann eine Lösung des Gesamtproblems. ZiegelSammeln ReiheSammeln InEckeRechtsVorne? NaechsteAusgangsposition

74 74... top-down weiter... ReiheSammeln LaufeBisZiegelOderWand Umdrehen ZiegelAblegen...

75 75... bis unten angekommen ReiheSammeln LaufeBisZiegelOderWand Umdrehen ZiegelAblegen // BibliothekErweitert Anweisung Umdrehen... Anweisung SchrittRueckwaerts... Bedingung NichtVorZiegelOderWand...

76 76 Noch einmal: Zerlegen und lösen ZiegelSammeln NaechsteAusgangsposition LaufeBisWand Umdrehen // BibliothekErweitert Anweisung Umdrehen... Anweisung LaufeBisWand...

77 77 Top-Down-Methode Die Top-Down-Methode ist eine Methode, die einem hilft, komplexere Problemstellungen zu lösen. Man verschafft sich zunächst einen Überblick, welche Teilprobleme zu lösen sind. Entsprechend verfährt man mit den Teilproblemen selbst. So wird durch schrittweises Verfeinern das Gesamtproblem top-down gelöst. ZiegelSammeln ReiheSammeln LaufeBisZiegelOderWand Umdrehen ZiegelAblegen InEckeRechtsVorne? NaechsteAusgangsposition LaufeBisWand Umdrehen

78 78 Teil 8 Der Problemlöseprozess

79 79 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 möglichst genau beschrieben.

80 80 Entwicklung von Algorithmen Schritt 2: Eine Lösung des Problems wird Schritt für Schritt entwickelt. Es hilft dabei, genau zu planen und Problemlösetechniken zu benutzen. ZiegelSammeln ReiheSammeln InEckeRechtsVorne? NaechsteAusgangsposition

81 81 Übersetzung in Programme Schritt 3: Die entwickelten Algorithmen werden implementiert und getestet. Beim Testen werden auch extreme Fälle durchgespielt. Programm wiederhole ReiheSammeln wenn Nicht InEckeRechtsVorne dann NaechsteAusgangsposition *wenn *wiederhole bis InEckeRechtsVorne *Programm

82 82 Dokumentation Während des gesamten Problemlöseprozesses werden die wichtigsten Ergebnisse festgehalten. Hierzu gehören: - eine genaue Problembeschreibung - die wichtigsten Algorithmen - kommentierte Programme - Testberichte

83 83 Aufgabe 13 Karol soll eine Treppe zwischen den vorgegebenen Marken bauen. Der gesamte Problemlöseprozess soll möglichst gut strukturiert werden.

84 84 Aufgabe 14 Karol sollen Zahlen addieren. Der gesamte Problemlöseprozess soll möglichst gut strukturiert werden. Vorher: Die beiden zu addierenden Zahlen sind mit Hilfe von Ziegelstapel dargestellt. Nachher: Karol hat die Stapelzahlen addiert

85 85 Teil 9 Automatisierte Verarbeitung von Daten

86 86 Karol soll Zahlen addieren Vorher: Die beiden zu addierenden Zahlen sind mit Hilfe von Ziegelstapel dargestellt. Nachher: Karol hat die Stapelzahlen addiert

87 87 Zahlen schriftlich addieren... Anweisung AddiereStelleMitUebertrag Schnell StapelEinsNachRechts Schritt StapelZweiNachRechts NächsteStelle *Anweisung Programm solange NochZiffernVorhanden tue AddiereStelleMitUebertrag *solange *Programm Solange noch Ziffern vorhanden sind, addiere die Zahlen der betreffenden Stelle unter Berücksichtigung des Übertrags. Algorithmus schriftliches Addieren Karol- Programm

88 88 Zahlen schriftlich addieren Solange noch Ziffern vorhanden sind, addiere die Zahlen der betreffenden Stelle unter Berücksichtigung des Übertrags. Algorithmen werden nicht nur zur Steuerung von Computern benutzt, Algorithmen können auch Tätigkeiten steuern, die von Menschen ausgeführt werden (z. B. schriftliches Rechnen) Eine Algorithmus ist eine endliche Folge eindeutig ausführbarer Anweisungen zur Lösung eines Problems. Algorithmus schriftliches Addieren

89 89 Algorithmus im Alltag ZUTATEN für 5 Portionen: 650g Erdbeeren 150g Zucker 2 Pk Vanillezucker 5 EL Weinbrand 400 ml Sahne (gut gekühlt) ZUBEREITUNG Erdbeeren kalt abbrausen, abtropfen lassen und trockentupfen. Blütenansatz entfernen. 150 Gramm der Früchte zugedeckt beiseite stellen. Restliche Erdbeeren in Stücke schneiden. Zucker, Vanillezucker und Weinbrand darunterheben und alles 30 Minuten zugedeckt ziehen lassen. Dann mit dem Mixstab fein pürieren. Die Hälfte der Sahne steif schlagen und unter das Püree ziehen. Die Creme im Gefrierfach oder in der Tiefkühltruhe gefrieren lassen. Restliche Sahne halbsteif schlagen. Mit einem Esslöffel Nocken von der Mousse abstechen und auf Dessertteller verteilen. Die halbsteife Sahne angießen und das Dessert mit den ganzen Erdbeeren garnieren. Quelle: Rezept für Erdbeermousse

90 90 Algorithmus im Alltag Bedienungs- anleitung Aufgabe: Beurteilen Sie, welche der üblicherweise geforderten Anforderungen an einen Algorithmus (Endlichkeit, Ausführbarkeit, Eindeutigkeit, Allgemeinheit) bei den gezeigten Alltagsalgorithmen erfüllt sind.

91 91 Al-Khwarizmi Problem des Abu Abd Allah Mohammed Ibn Musa al-Khwarizmi: Lösung im Lehrbuch Kitab al jabr walmuqabalah Algebra Algorithmus Wie ist das Vermögen 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.

92 92 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 südlich des Aralsees, die heute Teil von Usbekistan und Turkmenistan ist. Für seinen Namen sind mehrere Schreibweisen gebräuchlich, z.B. Alhwarizmi, Al-Hwarizmi, al-Khowarizmi oder auch Mohammed ben Musa. Al-Khwarizmi beschäftigte sich u. a. mit Verfahren zur Lösung von Gleichungen. Er verfasste Bücher, die sich mit Algebra, Astronomie und Geographie beschäftigten, sowie Werke über indische Ziffern und den Jüdischen Kalender.

93 Al-Khwarizmi 93


Herunterladen ppt "Algorithmisches Problemlösen In den vergangenen Stunden haben wir uns mit Karol beschäftigt – mancher Schüler hat bereits ein lauffähiges Programm geschrieben."

Ähnliche Präsentationen


Google-Anzeigen