Download - Algorithmisches Problemlösen mit Kara Klaus Becker 2008.

Transcript
Page 1: Algorithmisches Problemlösen mit Kara Klaus Becker 2008.

Algorithmisches Problemlösenmit Kara

Klaus Becker

2008

Page 2: Algorithmisches Problemlösen mit Kara Klaus Becker 2008.

2 Kara

Page 3: Algorithmisches Problemlösen mit Kara Klaus Becker 2008.

3 Teil 1

Ausführsystem Kara

Page 4: Algorithmisches Problemlösen mit Kara Klaus Becker 2008.

4 Kara, ein steuerbarer Marienkäfer

Kara ist ein Marienkäfer. Kara lebt in einer Welt mit unbewegliche Baumstümpfen, mit Pilzen (die Kara verschieben kann) und mit Kleeblättern, die Kara hinlegen und aufnehmen kann.

Page 5: Algorithmisches Problemlösen mit Kara Klaus Becker 2008.

5 Aufgabe

Kara steht hier im Eingang seines Baus - das ist der Bereich, der von den Bäumen begrenzt wird. Kara soll jetzt einmal um den Bau laufen und den Weg mit Kleeblättern auslegen. Benutzen Sie die Schaltflächen im Kara-Fenster, um diese Aufgabe zu erledigen.

vorher nachher

Page 6: Algorithmisches Problemlösen mit Kara Klaus Becker 2008.

6 Aufgabe

Kara steht hier im Eingang seines Baus - das ist der Bereich, der von den Bäumen begrenzt wird. Kara soll jetzt einmal um den Bau laufen und den Weg mit Kleeblättern auslegen. Benutzen Sie die Kara-Operationen, um diese Aufgabe zu erledigen.

KaraweltfensterProgrammfenster

Page 7: Algorithmisches Problemlösen mit Kara Klaus Becker 2008.

7 Elementare Anweisungen

Operation Bedeutungmove() einen Schritt weiter gehenturnLeft() sich um 90° nach links drehen turnRight() sich um 90° nach rechts drehenputLeaf() ein Kleeblatt auf das aktuelle Feld legenremoveLeaf() das Kleeblatt vom aktuellen Feld entfernen

Aufrufe von Operationen sind Beispiele für Anweisungen. Es handelt sich - genauer gesagt - um die elementaren Anweisungen, die das Ausführsystem Kara zur Verfügung stellt.

elementare Anweisungkara.move()

Page 8: Algorithmisches Problemlösen mit Kara Klaus Becker 2008.

8 Übungen

siehe www.inf-schule.de

Page 9: Algorithmisches Problemlösen mit Kara Klaus Becker 2008.

9 Teil 2

Algorithmisches Problemlösen

Page 10: Algorithmisches Problemlösen mit Kara Klaus Becker 2008.

10 Allgemeines Problem

Problem: vom Eingang des Baus in die hintere linke Ecke laufen

vorher

großer Bau

nachher

vorher

nachher

kleiner Bau

Page 11: Algorithmisches Problemlösen mit Kara Klaus Becker 2008.

11 Lösung zum allgemeinen Problem

Problem: vom Eingang des Baus in die hintere linke Ecke laufen

vorher

nachher

vorher

nachher

SOLANGE nicht vor_baum: weiter_gehenlinks_drehenSOLANGE nicht vor_baum: weiter_gehen

Page 12: Algorithmisches Problemlösen mit Kara Klaus Becker 2008.

12 Problemspezifikation / Algorithmus

Problem: vom Eingang des Baus in die hintere linke Ecke laufen

Problemspezifikation

Algorithmus

SOLANGE nicht vor_baum: weiter_gehenlinks_drehenSOLANGE nicht vor_baum: weiter_gehen

Eine Problemspezifikation ist eine möglichst präzise Beschreibung eines Problems.

Vorher: Kara steht im Eingang seines beliebig großen Baus und schaut in den Bau hinein.

Nachher: Kara befindet sich in der linken hinteren Ecke des Baus (mit Blick gegen die Wand).

Ein Algorithmus ist eine Verarbeitungsvorschrift, die so präzise formuliert ist, dass sie (zumindest im Prinzip) auch von einer Maschine abgearbeitet werden kann.

Problemspezifikation

Page 13: Algorithmisches Problemlösen mit Kara Klaus Becker 2008.

13 Algorithmus / Programm

Problem: vom Eingang des Baus in die hintere linke Ecke laufen

Programm

SOLANGE nicht vor_baum: weiter_gehenlinks_drehenSOLANGE nicht vor_baum: weiter_gehen

Ein Programm ist ein Algorithmus zur Lösung eines Problems, der in einer vorgegebenen formalen Sprache verfasst ist.

Vorher: Kara steht im Eingang seines beliebig großen Baus und schaut in den Bau hinein.

Nachher: Kara befindet sich in der linken hinteren Ecke des Baus (mit Blick gegen die Wand).

Ein Algorithmus ist eine Verarbeitungsvorschrift, die so präzise formuliert ist, dass sie (zumindest im Prinzip) auch von einer Maschine abgearbeitet werden kann.

while not kara.treeFront(): kara.move()kara.turnLeft()while not kara.treeFront(): kara.move()

Page 14: Algorithmisches Problemlösen mit Kara Klaus Becker 2008.

14 Aufgaben

Problem: Kara soll um den Bau laufen.

Vorher: Kara steht im Eingang seines beliebig großen Baus und schaut aus dem Bau heraus.

Nachher: Kara ist einmal um den Bau gelaufen und steht wieder im Eingang.

Aufgabe: Entwickeln Sie einen Algorithmus zur Lösung des Problems.

Page 15: Algorithmisches Problemlösen mit Kara Klaus Becker 2008.

15 Teil 3

Bausteine von Algorithmen

Page 16: Algorithmisches Problemlösen mit Kara Klaus Becker 2008.

16 Aufgabe

Was bewirken die Programme? Beschreiben Sie jeweils die Situation nach der Ausführung.

vorher vorher

while not kara.treeFront(): kara.move()kara.turnLeft()kara.turnLeft()

while not kara.treeFront(): if kara.onLeaf(): kara.removeLeaf() kara.move()kara.turnLeft()kara.turnLeft()

Page 17: Algorithmisches Problemlösen mit Kara Klaus Becker 2008.

17 Aufgabe

Ändern Sie das Programm jeweils so ab, dass die folgenden Endsituationen erreicht werden.

vorher

while not kara.treeFront(): kara.move()kara.turnLeft()kara.turnLeft()

* Kara soll im Eingang des Baus stehen bleiben.* Kara soll zusätzlich den zurückgelegten Weg mit Kleeblättern auslegen.* Kara soll zur hinteren Wand des Baus und wieder zurück in den Eingang seines Baus laufen.* Kara soll zur hinteren Wand des Baus laufen und dabei nur den Weg bis zum Eingang seines Baus mit Kleeblättern auslegen.

Überprüfen Sie auch, ob ihre entwickelten Programme das Gewünschte leisten.

Page 18: Algorithmisches Problemlösen mit Kara Klaus Becker 2008.

18 Aufgabe

Ändern Sie das Programm so ab, dass die folgende Endsituation erreicht werden.

vorher * Kara soll zur hinteren Wand laufen und die Lücken zwischen den Kleeblättern mit weiteren Kleeblättern auffüllen.

while not kara.treeFront(): if kara.onLeaf(): kara.removeLeaf() kara.move()kara.turnLeft()kara.turnLeft()

Überprüfen Sie auch, ob ihre entwickelten Programme das Gewünschte leisten.

Page 19: Algorithmisches Problemlösen mit Kara Klaus Becker 2008.

19 Bedingungen

Eine Bedingung wird mit Hilfe von elementaren Bedingungen und logischen Operatoren aufgebaut.

elementare Bedingungkara.treeFront()

True / False

logischer Operator

not kara.treeFront()

Operation Bedeutung

treeFront() Baum vorne?treeLeft() Baum links?treeRight() Baum rechts?onLeaf() auf einem Kleeblatt?

Page 20: Algorithmisches Problemlösen mit Kara Klaus Becker 2008.

20 Exkurs: logische Operatoren

Eine Bedingung wird mit Hilfe von elementaren Bedingungen und logischen Operatoren aufgebaut.

a b a and b

False False False

False True False

True False False

True True True

konmplexe Bedingung

SOLANGE nicht (Baum_links und Baum_rechts): weiter_gehen

a b a or b

False False False

False True True

True False True

True True True

a not a

False True

True False

Konjunktion

DisjunktionNegation und oder

nicht

Page 21: Algorithmisches Problemlösen mit Kara Klaus Becker 2008.

21 Solange-Anweisung

Eine Solange-Anweisung dient dazu, wiederholte Abläufe zu beschreiben. Sie ist aus einer Bedingung und einer (eventuell einelementigen) Anweisungssequenz aufgebaut.

solange nicht vor_baum: kleeblatt_hinlegen schritt_weiter

while [Bedingung]: [Anweisungssequenz]

solange [Bedingung]: [Anweisungssequenz]

Implementierung in PythonKara

Page 22: Algorithmisches Problemlösen mit Kara Klaus Becker 2008.

22 Solange-Anweisung

Eine Solange-Anweisung dient dazu, wiederholte Abläufe zu beschreiben. Sie ist aus einer Bedingung und einer (eventuell einelementigen) Anweisungssequenz aufgebaut.

solange nicht vor_baum: kleeblatt_hinlegen schritt_weiter

kein Schleifendurchlauf

Endlosschleife

Page 23: Algorithmisches Problemlösen mit Kara Klaus Becker 2008.

23 Wenn-Anweisung

Eine Wenn-Anweisung dient dazu, alternative Abläufe bzw. Fallunterscheidungen zu beschreiben.

zweiseitige Variante

WENN [Bedingung]: [Anweisungssequenz]SONST: [Anweisungssequenz]

if [Bedingung]: [Anweisungssequenz]else: [Anweisungssequenz]

WENN auf_kleeblatt: kleeblatt_aufhebenSONST: kleeblatt_hinlegen

Page 24: Algorithmisches Problemlösen mit Kara Klaus Becker 2008.

24 Wenn-Anweisung

Eine Wenn-Anweisung dient dazu, alternative Abläufe bzw. Fallunterscheidungen zu beschreiben.

WENN [Bedingung]: [Anweisungssequenz]

if [Bedingung]: [Anweisungssequenz]

einseitige Variante

WENN auf_kleeblatt: kleeblatt_aufheben

Page 25: Algorithmisches Problemlösen mit Kara Klaus Becker 2008.

25 Kontrollstrukturen

Kontrollstrukturen dienen dazu, den Ablauf der Ausführungsschritte festzulegen. Wesentliche Kontrollstrukturen sind die Sequenzbildung, die Fallunterscheidung und die Wiederholung.

Flussdiagramme

Programmablaufpläne

Page 26: Algorithmisches Problemlösen mit Kara Klaus Becker 2008.

26 Kontrollstrukturen

Kontrollstrukturen dienen dazu, den Ablauf der Ausführungsschritte festzulegen. Wesentliche Kontrollstrukturen sind die Sequenzbildung, die Fallunterscheidung und die Wiederholung.

Struktogramme

Sequenzbildung

Fallunterscheidung

Wiederholung

Page 27: Algorithmisches Problemlösen mit Kara Klaus Becker 2008.

27 Aufgaben

Problem: Kara soll Kleeblätter um den Bau legen.

Aufgabe: Ergänze das Struktogramm zu einem Algorithmus zur Lösung des Problems.

Bedingungen:

* nicht Baum_links * nicht Baum_rechts

Elementare Anweisungen:

* weiter_gehen * weiter_gehen * weiter_gehen * rechts_drehen * rechts_drehen * Kleeblatt_hinlegen

Page 28: Algorithmisches Problemlösen mit Kara Klaus Becker 2008.

28 Aufgaben

siehe www.inf-schule.de

Page 29: Algorithmisches Problemlösen mit Kara Klaus Becker 2008.

29 Teil 4

Teilalgorithmen

Page 30: Algorithmisches Problemlösen mit Kara Klaus Becker 2008.

30 Problemzerlegung

Problem: Kara soll mit den an der hinteren Wand abgelegten Blättern umziehen.

Teilprobleme: in die rechte hintere Ecke laufen das nächste Kleeblatt suchen das gefundene Kleeblatt aufheben zum Ausgang des Baus laufen zum Eingang des anderen Baus laufen in die rechte hintere Ecke laufen die Stelle suchen, an der das Blatt abgelegt werden kann das transportierte Kleeblatt ablegen, falls nicht schon ein Kleeblatt hier liegt zum Ausgang des Baus laufen zum Eingang des anderen Baus laufen

Page 31: Algorithmisches Problemlösen mit Kara Klaus Becker 2008.

31 Teile und herrsche

Problem: Kara soll mit den an der hinteren Wand abgelegten Blättern umziehen.

laufe_in_die_rechte_hintere_Ecke SOLANGE auf_Kleeblatt: entferne_Kleeblatt laufe_zum_Ausgang laufe_zum_Eingang_des_anderen_Baus laufe_in_die_rechte_hintere_Ecke suche_einen_leeren_Platz WENN nicht auf_Kleeblatt: lege_Kleeblatt_ab laufe_zum_Ausgang laufe_zum_Eingang_des_anderen_Baus laufe_in_die_rechte_hintere_Ecke suche_ein_kleeblatt laufe_zum_Ausgang laufe_zum_Eingang_des_anderen_Baus

Teile und herrsche ist eine Problemlösestrategie, bei der ein Problem immer weiter in Teilprobleme zerlegt wird, bis sich diese einfach lösen lassen. Aus den Lösungen der Teilprobleme wird dann die Lösung des Gesamtproblems zusammengesetzt.

Page 32: Algorithmisches Problemlösen mit Kara Klaus Becker 2008.

32 Unterprogramme

Eine Prozedur ist ein Unterprogramm zur Lösung eines Teilproblems.

# Unterprogramme

def bauWechseln(): kara.move() while not (kara.treeLeft() and kara.treeRight()): kara.move()

def inEcke(): ...

def blattSuchen(): ...

def zumAusgang(): ...

def platzSuchen(): ...

# Hauptprogramm

inEcke()blattSuchen()while kara.onLeaf(): kara.removeLeaf() zumAusgang() bauWechseln() inEcke() platzSuchen() if not kara.onLeaf(): kara.putLeaf() zumAusgang() bauWechseln() inEcke() blattSuchen() zumAusgang()bauWechseln()

Prozedurdeklaration

Prozeduraufruf

Vorteile: klare Strukturierung; Vermeidung von Codeduplizierung

Page 33: Algorithmisches Problemlösen mit Kara Klaus Becker 2008.

33 Unterprogramme mit Rückgaben

Problem: Kara soll den Eingang des Baus suchen.

laufe_in_die_rechte_hintere_Ecke SOLANGE auf_Kleeblatt: entferne_Kleeblatt laufe_zum_Ausgang laufe_zum_Eingang_des_anderen_Baus laufe_in_die_rechte_hintere_Ecke suche_einen_leeren_Platz WENN nicht auf_Kleeblatt: lege_Kleeblatt_ab laufe_zum_Ausgang laufe_zum_Eingang_des_anderen_Baus laufe_in_die_rechte_hintere_Ecke suche_ein_kleeblatt laufe_zum_Ausgang laufe_zum_Eingang_des_anderen_Baus

Teile und herrsche ist eine Problemlösestrategie, bei der ein Problem immer weiter in Teilprobleme zerlegt wird, bis sich diese einfach lösen lassen. Aus den Lösungen der Teilprobleme wird dann die Lösung des Gesamtproblems zusammengesetzt.

Page 34: Algorithmisches Problemlösen mit Kara Klaus Becker 2008.

34 Unterprogramme mit Rückgaben

# Unterprogramme

def bauGefunden(): if kara.treeFront() or kara.treeRight(): return True else: return False

def imEingang(): if kara.treeLeft() and kara.treeRight(): return True else: return False

def umBaum(): ...

def umdrehen(): kara.turnLeft() kara.turnLeft()

# Hauptprogramm

kara.putLeaf()while not bauGefunden(): kara.move() if kara.onLeaf(): kara.removeLeaf() kara.turnRight() kara.move() kara.turnLeft() kara.putLeaf()umdrehen()while not kara.onLeaf(): kara.move()kara.removeLeaf()umdrehen()while not bauGefunden(): kara.move()if kara.treeFront(): kara.turnLeft()umBaum()

Eine Funktion ist ein Unterprogramm, das einen Rückgabewert als Ergebnis liefert.

Funktionsdeklaration

Prozeduraufruf

Prozedurdeklaration

Funktionsaufruf

Page 35: Algorithmisches Problemlösen mit Kara Klaus Becker 2008.

35

Verwendung von Unterprogrammen

# Unterprogramme

def bauGefunden(): ...

def imEingang(): if kara.treeLeft() and kara.treeRight(): return True else: return False

def umBaum(): while not imEingang(): if kara.treeRight(): kara.move() else: kara.turnRight() kara.move()

def umdrehen(): ...

# Hauptprogramm

kara.putLeaf()while not bauGefunden(): kara.move() if kara.onLeaf(): kara.removeLeaf() kara.turnRight() kara.move() kara.turnLeft() kara.putLeaf()umdrehen()while not kara.onLeaf(): kara.move()kara.removeLeaf()umdrehen()while not bauGefunden(): kara.move()if kara.treeFront(): kara.turnLeft()umBaum()

Eine Prozedur / Funktion muss deklariert sein, bevor sie aufgerufen werden kann.

erst deklarieren

dann aufrufen

Page 36: Algorithmisches Problemlösen mit Kara Klaus Becker 2008.

36

Verwendung von Unterprogrammen

# Unterprogramme

...

################################ im Eingang()# es wird getestet, ob Kara sich im Eingang des # Baus befindet.###############################

def imEingang(): if kara.treeLeft() and kara.treeRight(): return True else: return False

...

# Hauptprogramm

kara.putLeaf()while not bauGefunden(): kara.move() if kara.onLeaf(): kara.removeLeaf() kara.turnRight() kara.move() kara.turnLeft() kara.putLeaf()umdrehen()while not kara.onLeaf(): kara.move()kara.removeLeaf()umdrehen()while not bauGefunden(): kara.move()if kara.treeFront(): kara.turnLeft()umBaum()

Sprechende Bezeichner und Kommentare erleichtern das Verständnis.

sprechender Bezeichner

Kommentar

Page 37: Algorithmisches Problemlösen mit Kara Klaus Becker 2008.

37 Unterprogramme mit Parametern

Problem: Kara soll ein rechteckiges Spielfeld mit Kleeblättern abstecken.

# Unterprogramme

def vorwaerts(schritte): while schritte > 0: kara.move() schritte = schritte - 1

Parameter sind Platzhalter, mit deren Hilfe man Daten zur Laufzeit an Unterprogramme übergeben kann.

# Hauptprogramm

vorwaerts(5)kara.turnRight()vorwaerts(3)kara.turnRight()vorwaerts(5)kara.turnRight()vorwaerts(3)kara.turnRight()

Parameter aktueller Wert

Page 38: Algorithmisches Problemlösen mit Kara Klaus Becker 2008.

38 Unterprogramme mit Parameter

# Unterprogramme

def vorwaerts(schritte): while schritte > 0: kara.move() schritte = schritte - 1

def rechteck(laenge, breite): vorwaerts(laenge) kara.putLeaf() kara.turnRight() vorwaerts(breite) kara.putLeaf() kara.turnRight() vorwaerts(laenge) kara.putLeaf() kara.turnRight() vorwaerts(breite) kara.putLeaf() kara.turnRight()

# Hauptprogramm

rechteck(5, 3)

Mit Hilfe von Parametern kann man Prozeduren flexibel gestalten.

Page 39: Algorithmisches Problemlösen mit Kara Klaus Becker 2008.

39 Teil 5

Algorithmen mit Variablen

Page 40: Algorithmisches Problemlösen mit Kara Klaus Becker 2008.

40 Ein Zählproblem

Problem: Kara soll die Welt mit Kleeblättern in zwei Bereiche aufteilen.

Version 1: Kara läuft geradeaus los.

Version 2: Kara läuft erst einmal um den Bau herum und legt dann die Trennlinie aus Kleeblättern bis zum Eingang.

Page 41: Algorithmisches Problemlösen mit Kara Klaus Becker 2008.

41

Problemlösung mit einer Zählvariablen

Problem: Kara soll die Welt mit Kleeblättern in zwei Bereiche aufteilen.

kara.move()kara.turnRight()kara.move()zaehler = 0while kara.treeRight(): zaehler = zaehler + 1 kara.move()kara.turnRight()kara.move()while kara.treeRight(): kara.move()kara.turnRight()kara.move()while zaehler > 0: zaehler = zaehler - 1 kara.move()kara.turnLeft()while not kara.treeLeft(): kara.putLeaf() kara.move()

Page 42: Algorithmisches Problemlösen mit Kara Klaus Becker 2008.

42 Variable

Variablen dienen in der Informatik dazu, Daten zu verwalten, die in Speicherzellen abgelegt sind. Jede Variable hat einen Namen, mit dem man auf den in der zugehörigen Speicherzelle abgelegten Datenwert (den sog. Variablenwert) zugreifen kann.

kara.move()kara.turnRight()kara.move()zaehler = 0while kara.treeRight(): zaehler = zaehler + 1 kara.move()kara.turnRight()kara.move()while kara.treeRight(): kara.move()kara.turnRight()kara.move()while zaehler > 0: zaehler = zaehler - 1 kara.move()kara.turnLeft()...

Page 43: Algorithmisches Problemlösen mit Kara Klaus Becker 2008.

43 Wertzuweisung

Eine Veränderung eines Variablenwerts bzw. des zugehörigen Speicherzelleninhalts kann mit Hilfe einer Wertzuweisung an die entsprechende Variable erfolgen.

kara.move()kara.turnRight()kara.move()zaehler = 0while kara.treeRight(): zaehler = zaehler + 1 kara.move()kara.turnRight()kara.move()while kara.treeRight(): kara.move()kara.turnRight()kara.move()while zaehler > 0: zaehler = zaehler - 1 kara.move()kara.turnLeft()...

zaehler = zaehler + 1

Auswertung einer Wertzuweisung: Erst wird der Wert des Terms mit Hilfe des aktuellen Variablenzustands ermittelt. Dieser Wert wird dann der Variablen als neuer aktueller Wert zugewiesen.

Variable

Term

Page 44: Algorithmisches Problemlösen mit Kara Klaus Becker 2008.

44 Noch ein Zählproblem

Problem: Kara soll die Schritte bis zum Eingang zählen und sich im Eingang so oft drehen, wie Schritte zum Erreichen des Baus erforderlich waren.

gefunden = Falseabstand = 0while not gefunden: kara.move() abstand = abstand + 1 gefunden = kara.treeLeft() and kara.treeRight() while abstand > 0: kara.turnLeft() kara.turnLeft() kara.turnLeft() kara.turnLeft()

Page 45: Algorithmisches Problemlösen mit Kara Klaus Becker 2008.

45 Datentypen

Ein Datentyp beschreibt eine Menge von Datenobjekten, die alle die gleiche Struktur haben und mit denen die gleichen Operationen ausgeführt werden können.

abstand = abstand + 1

Wahrheitswert

Rechnen mit Zahlen

gefunden = Falseabstand = 0while not gefunden: kara.move() abstand = abstand + 1 gefunden = kara.treeLeft() and kara.treeRight() while abstand > 0: kara.turnLeft() kara.turnLeft() kara.turnLeft() kara.turnLeft()

Zahl

gefunden = kara.treeLeft() and kara.treeRight()

logische Verknüpfung mit Wahrheitswerten

Zählvariable

boolesche V.

Page 46: Algorithmisches Problemlösen mit Kara Klaus Becker 2008.

46 Aufgaben

siehe www.inf-schule.de

Page 47: Algorithmisches Problemlösen mit Kara Klaus Becker 2008.

47 Teil 6

Miniprojekt - Kara lernt rechnen

Page 48: Algorithmisches Problemlösen mit Kara Klaus Becker 2008.

48 Ein Zählproblem

Problem: Kara soll Rechenaufgaben mit Kleeblättern ausführen.

Einfach: Addition

Nicht schwer: Subtraktion, Vergleich

Eher schwer: Multiplikation, Division

Herausforderung: Potenzierung, Wurzelziehen, ...

Page 49: Algorithmisches Problemlösen mit Kara Klaus Becker 2008.

49 Auftrag

Kara soll rechnen lernen. Entwickeln Sie Algorithmen und entsprechende Programme für verschiedene Rechenoperationen.

* Benutzen Sie keine Variablen. Kara soll nur mit Kleeblättern operieren. * Wählen Sie mindestens zwei Rechenoperationen aus, für die Sie die Algorithmen und Programme entwickeln. Besonders einfach ist die Addition. Nicht sonderlich schwierig ist die Subtraktion. Hier müssen Sie sich nur überlegen, was man bei Aufgaben wie 3-5 macht. Schwieriger sind die Multiplikation und Division. Wer sich weit vorwagen möchte, kann auch das Potenzieren oder Wurzelziehen bearbeiten. * Alle wesentlichen Arbeitsergebnisse sollen dokumentiert werden. Was alles hier dazu gehört, wird auf der folgenden Folie gezeigt.

Page 50: Algorithmisches Problemlösen mit Kara Klaus Becker 2008.

50

Arbeitsschritte und ihre Dokumentation

ProblemAuftrag

Ermittlung der AnforderungenPflichtenheft

(Prototyp)

Entwicklung eines Modells

Algorithmus

Implementierung des Modells

LauffähigesProgramm

Testen des Programms

AuftraggerechtesProdukt

Informelle Problembeschreibung: Kara soll Rechenaufgaben mit Kleeblättern ausführen.

Präzise ProblemspezifikationBeschreibung der Anforderungen an das Programm

Algorithmus in Struktogrammform / ...

Strukturiertes und kommentiertes Programm

Testprotokoll über die untersuchten Testfälle