93
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 In den vergangenen Stunden haben wir uns mit Karol beschäftigt – mancher Schüler hat bereits ein lauffähiges Programm geschrieben

Embed Size (px)

Citation preview

Page 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

Algorithmisches Problemlösen

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

Page 2: 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

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

3 Teil 1

Programmgesteuerte Systeme

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

4 Automatisierung

Mit Hilfe programmgesteuerter Systeme lassen sich Vorgänge automatisieren.

Aibos beim Robocup 2005

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

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.

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

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.

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

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.

LinksDrehenSchrittLinksDrehen...

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

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.

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

9

Karol als programmgesteuertes System

LinksDrehenSchrittLinksDrehen LinksDrehenHinlegen Hinlegen HinlegenLinksDrehen LinksDrehenSchrittLinksDrehen LinksDrehenHinlegen HinlegenLinksDrehen LinksDrehen...

Zustand vorher

Zustand nachher

Programm (Algorithmus

)

Roboter(Prozessor)

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

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“).

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

11

LinksDrehenSchrittLinksDrehen LinksDrehenHinlegen ...

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.

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

12

LinksDrehenSchrittLinksDrehen LinksDrehenHinlegen ...

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.

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

13 Korrektheit

Programm (Algorithmus

)

Roboter(Prozessor)

LinksDrehenSchrittLinksDrehen LinksDrehenHinlegen ...

Eine Algorithmus ist korrekt bzgl. einer Spezifikation, wenn er jeden möglichen Ausgangszustand tatsächlich in den festgelegten Zielzustand überführt. Zustand

vorher

Zustand vorher

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

14 Aufgabe

LinksdrehenSchrittLinksDrehen, LinksDrehenHinlegen 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

)

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

15 Syntaxfehler

LinksdrehenSchrittLinksDrehen, Links DrehenHinlegen 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

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

16 Logische Fehler

LinksDrehenSchrittLinksDrehenLinksDrehenHinlegenHinlegenHinlegenLinksDrehen

SchrittLinksDrehenLinksDrehen

...

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

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

17 Teil 2

Wiederholungen

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

18

MarkeSetzenSchritt MarkeSetzenSchritt MarkeSetzenSchritt MarkeSetzenSchritt MarkeSetzenSchritt MarkeSetzenSchritt MarkeSetzenSchritt

Viel (zu viel) Schreibarbeit!

Vorher: Karol steht in der Ausgangsposition.

Nachher: Karol hat den Weg zur Wand markiert.

Sequenz: Folge von

Anweisungen

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

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

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

20 Wiederholung mit fester Anzahl

Wiederhole <n> mal <Sequenz>*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.

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

21 Schachtelung von Wiederholungen

Vorher: Karol steht in der Ausgangsposition.

Nachher: Karol hat seine Welt umrundet und Markierungen hinterlegt.

wiederhole 4 mal MarkeSetzen Schritt *wiederholeLinksDrehenwiederhole 4 mal MarkeSetzen Schritt *wiederhole... wiederhole 4 mal

wiederhole 4 mal MarkeSetzen Schritt *wiederhole LinksDrehen*wiederhole

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

22 Schachtelung von Wiederholungen

wiederhole 4 mal MarkeSetzen Schritt *wiederholeLinksDrehenwiederhole 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).

Hauptprogramm

MarkeSetzen

Schritt

wiederhole 4 mal

LinksDrehen

wiederhole 4 mal

Hauptprogramm

MarkeSetzen

Schritt

wiederhole 4 mal

LinksDrehen

MarkeSetzen

Schritt

wiederhole 4 mal

LinksDrehen

MarkeSetzen

Schritt

wiederhole 4 mal

LinksDrehen

MarkeSetzen

Schritt

wiederhole 4 mal

LinksDrehen Struktogramm

Programm

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

23 Aufgabe

Vorher: Karol steht in der Ausgangsposition in einer 10x10-Zellen-Welt.

Nachher: Karol hat eine 6 Ziegel hohe Mauer gebaut.

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

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.

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

25 Teil 3

Fallunterscheidungen

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

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

AufhebenSchrittMarkeSetzen

Schritt

Schritt

AufhebenSchrittMarkeSetzen

AufhebenSchrittMarkeSetzen

Schritt

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

27 Fallunterscheidung

falsch

AufhebenSchrittMarkeSetzen

IstZiegel?wahr

Schritt

wenn IstZiegel dann Aufheben Schritt MarkeSetzensonst Schritt*wenn

IstZiegel? (w)AufhebenSchrittMarkeSetzen

IstZiegel? (f)Schritt

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

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

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

29 Aufgabe

Vorher: Karol steht vor eine Reihe von Ziegeln.

Nachher: Karol hat die Lücken in der Ziegelreihe geschlossen.

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

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.

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

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

EinseitigeFallunter-scheidung

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

32 Darstellungen

wenn NichtIstZiegel dann Hinlegen Schrittsonst Schritt*wenn

falsch

Hinlegen

Schritt

NichtIstZiegel?

wahr

Schritt

Hauptprogramm

Hinlegen

Schritt

Schritt

NichtIstZiegel

w f

wenn NichtIstZiegel dann Hinlegen*wennSchritt

falsch

Hinlegen

NichtIstZiegel?

wahr

Schritt

Hauptprogramm

Hinlegen

NichtIstZiegel

w f

Schritt

Struktogramm

Programm

FlussdiagrammProgrammablaufp

lan

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

33 Teil 4

Wiederholungen mit Abbruchbedingungen

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

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.

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

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

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

36 Bedingte Wiederholung

solange NichtIstWand tue MarkeSetzen Schritt*solange

falsch

MarkeSetzen

NichtIstWand?

wahr

Schritt

NichtIstWand ?

MarkeSetzenSchritt

NichtIstWand ?

...

...

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

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?

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

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

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

39 Aufgabe 6

solange NichtIstMarke tue solange NichtIstWand tue Schritt *solange LinksDrehen LinksDrehen*solange

Teste das folgende Programm. Erkläre das Verhalten.

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

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

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

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.

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

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.

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

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

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

44 Aufgabe 7

Vorher: Karol steht in der Ausgangsposition in einer beliebig großen Welt.

Nachher: Karol hat eine 6 Ziegel hohe Mauer gebaut.

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

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.

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

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.

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

47 Teil 5

Aufbau und Entwicklung von Algorithmen

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

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:

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

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

Hauptprogramm

MarkeSetzen

Schritt LinksDrehen

Schritt RechtsDrehen

RechtsDrehen

Schritt

IstZiegel

w f

IstZiegel

w f

solange NichtIstMarke

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

50 Kontrollstrukturen

Sequenz

STRUKT4

<Bedingung>ja nein

<Anweisungs-

sequenz>

<Anweisungs-

sequenz>

STRUKT3

<Anweisung>

<Anweisung>

...

STRUKT1

solange <Bedingung>

<Anweisungssequenz>

WiederholungFallunterscheidung

Kontrollstrukturen dienen dazu, den Ablauf der Verarbeitung festzulegen.

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

51 Bausteine von Algorithmen

S

F

W

E

E

S

F

E

E

S

E

E

E

Hauptprogramm

MarkeSetzen

Schritt LinksDrehen

Schritt RechtsDrehen

RechtsDrehen

Schritt

IstZiegel

w f

IstZiegel

w f

solange NichtIstMarke

Ein Algorithmus ist aus - Elementaranweisungen (E) und den Kontrollstrukturen

- Sequenzbildung (S),- Fallunterscheidung (F),- Wiederholung (W)aufgebaut.

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

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

?

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

53 Von Ablaufsituationen ...

Schritt 1: Ablaufsituationen klären und die Verarbeitung beschreiben

Marke setzenZiegel vorne? nein

Schritt vorwärts Rechts drehenRechts drehenSchritt vorwärts

Schritt vorwärts

Marke setzenZiegel vorne? ja

Marke setzenZiegel vorne? nein

Links drehenZiegel vorne? nein

Links drehenZiegel vorne? ja

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

54

STRUKT1

solange nicht auf einer Marke

Marke setzen

vor Ziegel?ja nein

Schritt

vorwärts

nach links

drehen

vor Ziegel?ja nein

Schritt

vorwärts

um 180°

drehen

Schritt

vorwärts

... über einen Algorithmus ...

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

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

55

STRUKT1

solange nicht auf einer Marke

Marke setzen

vor Ziegel?ja nein

Schritt

vorwärts

nach links

drehen

vor Ziegel?ja nein

Schritt

vorwärts

um 180°

drehen

Schritt

vorwärts

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

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

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

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

57 Teil 6

Unterprogramme

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

58 Ein komplexes Problem

Vorher: Karol steht vor eine Reihe von Ziegeln.

Nachher: Karol hat die Ziegel alle eingesammelt und in der Ecke aufgestapelt.

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

59 Ablaufbeschreibung

Ziegel aufhebenSchritt vorwärtsMarke setzenUmdrehenBis zur Wand laufenSchritt zurückZiegel hinlegen

UmdrehenBis zur Marke laufenMarke löschen

Ziegel aufhebenSchritt vorwärtsMarke setzenUmdrehenBis zum Ziegel laufenSchritt zurückZiegel hinlegen

u.s.w.

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

60 Algorithmus

Ziegel aufhebenSchritt vorwärtsMarke setzenUmdrehenBis zur Wand laufenSchritt zurückZiegel hinlegen

UmdrehenBis zur Marke laufenMarke löschen

Ziegel aufhebenSchritt vorwärtsMarke setzenUmdrehenBis zum Ziegel laufenSchritt zurückZiegel hinlegen

Hauptprogramm

Aufheben

Schritt

MarkeSetzen

UMDREHEN

LAUFEBISWAND

SCHRITTRUECKWAERTS

Hinlegen

UMDREHEN

LAUFEBISMARKE

MarkeLöschen

Aufheben

Schritt

MarkeSetzen

UMDREHEN

LAUFEBISZIEGEL

Hinlegen

UMDREHEN

LAUFEBISMARKE

MarkeLöschen

solange IstZiegel

UMDREHEN

LAUFEBISZIEGEL

UMDREHEN

Anw.: UMDREHEN

RechtsDrehen

RechtsDrehen

Anw.: LAUFEBISWAND

Schritt

solange NichtIstWand

Anw.: LAUFEBISZIEGEL

Schritt

solange NichtIstZiegel

Anw.: LAUFEBISMARKE

Schritt

solange NichtIstMarke

Anw.: SCHRITTRUECKWAERTS

UMDREHEN

Schritt

UMDREHEN

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).

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

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

Hauptprogramm

Aufheben

Schritt

MarkeSetzen

UMDREHEN

LAUFEBISWAND

SCHRITTRUECKWAERTS

Hinlegen

UMDREHEN

LAUFEBISMARKE

MarkeLöschen

Aufheben

Schritt

MarkeSetzen

UMDREHEN

LAUFEBISZIEGEL

Hinlegen

UMDREHEN

LAUFEBISMARKE

MarkeLöschen

solange IstZiegel

UMDREHEN

LAUFEBISZIEGEL

UMDREHEN

Anw.: UMDREHEN

RechtsDrehen

RechtsDrehen

Anw.: LAUFEBISWAND

Schritt

solange NichtIstWand

Anw.: LAUFEBISZIEGEL

Schritt

solange NichtIstZiegel

Anw.: LAUFEBISMARKE

Schritt

solange NichtIstMarke

Anw.: SCHRITTRUECKWAERTS

UMDREHEN

Schritt

UMDREHEN

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.

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

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

Hauptprogramm

Aufheben

Schritt

MarkeSetzen

UMDREHEN

LAUFEBISWAND

SCHRITTRUECKWAERTS

Hinlegen

UMDREHEN

LAUFEBISMARKE

MarkeLöschen

Aufheben

Schritt

MarkeSetzen

UMDREHEN

LAUFEBISZIEGEL

Hinlegen

UMDREHEN

LAUFEBISMARKE

MarkeLöschen

solange IstZiegel

UMDREHEN

LAUFEBISZIEGEL

UMDREHEN

Anw.: UMDREHEN

RechtsDrehen

RechtsDrehen

Anw.: LAUFEBISWAND

Schritt

solange NichtIstWand

Anw.: LAUFEBISZIEGEL

Schritt

solange NichtIstZiegel

Anw.: LAUFEBISMARKE

Schritt

solange NichtIstMarke

Anw.: SCHRITTRUECKWAERTS

UMDREHEN

Schritt

UMDREHEN

Festlegung des

Unterprogramms

Aufruf des Unterprogram

ms

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

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.

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

64 Eine Bibliothek anlegen

{ Anweisung Umdrehenvorher: Karol steht auf einem beliebigen Feldund 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

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

65 Eine Bibliothek benutzen

EinfügenBibliothek1*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.

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

66 Karol lernt neue Bedingungen

Vorher: Nachher:

Hauptprogramm

MarkeSetzen

Schritt

LinksDrehen

Schritt

RechtsDrehen

Schritt

ZIEGELLINKS

w f

ZIEGELVORNE

w f

solange NichtIstMarke

Bed.: ZIEGELVORNE

Schnell

falsch

wahr

IstZiegel

w f

Bed.: ZIEGELLINKS

Schnell

falsch

LinksDrehen

wahr

IstZiegel

w f

RechtsDrehen

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

67 Karol lernt neue Bedingungen

Hauptprogramm

MarkeSetzen

Schritt

LinksDrehen

Schritt

RechtsDrehen

Schritt

ZIEGELLINKS

w f

ZIEGELVORNE

w f

solange NichtIstMarke

Bed.: ZIEGELVORNE

Schnell

falsch

wahr

IstZiegel

w f

Bed.: ZIEGELLINKS

Schnell

falsch

LinksDrehen

wahr

IstZiegel

w f

RechtsDrehen

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

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

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.

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

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.

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

70 Teil 7

Top-Down-Methode

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

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.

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

72 Zerlegen ...

ZiegelSammeln

ReiheSammeln

InEckeRechtsVorne?

NaechsteAusgangsposition

Komplexe Probleme zerlegt man in Teilprobleme, die sich in der Regel leichter lösen lassen.

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

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

ZiegelSammeln

wiederhole bis InEckeRechtsVorne

ReiheSammeln

InEckeRechtsVorne?ja nein

Naechste

Ausgangsposition

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

74 ... top-down weiter ...ReiheSammeln

LaufeBisZiegelOderWand

Umdrehen

ZiegelAblegen

ReiheSammeln

solange NichtIstWand tue

LaufeBisZiegelOderWand

IstZiegel?ja nein

Aufheben

Umdrehen

LaufeBisZiegelOderWand

ZiegelAblegen

Umdrehen

...

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

75 ... bis unten angekommen

ReiheSammeln

LaufeBisZiegelOderWand

Umdrehen

ZiegelAblegen

LaufeBisZiegelOderWand

solange NichtVorZiegelOderWand tue

Schritt

ZiegelAblegen

IstWand?ja nein

SchrittRueckwaerts

HinlegenHinlegen

// BibliothekErweitert

Anweisung Umdrehen...

Anweisung SchrittRueckwaerts...

Bedingung NichtVorZiegelOderWand...

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

76 Noch einmal: Zerlegen und lösen

ZiegelSammeln

NaechsteAusgangsposition

LaufeBisWand

Umdrehen

// BibliothekErweitert

Anweisung Umdrehen...

Anweisung LaufeBisWand...

NaechsteAusgangsposition

LinksDrehen

Schritt

LinksDrehen

LaufeBisWand

Umdrehen

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

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

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

78 Teil 8

Der Problemlöseprozess

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

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.

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

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

ZiegelSammeln

wiederhole bis InEckeRechtsVorne

ReiheSammeln

InEckeRechtsVorne?ja nein

Naechste

Ausgangsposition

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

81 Übersetzung in Programme

Schritt 3:

Die entwickelten Algorithmen werden implementiert und getestet. Beim Testen werden auch „extreme“ Fälle durchgespielt.

ZiegelSammeln

wiederhole bis InEckeRechtsVorne

ReiheSammeln

InEckeRechtsVorne?ja nein

Naechste

Ausgangsposition

Programmwiederhole ReiheSammeln wenn Nicht InEckeRechtsVorne dann NaechsteAusgangsposition *wenn*wiederhole bis InEckeRechtsVorne*Programm

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

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

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

83 Aufgabe 13

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

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

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“.

2574+ 462

3036

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

85 Teil 9

Automatisierte Verarbeitung von Daten

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

86 Karol soll Zahlen addieren

Vorher: Die beiden zu addierenden Zahlen sind mit Hilfe von Ziegelstapel dargestellt.

Nachher: Karol hat die Stapelzahlen „addiert“.

2574+ 462

3036

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

87

2 5

4

7

6

4

2

3 3 6

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 Stelleunter Berücksichtigungdes Übertrags.

Algorithmus „schriftliches

Addieren“

Karol-Programm

2574+ 462

3036

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

88 Zahlen schriftlich addieren

Solange noch Ziffern vorhanden sind,

addiere die Zahlen der betreffenden Stelleunter Berücksichtigungdes Ü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).

2574+ 462

3036

Eine Algorithmus ist eine endliche Folge eindeutig ausführbarer Anweisungen zur Lösung eines Problems.

Algorithmus „schriftliches

Addieren“

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

89 Algorithmus im Alltag

ZUTATEN für 5 Portionen:

650g Erdbeeren150g Zucker2 Pk Vanillezucker5 EL Weinbrand400 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: www.daskochrezept.de

Rezept für Erdbeermouss

e

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

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.

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

91 Al-Khwarizmi

Problem des Abu Abd Allah Mohammed Ibn Musa al-Khwarizmi:

Lösung im Lehrbuch „Kitab al jabr w‘almuqabalah“

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.

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

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.

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

Al-Khwarizmi93