Algorithmisches Problemlösen

Slides:



Advertisements
Ähnliche Präsentationen
Anzahl der ausgefüllten und eingesandten Fragebögen: 211
Advertisements

Vorlesung: 1 Betriebliche Informationssysteme 2003 Prof. Dr. G. Hellberg Studiengang Informatik FHDW Vorlesung: Betriebliche Informationssysteme Teil3.
Die Projektgruppe heißt Sie herzlichst willkommen
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Telefonnummer.
Modelle und Methoden der Linearen und Nichtlinearen Optimierung (Ausgewählte Methoden und Fallstudien) U N I V E R S I T Ä T H A M B U R G November 2011.
1 JIM-Studie 2010 Jugend, Information, (Multi-)Media Landesanstalt für Kommunikation Baden-Württemberg (LFK) Landeszentrale für Medien und Kommunikation.
= = = = 47 = 47 = 48 = =
Statistiken und Tabellen
Rechneraufbau & Rechnerstrukturen, Folie 2.1 © W. Oberschelp, G. Vossen W. Oberschelp G. Vossen Kapitel 2.
Internet facts 2008-II Graphiken zu dem Berichtsband AGOF e.V. September 2008.
Vorlesung: 1 Betriebliche Informationssysteme 2003 Prof. Dr. G. Hellberg Studiengang Informatik FHDW Vorlesung: Betriebliche Informationssysteme Teil2.
Differentielles Paar UIN rds gm UIN
Prof. Dr. Bernhard Wasmayr
Studienverlauf im Ausländerstudium
Dieter Bergmann, Lichtenfels
Bedingte Wiederholung (Buch S119)
Algorithmik Anweisungen (Buch S111)
Wiederholung mit fester Anzahl (Buch S 115)
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Prof. Dr. Bernhard Wasmayr VWL 2. Semester
Heute: Scherenzange zeichnen
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.
AWA 2007 Natur und Umwelt Natürlich Leben
Rechneraufbau & Rechnerstrukturen, Folie 12.1 © W. Oberschelp, G. Vossen W. Oberschelp G. Vossen Kapitel 12.
Wie macht man ein Sudoku? Transformations-Methode:
1. 2 Schreibprojekt Zeitung 3 Überblick 1. Vorstellung ComputerLernWerkstatt 2. Schreibprojekt: Zeitung 2.1 Konzeption des Kurses 2.2 Projektverlauf.
Prof. Dr. Günter Gerhardinger Soziale Arbeit mit Einzelnen und Familien Übersicht über die Lehrveranstaltung Grundlegende Bestimmungsfaktoren der Praxis.
20:00.
So kannst du beide schnell berechnen.
Zusatzfolien zu B-Bäumen
Kapitel 1 – Erste Schritte
In der Schule.
Algorithmisches Problemlösen mit Kara
Materialien zum Informatikunterricht (Pohlig-Häberle)
Eine Einführung in die CD-ROM
GBI Genios Wiso wiso bietet Ihnen das umfassendste Angebot deutsch- und englischsprachiger Literatur für die Wirtschafts- und Sozialwissenschaften. Wir.
Dokumentation der Umfrage
Kinder- und Jugenddorf Klinge Qualitätsentwicklung Januar 2005 Auswertung der Fragebögen für die Fachkräfte in den Jugendämtern.
Wir üben die Malsätzchen
Syntaxanalyse Bottom-Up und LR(0)
Eigenschaften von Algorithmen
Addieren und Subtrahieren von Dezimalzahlen
Analyse von Ablaufdiagrammen
Das entscheidende Kriterium ist Schönheit; für häßliche Mathematik ist auf dieser Welt kein beständiger Platz. Hardy.
Der Ablauf eines Clear Rex Klärzyklus
PROCAM Score Alter (Jahre)
Ertragsteuern, 5. Auflage Christiana Djanani, Gernot Brähler, Christian Lösel, Andreas Krenzin © UVK Verlagsgesellschaft mbH, Konstanz und München 2012.
Geometrische Aufgaben
Symmetrische Blockchiffren DES – der Data Encryption Standard
Retuschen.ppt Die folgende Schau zeigt die Möglichkeiten, mit PhotoDraw Digitalbilder zu retuschieren. Vergleichen Sie jeweils zwei Bildpaare durch fleissiges.
Szenisches Lernen Wie Theaterelemente den Unterricht bereichern
Zahlentheorie und Zahlenspiele Hartmut Menzer, Ingo Althöfer ISBN: © 2014 Oldenbourg Wissenschaftsverlag GmbH Abbildungsübersicht / List.
MINDREADER Ein magisch - interaktives Erlebnis mit ENZO PAOLO
1 (C)2006, Hermann Knoll, HTW Chur, FHO Quadratische Reste Definitionen: Quadratischer Rest Quadratwurzel Anwendungen.
Schutzvermerk nach DIN 34 beachten 20/05/14 Seite 1 Grundlagen XSoft Lösung :Logische Grundschaltung IEC-Grundlagen und logische Verknüpfungen.
Kamin- und Kachelöfen in Oberösterreich
Folie Beispiel für eine Einzelauswertung der Gemeindedaten (fiktive Daten)
Einführung in die Algorithmik aus objektorientierter Sicht
Dokumentation der Umfrage BR P2.t Ergebnisse in Prozent n= 502 telefonische CATI-Interviews, repräsentativ für die Linzer Bevölkerung ab 18 Jahre;
Technische Frage Technische Frage Bitte löse die folgende Gleichung:
Unternehmensbewertung Thomas Hering ISBN: © 2014 Oldenbourg Wissenschaftsverlag GmbH Abbildungsübersicht / List of Figures Tabellenübersicht.
Forschungsprojekt Statistik 2013 „Jugend zählt“ – Folie 1 Statistik 2013 „Jugend zählt“: Daten zur Arbeit mit Kindern und Jugendlichen.
AGOF facts & figures: Branchenpotenziale im Internet Q2 2014: Parfum & Kosmetik Basis: internet facts / mobile facts 2014-I.
Folie Einzelauswertung der Gemeindedaten
Datum:17. Dezember 2014 Thema:IFRS Update zum Jahresende – die Neuerungen im Überblick Referent:Eberhard Grötzner, EMA ® Anlass:12. Arbeitskreis Internationale.
Sehen, Hören, Schmecken: wenn uns unsere Sinne täuschen
1 Medienpädagogischer Forschungsverbund Südwest KIM-Studie 2014 Landesanstalt für Kommunikation Baden-Württemberg (LFK) Landeszentrale für Medien und Kommunikation.
Algorithmisches Problemlösen mit Kara
 Präsentation transkript:

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

Algorithmisches Problemlösen

Programmgesteuerte Systeme Teil 1 Programmgesteuerte Systeme

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

Karol, der Roboter Als Beispiel eines sehr einfachen programmgesteuerten Systems betrachten wir Roboter, der seine Arbeit in einer rechteckigen Welt verrichtet. Die Welt, in der sich Karol bewegt, ist in Felder aufgeteilt . Auf diesen Feldern können Quader, Ziegel oder Markierungen liegen.

Karol, der Roboter Mit Hilfe von Anweisungen lässt sich Karol steuern. Karol führt dann jeweils bestimmte Aktionen aus. Mit rechtem Mausklick kannst du die Befehle ins Script leicht einfügen. Anweisung: Aktion: Schritt Karol bewegt sich ein Feld weiter (sofern dies möglich ist). LinksDrehen Karol dreht sich um 90° nach links. RechtsDrehen Karol dreht sich um 90° nach rechts. Hinlegen Karol legt einen Ziegel vor sich ab. Aufheben Karol hebt einen vor ihm liegenden Ziegel auf. MarkeSetzen Karol markiert das Feld, auf dem er gerade steht. MarkeLöschen Karol entfernt eine Markierung, auf der er gerade steht.

Aufgabe 1 Vorher: Karol steht in der Ausgangsposition. Steuere Karol zunächst im „Direktmodus“ mit Hilfe der vorgesehenen Schaltflächen. Steuer Karol anschließend mit den entsprechenden Anweisungen. Diese werden in das dafür vorgesehene Fenster geschrieben. Nach einem Programmstart (▶ ) werden die Anweisungen von Karol automatisch ausgeführt. Nachher: Karol hat eine Treppe gebaut. LinksDrehen Schritt LinksDrehen ...

Aufgabe 2 Vorher: Karol steht in der Ausgangsposition. Nachher: Karol hat eine Siegerpodest gebaut. Versuche, direkt ein korrektes Programm zu schreiben. Beachte, dass Karol bei einem Schritt nach vorne maximal einen Ziegel hoch steigen kann.

Karol als programmgesteuertes System Zustand vorher LinksDrehen Schritt LinksDrehen LinksDrehen Hinlegen Hinlegen Hinlegen LinksDrehen LinksDrehen Schritt LinksDrehen LinksDrehen Hinlegen Hinlegen LinksDrehen LinksDrehen ... Programm (Algorithmus) Roboter (Prozessor) Zustand nachher

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

Programm (Algorithmus) LinksDrehen Schritt LinksDrehen LinksDrehen Hinlegen ... Programm (Algorithmus) Roboter (Prozessor) Ziel ist es, einen komplizierten Ablauf / Vorgang so zu beschreiben, dass er von einem „Prozessor“ (Mensch oder Maschine, der bzw. die für die Ausführung zuständig ist) ausgeführt werden wird. Eine Algorithmus ist eine endliche Folge eindeutig ausführbarer Anweisungen zur Lösung eines Problems.

Programm (Algorithmus) LinksDrehen Schritt LinksDrehen LinksDrehen Hinlegen ... Programm (Algorithmus) Roboter (Prozessor) Anforderungen an Algorithmen: - Endlichkeit: Die Anweisungsfolge ist durch einen endlichen Text beschrieben. - Ausführbarkeit: Die Anweisungen sind für den „Prozessor“ (Mensch oder Maschine) verständlich formuliert und ausführbar. - Eindeutigkeit: An jeder Stelle ist der Ablauf der Anweisungen eindeutig festgelegt. - Allgemeinheit: Die Anweisungen besitzen Gültigkeit für die Lösung einer ganzen Problemklasse, nicht nur für ein Einzelproblem.

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

Programm (Algorithmus) Aufgabe Beim Schreiben eines Programms müssen bestimmte Regeln eingehalten werden. Prüfe, welche der folgenden Schreibweisen erlaubt bzw. nicht erlaubt sind: - Anweisungen hintereinander schreiben - Trennsymbole benutzen (z. B. ein Komma) - Groß- / Kleinschreibung nicht beachten - Anweisungsbezeichner ändern oder trennen - ... Linksdrehen Schritt LinksDrehen, LinksDrehen Hinlegen Ablegen Hin- legen ... Programm (Algorithmus) Roboter (Prozessor)

Anweisungen (Programm) Syntaxfehler Die Sprache, in der Algorithmen für einen „Prozessor“ formuliert werden, ist (normalerweise) genau festgelegt. Den Aufbau der in dieser Sprache korrekt formulierten „Programme“ wird durch sog. Syntaxregeln beschrieben. Verstößt man gegen eine dieser Syntaxregeln, so kommt es zu einem Syntaxfehler (Fehlermeldung z. B.: unbekannte Anweisung). Linksdrehen Schritt LinksDrehen, Links Drehen Hinlegen Ablegen Hin- legen ... Anweisungen (Programm) Roboter (Prozessor) Syntaxfehler

Logische Fehler Wenn das Programm nicht korrekt ist, dann liegt ein logischer Fehler vor. Beachte, dass man in der Regel in einem solchen Fall keine Fehlermeldung erhält. Logische Fehler kann man durch Austesten des Programms feststellen. Beabsichtigter Zielzustand LinksDrehen Schritt LinksDrehen LinksDrehen Hinlegen Hinlegen Hinlegen LinksDrehen Schritt LinksDrehen LinksDrehen ... Ausgangs-zustand Tatsächlicher Zielzustand

Teil 2 Wiederholungen

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

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

Wiederholung mit fester Anzahl Soll eine Sequenz (von Anweisungen) mehrfach ausgeführt werden, wobei die Anzahl der Wiederholungen von Anfang an feststeht, so benutzt man zur Beschreibung eine Wiederholung mit fester Anzahl. Wiederhole <n> mal <Sequenz> *wiederhole Allgemeines Schema Wiederhole 7 mal Schritt MarkeSetzen *wiederhole Beispiel Eine solche Wiederholung mit fester Anzahl kann als Einheit aufgefasst werden und bildet dann eine einzelne (strukturierte) Anweisung.

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

Schachtelung von Wiederholungen Wiederholungsanweisungen kann man auch ineinander schachteln. Um einen besseren Überblick über die zusammengehörenden Anweisungen zu erhalten, sollte man sie systematisch einrücken (am besten 2 Anschläge). wiederhole 4 mal MarkeSetzen Schritt *wiederhole LinksDrehen wiederhole 4 mal MarkeSetzen Schritt *wiederhole ... wiederhole 4 mal wiederhole 4 mal MarkeSetzen Schritt *wiederhole LinksDrehen *wiederhole Programm Struktogramm

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

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.

Fallunterscheidungen Teil 3 Fallunterscheidungen

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

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

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

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

Aufgabe 3 Vorher: Karol steht vor eine Reihe, in der sich genau drei Quader befinden. Es sollen dabei keine zwei Quader nebeneinander stehen. Nachher: Karol hat die Quader auf seinem Weg nach Süden umlaufen.

Ein- / zweiseitige Fallunterscheidung ... wiederhole 9 mal wenn NichtIstZiegel dann Hinlegen Schritt sonst Schritt *wenn *wiederhole ... ... wiederhole 9 mal wenn NichtIstZiegel dann Hinlegen *wenn Schritt *wiederhole ... Einseitige Fallunter- scheidung Zweiseitige Fallunter- scheidung wahr falsch NichtIstZiegel? wahr falsch NichtIstZiegel? Hinlegen Hinlegen Schritt Schritt Schritt

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

Wiederholungen mit Abbruchbedingungen Teil 4 Wiederholungen mit Abbruchbedingungen

Wiederholung mit fester Anzahl Vorher: Karol steht in der Ausgangsposition. Dieses Programm ist nur dann korrekt, wenn die Welt genau 8 Felder lang ist. Bei beliebig großen Welten benötigt man Wiederholungsanweisungen mit nicht vorher feststehender Anzahl. Wiederhole 7 mal MarkeSetzen Schritt *wiederhole Nachher: Karol hat den Weg zur Wand markiert.

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

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

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

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

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

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

Eintrittsbedingung / Austrittsbedingung Vorher: Karol steht in der Ausgangsposition. Vorher: Karol steht in der Ausgangsposition. solange NichtIstWand tue MarkeSetzen Schritt *solange wiederhole MarkeSetzen Schritt *wiederhole bis IstWand Nachher: Karol hat den Weg zur Wand markiert. Abbruch: Karol ist an die Wand gestoßen. Bei einer Wiederholung mit Austrittsbedingung wird die Sequenz (von Anweisungen) mindestens einmal ausgeführt, bei einer Wiederholung mit Eintrittsbedingung kann die Sequenz (von Anweisungen) auch überhaupt nicht ausgeführt werden.

Varianten von Austrittsbedingungen wiederhole MarkeSetzen Schritt *wiederhole bis IstWand wiederhole MarkeSetzen Schritt *wiederhole solange NichtIstWand MarkeSetzen MarkeSetzen Schritt Schritt falsch wahr IstWand? NichtIstWand? wahr falsch Bei einer Wiederholung mit Austrittsbedingung kann überprüft werden, ob die Austrittsbedingung erfüllt bzw. nicht erfüllt ist.

Endlosschleife solange NichtIstMarke tue solange NichtIstWand tue Schritt *solange LinksDrehen LinksDrehen *solange wiederhole immer solange NichtIstWand tue Schritt *solange LinksDrehen LinksDrehen *wiederhole Bei einer Wiederholung mit Abbruchbedingung kann es vorkommen, dass es zu keinem regulären Abbruch der Wiederholungen kommt. Karol gerät dann in eine Endlosschleife.

Aufgabe 7 Vorher: Karol steht in der Ausgangsposition in einer beliebig großen Welt. Nachher: Karol hat eine 6 Ziegel hohe Mauer gebaut.

Aufgabe 8 Vorher: Karol steht in der Ausgangsposition in einer beliebig großen Welt. Nachher: Karol hat eine 1 Ziegel hohe Mauer zur Begrenzung der Welt gebaut.

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

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

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

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

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

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

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 ?

Von Ablaufsituationen ... Schritt 1: Ablaufsituationen klären und die Verarbeitung beschreiben Marke setzen Ziegel vorne?  ja Marke setzen Ziegel vorne?  nein Marke setzen Ziegel vorne?  nein Links drehen Ziegel vorne?  ja Schritt vorwärts Links drehen Ziegel vorne?  nein Schritt vorwärts Rechts drehen Rechts drehen Schritt vorwärts

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

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

Aufgabe 10 Führe die Schritte, die zum Algorithmus führen, explizit aus: Schritt 1: Ablaufsituationen klären und die Verarbeitung beschreiben Schritt 2: Die Verarbeitungsabläufe mit Hilfe von Kontrollstrukturen beschreiben

Teil 6 Unterprogramme

Ein komplexes Problem Vorher: Karol steht vor eine Reihe von Ziegeln. Nachher: Karol hat die Ziegel alle eingesammelt und in der Ecke aufgestapelt.

Ablaufbeschreibung Ziegel aufheben Schritt vorwärts Marke setzen Umdrehen Bis zur Wand laufen Schritt zurück Ziegel hinlegen Umdrehen Bis zur Marke laufen Marke löschen Ziegel aufheben Schritt vorwärts Marke setzen Umdrehen Bis zum Ziegel laufen Schritt zurück Ziegel hinlegen u. s. w.

Algorithmus Ziegel aufheben Schritt vorwärts Marke setzen Umdrehen Bis zur Wand laufen Schritt zurück Ziegel hinlegen Umdrehen Bis zur Marke laufen Marke löschen Ziegel aufheben Schritt vorwärts Marke setzen Umdrehen Bis zum Ziegel laufen Schritt zurück Ziegel hinlegen Im Algorithmus kommen Anweisungen vor, die Karol direkt ausführen kann (z. B. Schritt), aber auch Anweisungen, die Karol noch nicht kennt (z. B. Umdrehen).

Unterprogramme Programm Aufheben Schritt MarkeSetzen Umdrehen LaufeBisWand SchrittRueckwaerts Hinlegen Umdrehen LaufeBisMarke MarkeLöschen solange IstZiegel tue Aufheben Schritt MarkeSetzen Umdrehen LaufeBisZiegel ... *solange Umdrehen LaufeBisZiegel Umdrehen *Programm Anweisung Umdrehen RechtsDrehen RechtsDrehen *Anweisung Mit Hilfe eines Unter-programms kann man einen Teilalgorithmus zu einer neuen Einheit zusammenfassen. Der Name, mit dem das Unterprogramms bezeichnet wird, kann als neue Anweisung benutzt werden.

Karol lernt neue Anweisungen Anweisung Umdrehen RechtsDrehen RechtsDrehen *Anweisung Anweisung SchrittRueckwaerts Umdrehen Schritt Umdrehen *Anweisung Anweisung LaufeBisWand solange NichtIstWand tue Schritt *solange *Anweisung Anweisung LaufeBisZiegel solange NichtIstZiegel tue Schritt *solange *Anweisung ... ... Programm Aufheben Schritt MarkeSetzen Umdrehen LaufeBisWand SchrittRueckwaerts Hinlegen Umdrehen LaufeBisMarke MarkeLöschen solange IstZiegel tue Aufheben Schritt ... *solange Umdrehen LaufeBisZiegel Umdrehen *Programm Festlegung des Unterprogramms Aufruf des Unterprogramms

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.

Eine Bibliothek anlegen { Anweisung Umdrehen vorher: Karol steht auf einem beliebigen Feld und schaut in eine beliebige Richtung. nachher: Karol hat sich um 180° gedreht. } Anweisung Umdrehen Schnell RechtsDrehen RechtsDrehen *Anweisung ... Kommentar zur Spezifikation des Verhaltens des Unterprogramms Die Festlegungen von Anweisungen, die in vielen Algorithmen wiederverwendet werden können, werden ausgelagert und in einer Bibliotheksdatei gesammelt. Damit der Programmierer sich schnell über das Verhalten einer Anweisung informieren kann, wird das Verhalten in einem Kommentar zur Anweisung genau spezifiziert.

Eine Bibliothek benutzen Einfügen Bibliothek1 *Einfügen Programm Aufheben Schritt MarkeSetzen Umdrehen LaufeBisWand ... *Programm Damit die in der Bibliothek festgelegten „neuen Anweisungen“ in einem Programm benutzt werden können, muss die Bibliothek in das aktuelle Programm eingefügt werden.

Karol lernt neue Bedingungen Vorher: Nachher:

Karol lernt neue Bedingungen Bedingung ZiegelVorne Schnell Falsch wenn IstZiegel dann Wahr *wenn *Bedingung Bedingung ZiegelLinks Schnell Falsch LinksDrehen wenn IstZiegel dann Wahr *wenn RechtsDrehen *Bedingung Programm solange NichtIstMarke tue MarkeSetzen wenn ZiegelVorne dann Schritt sonst wenn ZiegelLinks dann LinksDrehen Schritt sonst RechtsDrehen Schritt *wenn *wenn *solange *Programm

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

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

Teil 7 Top-Down-Methode

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.

Zerlegen ... Komplexe Probleme zerlegt man in Teilprobleme, die sich in der Regel leichter lösen lassen. ZiegelSammeln ReiheSammeln InEckeRechtsVorne? NaechsteAusgangsposition

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

... top-down weiter ... ... ReiheSammeln LaufeBisZiegelOderWand Umdrehen ZiegelAblegen ...

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

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

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

Der Problemlöseprozess Teil 8 Der Problemlöseprozess

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

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

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

Dokumentation Während des gesamten Problemlöseprozesses werden die wichtigsten Ergebnisse festgehalten. Hierzu gehören: - eine genaue Problembeschreibung - die wichtigsten Algorithmen - kommentierte Programme - Testberichte

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

Aufgabe 14 Karol sollen Zahlen addieren. Der gesamte Problemlöseprozess soll möglichst gut strukturiert werden. Vorher: Die beiden zu addierenden Zahlen sind mit Hilfe von Ziegelstapel dargestellt. 2574 + 462 3036 Nachher: Karol hat die Stapelzahlen „addiert“.

Automatisierte Verarbeitung von Daten Teil 9 Automatisierte Verarbeitung von Daten

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

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

Zahlen schriftlich addieren Solange noch Ziffern vorhanden sind, addiere die Zahlen der betreffenden Stelle unter Berücksichtigung des Übertrags. Algorithmus „schriftliches Addieren“ 2574 + 462 3036 Algorithmen werden nicht nur zur Steuerung von Computern benutzt, Algorithmen können auch Tätigkeiten steuern, die von Menschen ausgeführt werden (z. B. schriftliches Rechnen). Eine Algorithmus ist eine endliche Folge eindeutig ausführbarer Anweisungen zur Lösung eines Problems.

Rezept für Erdbeermousse Algorithmus im Alltag ZUTATEN für 5 Portionen: 650g Erdbeeren 150g Zucker 2 Pk Vanillezucker 5 EL Weinbrand 400 ml Sahne (gut gekühlt) ZUBEREITUNG Erdbeeren kalt abbrausen, abtropfen lassen und trockentupfen. Blütenansatz entfernen. 150 Gramm der Früchte zugedeckt beiseite stellen. Restliche Erdbeeren in Stücke schneiden. Zucker, Vanillezucker und Weinbrand darunterheben und alles 30 Minuten zugedeckt ziehen lassen. Dann mit dem Mixstab fein pürieren. Die Hälfte der Sahne steif schlagen und unter das Püree ziehen. Die Creme im Gefrierfach oder in der Tiefkühltruhe gefrieren lassen. Restliche Sahne halbsteif schlagen. Mit einem Esslöffel Nocken von der Mousse abstechen und auf Dessertteller verteilen. Die halbsteife Sahne angießen und das Dessert mit den ganzen Erdbeeren garnieren. Quelle: www.daskochrezept.de Rezept für Erdbeermousse

Bedienungs-anleitung Algorithmus im Alltag Bedienungs-anleitung Aufgabe: Beurteilen Sie, welche der üblicherweise geforderten Anforderungen an einen Algorithmus (Endlichkeit, Ausführbarkeit, Eindeutigkeit, Allgemeinheit) bei den gezeigten Alltagsalgorithmen erfüllt sind.

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

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.

Al-Khwarizmi