Algorithmisches Problemlösen mit Kara

Slides:



Advertisements
Ähnliche Präsentationen
Algorithmen und Datenstrukturen
Advertisements

Informatik II: Algorithmen und Datenstrukturen SS 2013
Tipps & Tricks zu benutzerdefinierten Animationspfaden
WR + WS ZEIGEN Neues aus der Mathematik.
Suche in Texten (Stringsuche )
Bitte zu zweit an einen Rechner setzen
Klicke Dich mit der linken Maustaste durch das Übungsprogramm!
FH-Hof Optimierungsverfahren für kombinatorische Probleme Richard Göbel.
Übung 6.1Turing-Maschine 1.Machen Sie sich mit der Funktionsweise des Busy Beaver-Programms vertraut Vollziehen sie die 11 Schritte der ersten Turing-Tabelle.
Algorithmus. Ein Kochrezept, zum Beispiel: Kartoffelbrei.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (27 – Kürzeste Wege) Prof. Th. Ottmann.
Datenbankentwurf mit Hilfe des ER-Modells entwickeln
Algorithmisches Problemlösen mit Kara
Bedingte Wiederholung (Buch S119)
Algorithmik Anweisungen (Buch S111)
Teil 4 Kontrollstrukturen.
1 Teil 4 Übung: Uhr. 2 Zielsetzung Ziel ist es, mit Hilfe objektorientierter Modellierung ein System zu entwickeln, mit dem eine einfache Uhr simuliert.
Wie macht man ein Sudoku? Transformations-Methode:
Java programmieren mit JavaKara
Algorithmisches Problemlösen mit Scratch
Kapitel 1 – Erste Schritte
Anlegen von Ordnern, speichern und Öffnen von Bildern und Briefen
Ich möchte gerne mehrere Bilder auf ein Folie
Wenn Programme Entscheidungen fällen müssen, dann …
Wie man eine einfache Präsentation erstellt...
Erstellen und bearbeiten von Diagrammen –
Willkommen bei Sycarus – dem Mathematikprogramm, das neue Wege geht.
Algorithmisches Problemlösen mit Kara
Unterwegs im Internet.
Brainstorming Hinweis: Susi Sonne Aufgabe 1: Ansichten wechseln
Auf Wunsch einer einzelnen Dame
1.) Programmaufruf und Einloggen:
Arbeitsanweisungen.
Moin. Ich benutze PPT 2002 und möchte drei Bilder nacheinander 1
Autor: Peter Pfeiffer Seite: Peter Pfeiffer Memeler Str Bad Oeynhausen Hilfe und Tipps Zu dem Eingabemodul und den Exceldateien Bitte.
Zum verständlich machen, wozu die Trigger-Funktion geeignet ist,
Powerpoint 2010 Start Funker Panorama: Zuschauer auf der Elbbrücke beim Weinfest 2011 in Meißen.
BIT – Schaßan – WS 02/03 Basisinformationstechnologie HK-Medien Teil 1, 11.Sitzung WS 02/03.
Didaktische Programminterpreter
Hallo Ich möchte einen Text einer Folie nicht einfach nur einfliegen lassen, sondern genau diesen Text, der schon an einer bestimmten Stelle steht, vergrößern.
Wie man eine einfache Präsentation erstellt...
Bereit ???? Nimm dir 10 Minuten Zeit. Ich versuche es dir zu erklären.
EINFÜHRUNG in HOT POTATOES
Informatik II Grundlagen der Programmierung Programmieren in C Programmstrukturen / Kontrollstrukturen Hochschule Fulda – FB ET Sommersemester 2014.
Dynamische Webseiten-Generierung
Agenda für heute, 7. April, 2005 Bedingte ProgrammausführungBedingte Programmausführung Algorithmische Grundlagen Vergleichsoperatoren, Wahrheitswerte.
Programmieren - wie einsteigen ?
PHP: Operatoren und Kontrollstrukturen
Das Traveling Salesman Problem (TSP)
Hier eine mögliche Antwort:
Stoppen der Eingabeaufforderung einer Abfrage j drücken Sie dann F5, oder klicken Sie auf Bildschirmpräsentation > Von Beginn an, um den Kurs zu starten.
Management, Führung & Kommunikation
Gewaltfreie Kommunikation (GfK)
Schleifen
Die Vereinsverwaltung unter Windows 2000 Anhand der folgenden Präsentation werden Sie mit der Verwaltung des Vereins unter Windows 2000 vertraut gemacht.
Mehrfachausführungen Schleifen in VB 2010 ee. Programmidee: Der Anwender gibt eine Zahl ein, und das Programm gibt die Mehrfachen dieser Zahl aus (das.
Berechenbarkeit Klaus Becker Berechenbarkeit.
Grammatikalische Begriffe im Unterricht
Das Java-Hamster-Modell
JavaKara programmieren: Methoden
Wann ist eine Funktion (über den natürlichen Zahlen) berechenbar?
Pool Informatik, Sj 11/12 GZG FN W.Seyboldt 1 Pool Informatik 5 GZG FN Sj. 11/12 Kopieren, Daten, Programme.
Programmieren 1 C++ Aufgaben / Übungen.
Programmiersprachen II Vorbesprechung Klausur Prof. Dr. Reiner Güttler Fachbereich GIS HTW.
Reihenfolge der Operatoren
ResA am Arbeitsplatz Das Vorgehen ist angelehnt an „5 S“ und bietet Ihnen die Möglichkeit das Konzept der 5 Disziplinen ressourcenschonenden Arbeitens.
1 Prozesse im Studiengangsmanagement Kontext: Neues Abschlussziel erstellen Neues Studienfach erstellen.
Class HelloWorldApp { public static void main(String[] args) {... } Grundkurs Inf - wie einsteigen ?
Graphen.
JavaKara programmieren: Verzweigungen
 Präsentation transkript:

Algorithmisches Problemlösen mit Kara Klaus Becker 2015

Kara

Teil 1 Ausführsystem Kara

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.

Kara direkt steuern Aufgabe: Kara steht hier vor einem Baumstumpf. Kara soll jetzt einmal um den Baum laufen und den Weg mit Kleeblättern auslegen. Benutze die Schaltflächen im Kara-Fenster, um diese Aufgabe zu erledigen. vorher nachher

Kara mit Anweisungen steuern Aufgabe: Stelle nochmal die Ausgangssituation wie oben her. Klicke jetzt auf die Schaltfläche [Programmieren]. Es öffnet sich ein neues Fenster, in das man Anweisungen zur Steuerung von Kara schreiben kann. Ergänze diese Anweisungen und lasse sie von Kara ausführen. Programmfenster Karaweltfenster

Fachkonzept - elementare Anweisung Aufruf einer Operation kara.move() elementare Anweisung Mit einem Aufruf einer Operation wird Kara aufgefordert, die betreffende Operation auszuführen. Solch ein Aufruf hat - hier im Kontext Kara - die Gestalt kara.operation. So führt etwa der Aufruf kara.move() dazu, dass Kara einen Schritt weiter geht. Die Steuerung von Kara erfolgt mit Hilfe von Anweisungen. Zur Bildung von Anweisungen stellt ein Ausführsystem wie PythonKara bestimmte Grundoperationen zur Verfügung. Solche direkt aus Grundoperationen gebildete Anweisungen nennt man auch elementare Anweisungen.

Fachkonzept - Anweisungssequenz kara.turnLeft() kara.putLeaf() kara.move() kara.turnRight() Eine Anweisungssequenz ist eine Folge von Anweisungen, die vom Ausführsystem der Reihe nach ausgeführt werden.

Übungen Aufgabe: Versuche, das Problem direkt mit Hilfe von Anweisungen zu lösen. Hierzu muss du Kara in Gedanken steuern und die jeweiligen Steueranweisungen in der richtigen Reihenfolge im Programmfenster notieren. Schafft du das gleich im ersten Anlauf?

Übungen Aufgabe: Kara möchte einen Pilz um einen Baumstumpf schieben. Entwickle erst sämtliche Anweisungen zur Lösung des Problems. Du musst dazu in Gedanken die Anweisungen alle ausführen. Teste anschließend, ob die Anweisungssequenz das Problem tatsächlich löst.

Fallunterscheidungen Teil 2 Fallunterscheidungen

Problem – Kleeblatt suchen Problem: Kara steht vor ihrem/seinem Bau und möchte das Kleeblatt, das sich irgendwo im Bau befindet, nach draußen befördern. vorher vorher vorher nachher nachher nachher

Ein Lösungsverfahren entwickeln Schritt weitergehen WENN auf einem Kleeblatt: Kleeblatt aufheben rechts drehen SONST: Kleeblatt hinlegen vorher nachher vorher nachher vorher nachher Aufgabe: Ergänze die fehlenden Teile.

Ein Lösungsverfahren implementieren Schritt weitergehen WENN auf einem Kleeblatt: Kleeblatt aufheben rechts drehen SONST: Kleeblatt hinlegen kara.move() if kara.onLeaf(): kara.removeLeaf() ... else: … kara.putLeaf() Python-Quelltext Aufgabe: Ergänze den Quelltext und teste, ob das Programm das Gewünschte leistet. Beachte, dass du alle drei Fälle testen musst. Achte auch hier besonders auf korrekte Einrückungen. Lösungsverfahren

Fachkonzept - Bedingung Kara kann die Umgebung mit Sensoren wahrnehmen. Die folgende Tabelle zeigt die Operationen, die Kara zur Aktivierung der Sensoren ausführen kann.

Fachkonzept - Bedingung Die Steuerung komplexerer Abläufe (wie Fallunterscheidungen und Wiederholungen) erfolgt mit Hilfe von Bedingungen. Die einfachsten Bedingungen, die mit Hilfe der Grundoperationen des Ausführsystems gebildet werden, nennt man auch elementare Bedingungen. … if kara.onLeaf(): ... else: elementare Bedingungen Komplexere Bedingungen lassen sich mit Hilfe logischer Operatoren aufbauen. … if not kara.treeFront(): ... else: Komplexe Bedingung

Fachkonzept - Fallunterscheidung Schritt weitergehen WENN auf einem Kleeblatt: # Fall 1 Kleeblatt aufheben rechts drehen SONST: WENN auf einem Kleeblatt: # Fall 2 SONST: # Fall 3 Kleeblatt hinlegen Fall 1 Fall 2 Fall 3

Fachkonzept - Fallunterscheidung Schritt weitergehen WENN auf einem Kleeblatt: # Fall 1 Kleeblatt aufheben rechts drehen SONST: WENN auf einem Kleeblatt: # Fall 2 SONST: # Fall 3 Kleeblatt hinlegen Eine Fallunterscheidung dient dazu, alternative Abläufe zu beschreiben.

Fachkonzept - Fallunterscheidung Flussdiagramm Struktogramm WENN [Bedingung]: [Anweisungssequenz] SONST: if [Bedingung]: [Anweisungssequenz] else: zweiseitige Fallunterscheidung

Fachkonzept - Fallunterscheidung Flussdiagramm Struktogramm WENN [Bedingung]: [Anweisungssequenz] if [Bedingung]: [Anweisungssequenz] einseitige Fallunterscheidung

Übungen Aufgabe: Gegeben sind zwei Mini-Programme. Erkläre mit Hilfe von Flussdiagrammen, dass beide Programme dasselbe leisten. if kara.onLeaf(): kara.removeLeaf() kara.move() else: if kara.onLeaf(): kara.removeLeaf() kara.move()

Übungen Aufgabe: Kara weiß nicht, ob und wie viele Kleeblätter sich in ihrem/seinem Bau befinden. Kara möchte sie alle einsammeln. vorher nachher

Teil 3 Wiederholungen

Problem – Baumreihe umlaufen Problem: Kara steht vor einer Baumreihe, weiß jedoch nicht, wie lang sie ist. Kara möchte um die Baumreihe laufen und den Weg mit Blättern auslegen. vorher nachher

Lösungsverfahren vorher nachher ... SOLANGE ein Baumstumpf rechts steht: ... while kara.treeRight(): Aufgabe: Ergänze die fehlenden Teile. Teste das fertige Programm

Ein ähnliches Problem vorher nachher Aufgabe: Löse das Problem analog.

Fachkonzept - Wiederholung Kleeblatt hinlegen links drehen Schritt weitergehen rechts drehen SOLANGE ein Baumstumpf rechts steht: Wiederholung Eine Wiederholung dient dazu, wiederholte Abläufe zu beschreiben.

Fachkonzept - Fallunterscheidung Flussdiagramm Struktogramm SOLANGE [Bedingung]: [Anweisungssequenz] while [Bedingung]: [Anweisungssequenz] Wiederholung mit Eintrittsbedingung

Übungen Aufgabe: Betrachte das folgende Kara-Programm: while not kara.treeFront(): kara.move() (a) Was leistet dieses Programm? Teste es mit geeigneten Kara-Welten. (b) Überlege dir, wie die Kara-Welt jeweils beschaffen sein muss, damit einer der folgenden Sonderfälle eintritt: - Die Schleife wird überhaupt nicht durchlaufen. - Kara gerät in eine Endlosschleife.

Übungen Aufgabe: Worin besteht der Unterschied zwischen den folgenden Programmen? Verdeutliche den Unterschied anhand konkreter Situationen. while not kara.treeFront(): kara.move() kara.putLeaf() while not kara.treeFront(): kara.move() kara.putLeaf()

Übungen Aufgabe: Kara steht im Eingang ihres/seines rechteckigen Baus. Kara soll in die hintere Ecke des Baus (siehe Abbildung) laufen. Beachte, dass der Kara-Bau verschiedene Ausmaße haben kann.

Übungen Aufgabe: Kara soll einmal um ihren/seinen Bau laufen und den Weg mit Kleeblättern auslegen. Aber Achtung, der rechteckige Kara-Bau kann ganz unterschiedliche Ausmaße haben. Die Beispiele zeigen zwei Möglichkeiten.

Teil 4 Algorithmen

Problem Problem: Kara ist auf der Suche nach einem Kleeblatt. Kara soll hierzu geradeaus weiterlaufen, bis sie/er ein Kleeblatt gefunden hat. Aber, es befinden sich manchmal Baumstümpfe im Weg. Kara muss diese Hindernisse dann umlaufen.

Ideen suchen Aufgabe: Am besten, du spielst selbst Kara und probierst verschiedene Problemsituationen erst einmal aus.

Ideen beschreiben Aufgabe: Beschreibe in deinen Worten, wie du vorgehen willst.

Ein Verfahren präzise beschreiben Aufgabe: Die Ablauflogik lässt sich oft sehr gut mit einem Struktogrammen beschreiben. Die Abbildung zeigt Bausteine eines solchen Struktogramms. Kannst du die fehlenden Teile ergänzen?

Ein Verfahren implementieren Aufgabe: Versuche, das in Struktogrammform entwickelte Verfahren in die Python-Sprache zu übersetzen. Teste das Programm mit verschiedenen Problemsituationen (u.a. den oben gezeigten).

Fachkonzept - Problemspezifikation Eine Problemspezifikation dient dazu, ein Problem möglichst präzise zu beschreiben Bsp. 1 Zustand vorher Zustand nachher Bsp. 2 Zustand vorher Zustand nachher Bsp. 3 Zustand vorher Zustand nachher Wir benutzen hier ein Verfahren zur Problembeschreibung, das in vielen Bereichen der Informatik angewandt wird. Wir beschreiben ein Problem mit Hilfe der Zustände, die das betrachtete System (hier: Kara und ihre/seine Welt) vor und nach der Problembearbeitung einnehmen soll. Zur Darstellung der Zustände benutzen wir häufig Bilder.

Fachkonzept - Algorithmus Ein Algorithmus ist eine Verarbeitungsvorschrift zur Lösung eines Problems, die so präzise formuliert ist, dass sie (zumindest im Prinzip) auch von einer Maschine abgearbeitet werden kann. SOLANGE nicht auf einem Kleeblatt: WENN vor einem Baum: links drehen Schritt weitergehen rechts drehen SOLANGE rechts ein Baum: SONST: Kleeblatt aufheben

Fachkonzept - Algorithmus Zur Darstellung von Algorithmen verwendet man die natürliche Sprache, Pseudo-Codes, Struktogramme, … SOLANGE nicht auf einem Kleeblatt: WENN vor einem Baum: links drehen Schritt weitergehen rechts drehen SOLANGE rechts ein Baum: SONST: Kleeblatt aufheben Pseudo-Code Struktogramm

Fachkonzept - Programm Ein Programm ist ein Algorithmus zur Lösung eines Problems, der in einer vorgegebenen Programmiersprache verfasst ist. while not kara.onLeaf(): if kara.treeFront(): kara.turnLeft() kara.move() kara.turnRight() while kara.treeRight(): else: kara.removeLeaf()

Bausteine von Algorithmen Wiederholung Fallunterscheidung Elementaranweisung

Bausteine von Algorithmen Schachtelung Sequenzbildung

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

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

Fehler in Algorithmen und Programmen Jeder macht Fehler. Algorithmisches Problemlösen ist eine anspruchsvolle Tätigkeit. Es ist ganz natürlich, wenn du dabei Fehler machst. Das kommt selbst bei Profis immer wieder vor. Kleeblatt suchen: SOLANGE nicht auf einem Kleeblatt, mache Folgendes: WENN vor einem Baum, dann den Baum / die Baumreihe umlaufen anschließend einen Schritt weitergehen das Kleeblatt aufheben Aufgabe: Was wurde hier bei der Ideensuche nicht berücksichtigt?

Fehler in Algorithmen und Programmen Jeder macht Fehler. Algorithmisches Problemlösen ist eine anspruchsvolle Tätigkeit. Es ist ganz natürlich, wenn du dabei Fehler machst. Das kommt selbst bei Profis immer wieder vor. Aufgabe: Hier hat sich ein Fehler in der Ablaufmodellierung eingeschlichen Findest du ihn?

Fehler in Algorithmen und Programmen Jeder macht Fehler. Algorithmisches Problemlösen ist eine anspruchsvolle Tätigkeit. Es ist ganz natürlich, wenn du dabei Fehler machst. Das kommt selbst bei Profis immer wieder vor. while not kara.onLeaf(): if kara.treeFront() kara.turnLeft() kara.move() kara.turnRight() while kara.treeRight(): else: kara.removeLeaf() Aufgabe: Bei der Übersetzung eines korrekten Algorithmus in ein lauffähiges Programm kann es zu weiteren Fehlern kommen. Welche wurden hier gemacht?

Fehler in Algorithmen und Programmen Grob unterscheiden lassen sich die folgenden beiden Fehlertypen: Logische Fehler sind Fehler in Algorithmen, bei denen die Ablauflogik nicht korrekt festgelegt ist. Syntaxfehler sind Fehler in Programmen, bei denen die Vorgaben der Programmiersprache nicht beachtet sind. Syntaxfehler werden in der Regel durch Fehlermedungen vom Ausführsystem angezeigt. Die Schwierigkeit besteht meist nur darin, die Fehlermeldungen zu verstehen. Schwieriger ist es, logische Fehler zu finden. Hier hilft es oft, den Algorithmus - für verschiedene Problemsituationen - Schritt für Schritt selbst auszuführen.

Übungen Aufgabe: T. hat das folgende Programm zur Lösung des Problems entwickelt. Das Programm enthält etliche Fehler. Suche und korrigiere sie. Problem: Kara soll die Kleeblätter, die als Rechteck ausgelegt sind, alle einsammeln. while kara.onLeaf(): kara.removeleaf() kara.move() kara.turnRight()

Übungen Aufgabe: Entwickle zunächst eine Lösungsidee. Beschreibe sie in Worten. Formuliere anschließend einen Algorithmus. Entwickle und teste dann erst ein zum Algorithmus passendes Programm. Problem: Kara soll Bäume mit Kleeblättern auslegen. Zu Beginn befindet sich Kara unten im Baumstamm. Kara soll anschließend ein mit Bäumen umrandetes Gebiet (das die Form eines Baumes hat) mit Kleeblättern auslegen. Wir gehen dabei davon aus, dass alle Felder direkt vom Baumstamm aus erreichbar sind.

Teil 5 Unterprogramme

Problem Problem: Kara soll eine Runde um einen markierten Platz laufen. Die Markierungspfosten stehen schon. Damit man den Weg sieht, soll er mit Kleeblättern ausgelegt werden.

Algorithmus ALGORITHMUS Runde laufen Kleeblattreihe bis Baum legen um einen Pfosten laufen Kleeblattreihe bis Baum legen um einen Pfosten laufen

Ein Programm ALGORITHMUS Runde laufen # Kleeblattreihe bis Baum legen um einen Pfosten laufen # Kleeblattreihe bis Baum legen while not kara.treeFront(): kara.putLeaf() kara.move() # um Baum laufen kara.turnRight() kara.turnLeft() … Codeduplizierung

Kara lernt neue Befehle # Unterprogramm def kleeblattreiheBisBaumLegen(): while not kara.treeFront(): kara.putLeaf() kara.move() # Hauptprogramm kleeblattreiheBisBaumLegen()

Ein besseres Programm ALGORITHMUS Runde laufen # Unterprogramm Kleeblattreihe bis Baum legen um einen Pfosten laufen # Unterprogramm def kleeblattreiheBisBaumLegen(): while not kara.treeFront(): kara.putLeaf() kara.move() … # Hauptprogramm kleeblattreiheBisBaumLegen() Aufgabe: Ergänze die fehlenden Teile.

Fachkonzept – Unterprogramm Ein Unterprogramm ist eine eigenständige Programmeinheit zur Lösung eines Teilproblems. # Unterprogramm kleeblattreiheBisBaumLegen # vorher: # Kara sieht (in einiger Entfernung) vor sich einen Baum. # nachher: # Kara hat den gesamten Weg bis zum Baum mit Kleeblättern ausgelegt. def kleeblattreiheBisBaumLegen(): while not kara.treeFront(): kara.putLeaf() kara.move() # Hauptprogramm kleeblattreiheBisBaumLegen() Kommentare Unterprogrammdeklaration Unterprogrammaufruf Vorteile von Unterprogrammen: Unterprogramme tragen dazu bei, Programme übersichtlich zu gestalten. Unterprogramme dienen dazu, Code-Duplizierungen zu vermeiden.

Teil 6 Problemzerlegung

Ein etwas schwierigeres Problem Kara will ein Fußballfeld mit Kleeblättern auslegen. Die Eckpfosten stehen schon. Das Problem ist recht komplex. In solch einer Situation ist es meist günstig, das Problem in geeignete Teilprobleme zu zerlegen.

Zerlegung in Teilprobleme Fussballfeld mit Kleeblättern auslegen zur Ausgangsposit. gehen Spielfeldrand mit Blättern auslegen ins Innere des Spielfelds gehen das Innere mit Blättern auslegen Zur Endposition gehen

Lösung des Ausgangsproblems ALGORITHMUS Fussballfeld mit Kleeblättern auslegen zur Ausgangsposition gehen den Spielfeldrand mit Blättern auslegen ins Innere des Spielfelds gehen das Innere mit Blättern auslegen zur Endposition gehen zur Ausgangsposit. gehen Spielfeldrand mit Blättern auslegen ins Innere des Spielfelds gehen das Innere mit Blättern auslegen zur Endposition gehen

Zerlegung in Teilprobleme Spielfeldrand mit Blättern auslegen Kleeblattreihe bis Baum legen um einen Pfosten laufen

Lösung des Problems ALGORITHMUS Spielfedrand m. Kleeblättern auslegen Kleeblattreihe bis Baum legen um einen Pfosten laufen Kleeblattreihe bis Baum legen um einen Pfosten laufen

Zerlegung in Teilprobleme Das Innere mit Blättern auslegen Aufgabe: In welche Teilprobleme lässt sich das beschriebene Problem zerlegen?

Lösung des Problems ALGORITHMUS Innere mit Kleeblättern auslegen Aufgabe: Wie lässt sich das Teilproblem jetzt lösen?

Lösung „einfacher“ Probleme ALGORITHMUS Spielfedrand m. Kleeblättern auslegen Kleeblattreihe bis Baum legen um einen Pfosten laufen ALGORITHMUS Kleeblattreihe bis Baum legen SOLANGE nicht vor einem Baum: Kleeblatt hinlegen Schritt weitergehen ALGORITHMUS um einen Pfosten laufen „Einfache“ Probleme werden nicht weiter in Teilprobleme zerlegt, sondern direkt gelöst.

Fachkonzept – „teile und herrsche“ Teile und herrsche ist eine Problemlösestrategie, bei der ein Problem immer weiter in Teilprobleme zerlegt wird, bis diese sich einfach lösen lassen. Aus den Lösungen der Teilprobleme wird dann die Lösung des Gesamtproblems zusammengesetzt. ALGORITHMUS Spielfedrand m. Kleeblättern auslegen Kleeblattreihe bis Baum legen um einen Pfosten laufen … Problem zerlegen Lösung zusammensetzen ALGORITHMUS Kleeblattreihe bis Baum legen SOLANGE nicht vor einem Baum: Kleeblatt hinlegen Schritt weitergehen Teilproblem lösen ALGORITHMUS um einen Pfosten laufen Rechts drehen Schritt weitergehen Links drehen

Übungen Aufgabe: Entwickle passende Unterprogramme zur Lösung des Fussballfeldproblems. Orientiere dich an den vorgenommenen Problemzerlegungen.

Übungen Aufgabe: Kara soll die Kleeblätter, die sich in ihrem/seinem Bau befinden, alle einsammeln. Löse das Problem mit der Problemlösestrategie „teile und herrsche“.

Algorithmen mit Variablen Teil 7 Algorithmen mit Variablen

Ein Zählproblem Problem: Kara soll alle Kleeblätter auf dem Weg zu einem Baum einsammeln und sie vor dem Baum der Reihe nach auslegen.

Lösung des Zählproblems Kara soll alle Kleeblätter auf dem Weg zu einem Baum einsammeln und sie vor dem Baum der Reihe nach auslegen. ALGORITHMUS Kleeblätter einsammeln und auslegen setze zaehler auf 0 SOLANGE nicht vor einem Baum: WENN auf einem Kleeblatt: erhöhe zaehler um 1 Kleeblatt aufheben einen Schritt weitergehen ... Aufgabe: Wie könnte der Algorithmus fortgesetzt werden?

Implementierung einer Lösung Problem: Kara soll alle Kleeblätter auf dem Weg zu einem Baum einsammeln und sie vor dem Baum der Reihe nach auslegen. zaehler = 0 while not kara.treeFront(): if kara.onLeaf(): zaehler = zaehler + 1 kara.removeLeaf() kara.move() ... Aufgabe: Was bewirken die Anweisungen zaehler = 0 bzw. zaehler = zaehler + 1? Teste das bereits vorgegebene Programm. Versuche, das Programm fertigzustellen.

Variable Variablen dienen in der Informatik dazu, Daten zu verwalten. Eine Variable ist ein Name, der (in der Regel) mit einem Datenwert verknüpft ist. zaehler = 0 while not kara.treeFront(): if kara.onLeaf(): zaehler = zaehler + 1 kara.removeLeaf() kara.move()

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() zaehler = 0 while kara.treeRight(): zaehler = zaehler + 1 while zaehler > 0: zaehler = zaehler - 1 kara.turnLeft() ... zaehler = zaehler + 1 Variable Term 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.

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 = False abstand = 0 while not gefunden: kara.move() abstand = abstand + 1 gefunden = kara.treeLeft() and kara.treeRight() while abstand > 0: kara.turnLeft()

logische Verknüpfung mit Wahrheitswerten 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. Zahl Wahrheitswert gefunden = False abstand = 0 while not gefunden: kara.move() abstand = abstand + 1 gefunden = kara.treeLeft() and kara.treeRight() while abstand > 0: kara.turnLeft() Zählvariable boolesche V. Rechnen mit Zahlen abstand = abstand + 1 logische Verknüpfung mit Wahrheitswerten gefunden = kara.treeLeft() and kara.treeRight()

Miniprojekt - Kara lernt rechnen Teil 8 Miniprojekt - Kara lernt rechnen

Rechenprobleme Problem: Kara soll Rechenaufgaben mit Kleeblättern ausführen. Einfach: Addition Nicht schwer: Subtraktion, Vergleich Eher schwer: Multiplikation, Division Herausforderung: Potenzierung, Wurzelziehen, ...

Auftrag Kara soll rechnen lernen. Entwickele Algorithmen und entsprechende Programme für verschiedene Rechenoperationen. * Benutze keine Variablen. Kara soll nur mit Kleeblättern operieren. * Wähle mindestens zwei Rechenoperationen aus, für die du die Algorithmen und Programme entwickelst. Besonders einfach ist die Addition. Nicht sonderlich schwierig ist die Subtraktion. Hier muss man 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.

Arbeitsschritte und ihre Dokumentation Problem Auftrag Informelle Problembeschreibung: Kara soll Rechenaufgaben mit Kleeblättern ausführen. Ermittlung der Anforderungen Pflichtenheft (Prototyp) Präzise Problemspezifikation Beschreibung der Anforderungen an das Programm Entwicklung eines Modells Algorithmus Algorithmus in Struktogrammform / ... Implementierung des Modells Lauffähiges Programm Strukturiertes und kommentiertes Programm Testen des Programms Auftraggerechtes Produkt Testprotokoll über die untersuchten Testfälle