Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Algorithmisches Problemlösen

Ähnliche Präsentationen


Präsentation zum Thema: "Algorithmisches Problemlösen"—  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 Algorithmisches Problemlösen

3 Programmgesteuerte Systeme
Teil 1 Programmgesteuerte Systeme

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

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 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: Schritt Karol bewegt sich ein Feld weiter (sofern dies möglich ist). LinksDrehen Karol dreht sich um 90° nach links. RechtsDrehen Karol dreht sich um 90° nach rechts. Hinlegen Karol legt einen Ziegel vor sich ab. Aufheben Karol hebt einen vor ihm liegenden Ziegel auf. MarkeSetzen Karol markiert das Feld, auf dem er gerade steht. MarkeLöschen Karol entfernt eine Markierung, auf der er gerade steht.

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

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 Karol als programmgesteuertes System
Zustand vorher LinksDrehen Schritt LinksDrehen LinksDrehen Hinlegen Hinlegen Hinlegen LinksDrehen LinksDrehen Schritt LinksDrehen LinksDrehen Hinlegen Hinlegen LinksDrehen LinksDrehen ... Programm (Algorithmus) Roboter (Prozessor) Zustand nachher

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

11 Programm (Algorithmus)
LinksDrehen Schritt LinksDrehen LinksDrehen Hinlegen ... Programm (Algorithmus) Roboter (Prozessor) 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. Eine Algorithmus ist eine endliche Folge eindeutig ausführbarer Anweisungen zur Lösung eines Problems.

12 Programm (Algorithmus)
LinksDrehen Schritt LinksDrehen LinksDrehen Hinlegen ... Programm (Algorithmus) Roboter (Prozessor) 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 Programm (Algorithmus)
Korrektheit Eine Algorithmus ist korrekt bzgl. einer Spezifikation, wenn er jeden möglichen Ausgangszustand tatsächlich in den festgelegten Zielzustand überführt. Zustand vorher LinksDrehen Schritt LinksDrehen LinksDrehen Hinlegen ... Programm (Algorithmus) Roboter (Prozessor) Zustand vorher

14 Programm (Algorithmus)
Aufgabe 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 - ... Linksdrehen Schritt LinksDrehen, LinksDrehen Hinlegen Ablegen Hin- legen ... Programm (Algorithmus) Roboter (Prozessor)

15 Anweisungen (Programm)
Syntaxfehler 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). Linksdrehen Schritt LinksDrehen, Links Drehen Hinlegen Ablegen Hin- legen ... Anweisungen (Programm) Roboter (Prozessor) Syntaxfehler

16 Logische Fehler 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 LinksDrehen Schritt LinksDrehen LinksDrehen Hinlegen Hinlegen Hinlegen LinksDrehen Schritt LinksDrehen LinksDrehen ... Ausgangs-zustand Tatsächlicher Zielzustand

17 Teil 2 Wiederholungen

18 Viel (zu viel) Schreibarbeit!
Vorher: Karol steht in der Ausgangsposition. MarkeSetzen Schritt MarkeSetzen Schritt MarkeSetzen Schritt MarkeSetzen Schritt MarkeSetzen Schritt MarkeSetzen Schritt MarkeSetzen Schritt Sequenz: Folge von Anweisungen Nachher: Karol hat den Weg zur Wand markiert.

19 Algorithmus mit Wiederholung
Vorher: Karol steht in der Ausgangsposition. Wiederhole 7 mal MarkeSetzen Schritt *wiederhole Wiederholungs-anweisung Nachher: Karol hat den Weg zur Wand markiert.

20 Wiederholung mit fester Anzahl
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. Wiederhole <n> mal <Sequenz> *wiederhole Allgemeines Schema Wiederhole 7 mal Schritt MarkeSetzen *wiederhole Beispiel Eine solche Wiederholung mit fester Anzahl kann als Einheit aufgefasst werden und bildet dann eine einzelne (strukturierte) Anweisung.

21 Schachtelung von Wiederholungen
Vorher: Karol steht in der Ausgangsposition. wiederhole 4 mal MarkeSetzen Schritt *wiederhole LinksDrehen wiederhole 4 mal MarkeSetzen Schritt *wiederhole ... wiederhole 4 mal wiederhole 4 mal MarkeSetzen Schritt *wiederhole LinksDrehen *wiederhole Nachher: Karol hat seine Welt umrundet und Markierungen hinterlegt.

22 Schachtelung von Wiederholungen
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). wiederhole 4 mal MarkeSetzen Schritt *wiederhole LinksDrehen wiederhole 4 mal MarkeSetzen Schritt *wiederhole ... wiederhole 4 mal wiederhole 4 mal MarkeSetzen Schritt *wiederhole LinksDrehen *wiederhole Programm Struktogramm

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

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 Fallunterscheidungen
Teil 3 Fallunterscheidungen

26 Situationsabhängiges Vorgehen
Vorher: Karol steht vor einer Reihe mit Ziegeln. Schritt Aufheben Schritt MarkeSetzen Nachher: Karol steht am Ende der Reihe, hat alle Ziegel aufgesammelt und ihre Positionen markiert.

27 Fallunterscheidung wenn IstZiegel dann Aufheben Schritt MarkeSetzen sonst Schritt *wenn IstZiegel? (f) Schritt wahr falsch IstZiegel? IstZiegel? (w) Aufheben Schritt MarkeSetzen Aufheben Schritt MarkeSetzen Schritt

28 Algorithmus mit Fallunterscheidung
Vorher: Karol steht vor einer Reihe mit Ziegeln. Wiederhole 7 mal wenn IstZiegel dann Aufheben Schritt MarkeSetzen sonst Schritt *wenn *wiederhole Nachher: Karol steht am Ende der Reihe, hat alle Ziegel aufgesammelt und ihre Positionen markiert.

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

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 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 ... Einseitige Fallunter- scheidung Zweiseitige Fallunter- scheidung wahr falsch NichtIstZiegel? wahr falsch NichtIstZiegel? Hinlegen Hinlegen Schritt Schritt Schritt

32 Flussdiagramm Programmablaufplan
Darstellungen wenn NichtIstZiegel dann Hinlegen Schritt sonst Schritt *wenn wenn NichtIstZiegel dann Hinlegen *wenn Schritt Programm Flussdiagramm Programmablaufplan wahr falsch NichtIstZiegel? wahr falsch NichtIstZiegel? Hinlegen Hinlegen Schritt Schritt Schritt Struktogramm

33 Wiederholungen mit Abbruchbedingungen
Teil 4 Wiederholungen mit Abbruchbedingungen

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

35 Bedingte Wiederholung
Steuerung mit einer Wiederholungsanzahl Steuerung mit einer Abbruchbedingung Vorher: Karol steht in der Ausgangsposition. Wiederhole 7 mal MarkeSetzen Schritt *wiederhole solange NichtIstWand tue MarkeSetzen Schritt *solange Nachher: Karol hat den Weg zur Wand markiert.

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

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

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

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

40 Varianten von Abbruchbedingungen
solange NichtIstWand tue MarkeSetzen Schritt *solange wiederhole MarkeSetzen Schritt *wiederhole bis IstWand Eintrittsbedingung falsch MarkeSetzen NichtIstWand? wahr Schritt MarkeSetzen falsch IstWand? Schritt wahr Austrittsbedingung

41 Eintrittsbedingung / Austrittsbedingung
Vorher: Karol steht in der Ausgangsposition. Vorher: Karol steht in der Ausgangsposition. solange NichtIstWand tue MarkeSetzen Schritt *solange wiederhole MarkeSetzen Schritt *wiederhole bis IstWand Nachher: Karol hat den Weg zur Wand markiert. 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 Varianten von Austrittsbedingungen
wiederhole MarkeSetzen Schritt *wiederhole bis IstWand wiederhole MarkeSetzen Schritt *wiederhole solange NichtIstWand MarkeSetzen MarkeSetzen Schritt Schritt falsch wahr IstWand? NichtIstWand? wahr falsch Bei einer Wiederholung mit Austrittsbedingung kann überprüft werden, ob die Austrittsbedingung erfüllt bzw. nicht erfüllt ist.

43 Endlosschleife solange NichtIstMarke tue solange NichtIstWand tue Schritt *solange LinksDrehen LinksDrehen *solange wiederhole immer solange NichtIstWand tue Schritt *solange LinksDrehen LinksDrehen *wiederhole 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.

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 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 Aufgabe 9 Vorher: Karol steht in der Ausgangsposition. In der Welt ist eine geschlossene Bahn aus Ziegeln gelegt. Entwickle ein passendes Programm mit Hilfe geeigneter Entscheidungs- und Wiederholungsanweisungen. Nachher: Karol hat die Ziegelbahn umrundet und Markierungen hinterlegt.

47 Aufbau und Entwicklung von Algorithmen
Teil 5 Aufbau und Entwicklung von Algorithmen

48 Ein Komplexer Algorithmus
Vorher: solange NichtIstMarke tue MarkeSetzen wenn IstZiegel dann Schritt sonst LinksDrehen wenn IstZiegel dann Schritt sonst RechtsDrehen RechtsDrehen Schritt *wenn *wenn *solange Nachher:

49 Strukturbetonte Darstellung
Programm solange NichtIstMarke tue MarkeSetzen wenn IstZiegel dann Schritt sonst LinksDrehen wenn IstZiegel dann Schritt sonst RechtsDrehen RechtsDrehen Schritt *wenn *wenn *solange Struktogramm

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

51 Bausteine von Algorithmen
W S E F E S E F E Ein Algorithmus ist aus - Elementaranweisungen (E) und den Kontrollstrukturen - Sequenzbildung (S), - Fallunterscheidung (F), - Wiederholung (W) aufgebaut. S E E E

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 Von Ablaufsituationen ...
Schritt 1: Ablaufsituationen klären und die Verarbeitung beschreiben Marke setzen Ziegel vorne?  ja Marke setzen Ziegel vorne?  nein Marke setzen Ziegel vorne?  nein Links drehen Ziegel vorne?  ja Schritt vorwärts Links drehen Ziegel vorne?  nein Schritt vorwärts Rechts drehen Rechts drehen Schritt vorwärts

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

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 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 Teil 6 Unterprogramme

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 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 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 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 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 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 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 ... Kommentar zur Spezifikation des Verhaltens des Unterprogramms 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.

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 Karol lernt neue Bedingungen
Vorher: Nachher:

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 Aufgabe 11 Vorher: Karol befindet sich in einem „zeilenorientierten“ Labyrinth und schaut nach rechts. Löse das Problem mit Hilfe geeigneter neuer Anweisungen und Bedingungen. Nachher: Karol hat den Ausgang des Labyrinths gefunden.

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

70 Teil 7 Top-Down-Methode

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 Zerlegen ... Komplexe Probleme zerlegt man in Teilprobleme, die sich in der Regel leichter lösen lassen. ZiegelSammeln ReiheSammeln InEckeRechtsVorne? NaechsteAusgangsposition

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 ... top-down weiter ... ... ReiheSammeln LaufeBisZiegelOderWand
Umdrehen ZiegelAblegen ...

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

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

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

78 Der Problemlöseprozess
Teil 8 Der Problemlöseprozess

79 Beschreibung des Problems
Vorher: In der Welt von Karol liegen viele Ziegel herum. Schritt 1: Das Problem wird erfasst und möglichst genau beschrieben. Nachher: Karol hat die Ziegel alle eingesammelt und in der jeweiligen Reihe aufgestapelt.

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

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

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 Aufgabe 13 Karol soll eine Treppe zwischen den vorgegebenen Marken bauen. Der gesamte Problemlöseprozess soll möglichst gut strukturiert werden.

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. 3036 Nachher: Karol hat die Stapelzahlen „addiert“.

85 Automatisierte Verarbeitung von Daten
Teil 9 Automatisierte Verarbeitung von Daten

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

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

88 Zahlen schriftlich addieren
Solange noch Ziffern vorhanden sind, addiere die Zahlen der betreffenden Stelle unter Berücksichtigung des Übertrags. Algorithmus „schriftliches Addieren“ 3036 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.

89 Rezept für Erdbeermousse
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 Bedienungs-anleitung
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 Al-Khwarizmi Die Bezeichnung „Algorithmus“ leitet sich aus dem Namen „Al-Khwarizmi“ – einem arabischen Mathematiker – ab. Algorithmus Problem des Abu Abd Allah Mohammed Ibn Musa al-Khwarizmi: Wie ist das Vermögen eines wohlhabender Manns aufzuteilen, der bis zu 4 Frauen in unterschiedlichem Stand und eine Vielzahl von Kindern hat? Lösung im Lehrbuch „Kitab al jabr w‘almuqabalah“ Algebra

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


Herunterladen ppt "Algorithmisches Problemlösen"

Ähnliche Präsentationen


Google-Anzeigen