Informatik am Gymnasium Einführung in die Algorithmik aus objektorientierter Sicht Probleme - Ablauforientiertes Denken: Jeder kleine Bearbeitungsschritt muss zielgerichtet und zweckdienlich für die Gesamtlösung sein - Die Reaktion des Systems auf einen Einzelschritt ist meist nicht direkt sichtbar und damit nicht nachvollziehbar - Gleichzeitige Einführung der Algorithmik und des Variablenkonzepts Probleme (define zins (/ 3Beispiel_1; 100)) PROGRAM - Programmiersprache erfordert schon bei (define kapital 763) USES crt; Aufgabenstellungen umfangp, q, c, h : real; (+ einfachsten kapitalVAR (*a,zins kapital)) ==> 78589/100 BEGIN (exact->inexact (+ kapital (* zins reiche syntaktische Grundkenntnisse read(p,q); kapital))) c==> 785.89 := p + q; - Direkte Einführung der einzelnen Kontrollh := sqrt(p*q); strukturen einer imperativen Programa :=mit sqrt(c*p) write(c,h,a); (domiersprache ((i 0 (+ i 1))) führt zu „Einschrittigen REPEAT UNTIL keypressed; ((> i 10)) END. Algorithmen“ (display (* i i)) ) zwischen Anweisungsfolge - (newline) Unterschied (Programmtext) und Systemreaktion beim Programmablauf verstehen Didaktische Forderungen - Einfache, klar aufgebaute, leicht bedienbare Entwicklungsumgebung - Minilanguage <-> Sublanguage Anlehnung der Programmiersprache an die natürliche Sprache - Eingabehilfen bei der Erfassung des Programms Didaktische Forderungen - Reaktion des Systems auf Einzelanweisung muss sichtbar und nachvollziehbar sein - Ein Verständnis für den Begriff Algorithmus als die Beschreibung eines Lösungsverfahrens muss sich entwickeln Historie Minilanguages Richard E. Pattis Karel the Robot A Gentle Introduction to the Art of Programming John Wiley & Sons 1981 Objektorientierte Sicht Karol ROBOTER PositionX = 2 PositionY = 1 Blickrichtung = S Schritt() LinksDrehen() RechtsDrehen() Objektorientierte Sicht Karol PositionX = 2 PositionY = 1 Blickrichtung = S Schritt() LinksDrehen() RechtsDrehen() Mache einen Schritt vorwärts Objektorientierte Sicht Karol PositionX = 2 PositionY = 2 Blickrichtung = S Schritt() LinksDrehen() RechtsDrehen() Anweisung Senden einer Botschaft an ein Objekt, das mit der zugehörigen Methode reagiert (Methodenaufruf) „Robot Karol“ Anweisungen „Karol soll sich in einer U-Form bewegen“ 2 mal vorwärts Linksum 2 mal vorwärts Linksum 2 mal vorwärts Schritt Schritt LinksDrehen Schritt Schritt LinksDrehen Schritt Schritt Algorithmus Ein Algorithmus ist eine eindeutige, endliche Beschreibung eines allgemeinen, schrittweisen und ausführbaren Lösungsverfahrens. Ein Algorithmus ist eine endliche Folge aus eindeutigen und ausführbaren Anweisungen zur Lösung eines allgemeinen Problems. Programm Ein Programm ist ein Algorithmus, der in einer formalisierten Programmiersprache abgefasst ist und maschinell ausgeführt werden kann. Ein Programm stellt die Realisierung eines Algorithmus dar. Programmieren Problembeschreibung Algorithmus Programm Maschinenprogramm Umgangssprache, mehrdeutig eindeutig, semiformal, schrittweiser Ablauf exakter Formalismus, genormt, vom Prozessor unabhängig einfache Sprache, Prozessor abhängig Programmieren: Konzeption und Entwurf von Algorithmen, die als Programme realisiert und durch Computersysteme ausgeführt werden. Programm in der Sprache Karol Schritt Schritt LinksDrehen Schritt Schritt LinksDrehen Schritt Schritt uform.kdp und uform.kdw Bausteine von Algorithmen Sequenz Eine Sequenz ist die Zusammenfassung einer Folge von Anweisungen, die hintereinander ausgeführt werden. Objektorientierte Sicht Karol PositionX = 1 PositionY = 1 Blickrichtung = O Schritt() LinksDrehen() RechtsDrehen() Hinlegen() Aufheben() MarkeSetzen() MarkeLöschen() Methoden von Karol Schritt() Schritt(Anzahl) LinksDrehen() RechtsDrehen() Hinlegen() Hinlegen(Anzahl) Aufheben() Aufheben(Anzahl) MarkeSetzen() MarkeLöschen() Warten() Warten(Anzahl) Ton() Objektorientierte Sicht Karol PositionX = 2 PositionY = 3 Blickrichtung = O Schritt() LinksDrehen() RechtsDrehen() Hinlegen() Aufheben() MarkeSetzen() MarkeLöschen() ... ... Für die Klasse ROBOTER können zusätzlich neue Methoden festgelegt werden. Programm in der Sprache Karol Anweisung Umdrehen LinksDrehen LinksDrehen *Anweisung Programm Umdrehen Schritt Umdrehen *Programm Bausteine von Algorithmen Wiederholung mit fester Anzahl wiederhole n mal Anweisungen *wiederhole wiederhole n mal Anweisungen Die Anweisungen im Wiederholungsteil werden nacheinander mehrfach ausgeführt. (entsprechend der angegebenen Anzahl) Objektorientierte Sicht Karol PositionX = 2 PositionY = 3 Blickrichtung = O Schritt() LinksDrehen() RechtsDrehen() Hinlegen() Aufheben() MarkeSetzen() MarkeLöschen() IstWand() NichtIstWand() IstZiegel() IstMarke() Methoden von Karol IstWand() NichtIstWand() IstZiegel() IstZiegel(Anzahl) NichtIstZiegel() NichtIstZiegel(Anzahl) IstMarke() NichtIstMarke() IstSüden() IstNorden() IstWesten() IstOsten() Bausteine von Algorithmen Wiederholung mit Anfangsbedingung Die Anweisungen im Wiederholungsteil werden so oft wiederholt, solange die Bedingung WAHR ergibt. Die Überprüfung der Bedingung erfolgt am Anfang jeder Wiederholung. wiederhole solange Bedingung Anweisungen *wiederhole wdh. solange Bedingung Anweisungen Bausteine von Algorithmen Wiederholung mit Endbedingung Die Anweisungen im Wiederholungsteil werden so oft wiederholt, solange die Bedingung WAHR ergibt. Die Überprüfung der Bedingung erfolgt am Ende jeder Wiederholung. wiederhole Anweisungen *wiederhole solange Bedingung Anweisungen wdh. solange Bedingung Bausteine von Algorithmen Bedingte Anweisung (zweiseitig) wenn Bedingung dann Anweisungen1 sonst Anweisungen2 *wenn In Abhängigkeit von der Bedingung werden die Anweisungen1 bzw. die Anweisungen2 ausgeführt. Bedingung wahr falsch Anweisungen1 Anweisungen2 Bausteine von Algorithmen Bedingte Anweisung (einseitig) wenn Bedingung dann Anweisungen *wenn Wenn die Bedingung WAHR ergibt werden die Anweisungen ausgeführt. Bedingung wahr Anweisungen falsch Bausteine von Algorithmen Anweisungen einfache Anweisungen Methodenaufruf Kontrollstrukturen bed.Anweisungen Wiederholungen einseitige zweiseitige mit fester Anzahl Anfangsbedingung Endbedingung Programm in der Sprache Karol Bedingung IstZiegelRechts falsch Rechtsdrehen wenn IstZiegel dann wahr *wenn Linksdrehen *Bedingung Programm wiederhole solange IstZiegelRechts Schritt *wiederhole *Programm Algorithmen Beispiele - Ziegelrand - Turmbauen - Treppebauen - Auf der Mauer laufen - Spirale legen - Buchstaben (Projekt) Zustandsorientierte Sicht Der Zustand des Karol-Systems wird beschrieben durch: - Breite, Länge und Höhe der Welt - Position und Blickrichtung von Karol - Position der Ziegel und Stapelhöhe - Position der Marken Zustandsorientierte Sicht Karol PositionX = 2 PositionY = 3 Blickrichtung = O MaxSprunghöhe = 1 Schritt() ... Der Zustand eines Objekts ist durch seine Attributwerte und die Beziehungen zu anderen Objekten festgelegt. Zustandsorientierte Sicht PositionX = 2 PositionY = 1 Blickrichtung = S MaxSprunghöhe = 1 PositionX = 2 PositionY = 3 Blickrichtung = O MaxSprunghöhe = 1 Zustandsorientierte Sicht Ein Algorithmus führt das Karol-System von einem Zustand in einen anderen Zustand über. Er vollzieht einen Zustandsübergang. Variable / Konstante Eine Variable ist ein Attribut, dem nacheinander verschiedene Werte zugewiesen werden können. D.h. auf eine Variable kann sowohl lesend als auch schreibend zugegriffen werden. Eine Konstante ist ein Attribut, dem nur einmal ein Wert zugewiesen wird, der dann unveränderbar ist. D.h. auf eine Konstante kann nach der Initialisierung nur lesend zugegriffen werden. Variable / Konstante 2 - Bezeichner, Name - Typ, Wertebereich - Wert, Inhalt PositionX Deklaration Instanzierung Initialisierung Typen: Ganzzahl Gleitpunktzahl Zeichen Zeichenfolgen Logisch Zustand Ein Zustand ist durch den aktuellen Wert aller Variablen festgelegt (Variablenzustände). Es werden nicht immer alle möglichen Variablenzustände betrachtet, sondern nur ausgewählte, für die Modellierung wesentliche (Modellzustände). Bausteine von Algorithmen Zuweisung Eine Zuweisung ist eine Anweisung, bei der einer Variablen ein errechneter oder fester Wert zugewiesen wird, d.h. dieser Wert wird in die Speicherzelle(n) der Variablen eingetragen und überschreibt einen bereits vorhandenen Wert. Bausteine von Algorithmen Anweisungen einfache Anweisungen Zuweisung Aufruf Kontrollstrukturen bed.Anweisungen Wiederholungen einseitige zweiseitige mit fester Anzahl Anfangsbedingung Endbedingung Variable / Konstante Karol PositionX = 2 PositionY = 3 Blickrichtung = O MaxSprunghöhe = 1 ImRucksack = 5 MaxImRucksack = 20 Schritt() ... IstVoll() IstLeer() NichtIstLeer() ... Überwachung des Rucksacks Algorithmen Wiederholung und Vertiefung Beispiel mit Robot Karol - auf einer Mauer laufen - eine Spirale legen - gesamte Fläche invertieren - Zimmer mit Ausgang - Summe von zwei Zahlen - in einer Reihe stapeln (mit Rucksack) - einfaches Labyrinth Heimat von Karol www.schule.bayern.de/karol Algorithmik Ende