![Page 1: Algorithmisches Problemlösen Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/1.jpg)
Algorithmisches Problemlösen
Klaus Becker
2005
![Page 2: Algorithmisches Problemlösen Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/2.jpg)
2 Algorithmisches Problemlösen
![Page 3: Algorithmisches Problemlösen Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/3.jpg)
3 Teil 1
Programmgesteuerte Systeme
![Page 4: Algorithmisches Problemlösen Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/4.jpg)
4 Automatisierung
Gelenkarmroboter mit Schweißbrenner (Foto: H. Weihe, 2000, Lizenz: Public Domain)
Mit Hilfe programmgesteuerter Systeme lassen sich Vorgänge automatisieren.
![Page 5: Algorithmisches Problemlösen Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/5.jpg)
5 Karol, der Roboter
Als Beispiel eines sehr einfachen programmgesteuerten Systems betrachten wir einen Roboter (Karol oder Karel oder Karl), der seine Arbeit in einer rechteckigen Welt verrichtet. Die Welt, in der sich Karol bewegt, ist in Felder aufgeteilt ist. Auf diesen Feldern können Quader, Ziegel oder Markierungen liegen.
![Page 6: Algorithmisches Problemlösen Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/6.jpg)
6 Karol, der Roboter
Mit Hilfe von Anweisungen lässt sich Karol steuern. Karol führt dann jeweils bestimmte Aktionen aus.
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 Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/7.jpg)
7
Steuern Sie Karol zunächst im „Direktmodus“ mit Hilfe der vorgesehenen Schaltflächen.
Steuern Sie 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
Vorher: Karol steht in der Ausgangsposition.
Nachher: Karol hat eine Treppe gebaut.
LinksDrehenSchrittLinksDrehen...
![Page 8: Algorithmisches Problemlösen Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/8.jpg)
8 Aufgabe
Vorher: Karol steht in der Ausgangsposition.
Nachher: Karol hat eine Siegerpodest gebaut.
Versuchen Sie, direkt ein korrektes Programm zu schreiben. Beachten Sie, dass Karol bei einem Schritt nach vorne maximal einen Ziegel hoch steigen kann.
![Page 9: Algorithmisches Problemlösen Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/9.jpg)
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 Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/10.jpg)
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 Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/11.jpg)
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 Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/12.jpg)
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.
(s. Gasper, Leiß, Spengler, Stimm: Technische und theoretische Informatik)
![Page 13: Algorithmisches Problemlösen Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/13.jpg)
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 Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/14.jpg)
14 Aufgabe
LinksdrehenSchrittLinksDrehen, LinksDrehenHinlegen Ablegen Hin-legen...
Roboter(Prozessor)
Beim Schreiben eines Programms müssen bestimmte Regeln eingehalten werden. Prüfen Sie, 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 Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/15.jpg)
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 Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/16.jpg)
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 Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/17.jpg)
17 Teil 2
Wiederholungen
![Page 18: Algorithmisches Problemlösen Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/18.jpg)
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 Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/19.jpg)
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 Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/20.jpg)
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 Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/21.jpg)
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 Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/22.jpg)
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 Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/23.jpg)
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 Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/24.jpg)
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 Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/25.jpg)
25 Teil 3
Fallunterscheidungen
![Page 26: Algorithmisches Problemlösen Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/26.jpg)
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 Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/27.jpg)
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 Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/28.jpg)
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 Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/29.jpg)
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 Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/30.jpg)
30 Aufgabe
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 Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/31.jpg)
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 Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/32.jpg)
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 Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/33.jpg)
33 Teil 4
Wiederholungen mit Abbruchbedingungen
![Page 34: Algorithmisches Problemlösen Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/34.jpg)
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 Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/35.jpg)
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 Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/36.jpg)
36 Bedingte Wiederholung
solange NichtIstWand tue MarkeSetzen Schritt*solange
falsch
MarkeSetzen
NichtIstWand?
wahr
Schritt
NichtIstWand ?
MarkeSetzenSchritt
NichtIstWand ?
...
...
![Page 37: Algorithmisches Problemlösen Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/37.jpg)
37 Aufgabe
solange NichtIstWand tue MarkeSetzen Schritt*solange
wiederhole MarkeSetzen Schritt*wiederhole bis IstWand
wiederhole MarkeSetzen Schritt*wiederhole solange NichtIstWand
Testen Sie die folgenden Varianten bedingter Wiederholungen (u. a. auch in einer 1x1-Felder-Welt). Welche Gemeinsamkeiten bzw. Unterschiede gibt es?
![Page 38: Algorithmisches Problemlösen Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/38.jpg)
38 Aufgabe
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 Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/39.jpg)
39 Aufgabe
solange NichtIstMarke tue solange NichtIstWand tue Schritt *solange LinksDrehen LinksDrehen*solange
Teste das folgende Programm. Erkläre das Verhalten.
![Page 40: Algorithmisches Problemlösen Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/40.jpg)
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 Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/41.jpg)
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 Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/42.jpg)
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 Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/43.jpg)
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 Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/44.jpg)
44 Aufgabe
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 Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/45.jpg)
45 Aufgabe
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 Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/46.jpg)
46 Aufgabe
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 Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/47.jpg)
47 Teil 5
Aufbau und Entwicklung von Algorithmen
![Page 48: Algorithmisches Problemlösen Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/48.jpg)
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 Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/49.jpg)
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 Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/50.jpg)
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 Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/51.jpg)
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 Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/52.jpg)
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 Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/53.jpg)
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 Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/54.jpg)
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 Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/55.jpg)
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 Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/56.jpg)
56 Aufgabe
Führen Sie 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 Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/57.jpg)
57 Teil 6
Unterprogramme
![Page 58: Algorithmisches Problemlösen Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/58.jpg)
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 Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/59.jpg)
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 Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/60.jpg)
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 Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/61.jpg)
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 Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/62.jpg)
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 Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/63.jpg)
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 Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/64.jpg)
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 Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/65.jpg)
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 Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/66.jpg)
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 Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/67.jpg)
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 Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/68.jpg)
68 Aufgabe
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 Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/69.jpg)
69 Aufgabe
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 Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/70.jpg)
70
![Page 71: Algorithmisches Problemlösen Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/71.jpg)
71 Teil 7
Top-Down-Methode
![Page 72: Algorithmisches Problemlösen Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/72.jpg)
72 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 73: Algorithmisches Problemlösen Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/73.jpg)
73 Zerlegen ...
ZiegelSammeln
ReiheSammeln
InEckeRechtsVorne?
NaechsteAusgangsposition
Komplexe Probleme zerlegt man in Teilprobleme, die sich in der Regel leichter lösen lassen.
![Page 74: Algorithmisches Problemlösen Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/74.jpg)
74 ... 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 75: Algorithmisches Problemlösen Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/75.jpg)
75 ... top-down weiter ...ReiheSammeln
LaufeBisZiegelOderWand
Umdrehen
ZiegelAblegen
ReiheSammeln
solange NichtIstWand tue
LaufeBisZiegelOderWand
IstZiegel?ja nein
Aufheben
Umdrehen
LaufeBisZiegelOderWand
ZiegelAblegen
Umdrehen
...
![Page 76: Algorithmisches Problemlösen Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/76.jpg)
76 ... 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 77: Algorithmisches Problemlösen Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/77.jpg)
77 Noch einmal: Zerlegen und lösen
ZiegelSammeln
NaechsteAusgangsposition
LaufeBisWand
Umdrehen
// BibliothekErweitert
Anweisung Umdrehen...
Anweisung LaufeBisWand...
NaechsteAusgangsposition
LinksDrehen
Schritt
LinksDrehen
LaufeBisWand
Umdrehen
![Page 78: Algorithmisches Problemlösen Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/78.jpg)
78 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 79: Algorithmisches Problemlösen Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/79.jpg)
79 Teil 8
Der Problemlöseprozess
![Page 80: Algorithmisches Problemlösen Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/80.jpg)
80 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 81: Algorithmisches Problemlösen Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/81.jpg)
81 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 82: Algorithmisches Problemlösen Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/82.jpg)
82 Ü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 83: Algorithmisches Problemlösen Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/83.jpg)
83 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 84: Algorithmisches Problemlösen Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/84.jpg)
84 Aufgabe
Karol soll eine Treppe zwischen den vorgegebenen Marken bauen. Der gesamte Problemlöseprozess soll möglichst gut strukturiert werden.
![Page 85: Algorithmisches Problemlösen Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/85.jpg)
85 Aufgabe
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 86: Algorithmisches Problemlösen Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/86.jpg)
86
![Page 87: Algorithmisches Problemlösen Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/87.jpg)
87 Teil 9
Automatisierte Verarbeitung von Daten
![Page 88: Algorithmisches Problemlösen Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/88.jpg)
88 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 89: Algorithmisches Problemlösen Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/89.jpg)
89
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 90: Algorithmisches Problemlösen Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/90.jpg)
90 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 91: Algorithmisches Problemlösen Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/91.jpg)
91 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 92: Algorithmisches Problemlösen Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/92.jpg)
92 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 93: Algorithmisches Problemlösen Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/93.jpg)
93 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 94: Algorithmisches Problemlösen Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/94.jpg)
94 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 95: Algorithmisches Problemlösen Klaus Becker 2005. 2 Algorithmisches Problemlösen](https://reader035.vdokument.com/reader035/viewer/2022062303/55204d7549795902118ca1a1/html5/thumbnails/95.jpg)
95 Literaturhinweise
Frey, Hubwieser, Winhard: Informatik 1 – Objekte, Strukturen, Algorithmen. Klett-Verlag 2004.
Buttke, Engelmann, Formann: Informatische Grundbildung. Paetec-Verlag 2004.