450 likes | 625 Views
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
E N D
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 (/ 3 100)) (define kapital 763) (+ kapital (* zins kapital)) ==> 78589/100 (exact->inexact (+ kapital (* zins kapital))) ==> 785.89 (do ((i 0 (+ i 1))) ((> i 10)) (display (* i i)) (newline) ) - Programmiersprache erfordert schon bei einfachsten Aufgabenstellungen umfang-reiche syntaktische Grundkenntnisse PROGRAM Beispiel_1; USES crt; VAR a, p, q, c, h : real; BEGIN read(p,q); c := p + q; h := sqrt(p*q); a := sqrt(c*p) write(c,h,a); REPEAT UNTIL keypressed; END. - Direkte Einführung der einzelnen Kontroll-strukturen mit einer imperativen Program-miersprache führt zu „Einschrittigen Algorithmen“ - Unterschied zwischen Anweisungsfolge (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
ROBOTER PositionX PositionY Blickrichtung Karol Karol PositionX = 2 PositionY = 1 Blickrichtung = S PositionX = 2 PositionY = 1 Blickrichtung = S Schritt() LinksDrehen() RechtsDrehen() Objektorientierte Sicht
Karol Mache einen Schritt vorwärts PositionX = 2 PositionY = 1 Blickrichtung = S Schritt() LinksDrehen() RechtsDrehen() Objektorientierte Sicht Schritt() Schritt()
Karol PositionX = 2 PositionY = 2 Blickrichtung = S Schritt() LinksDrehen() RechtsDrehen() Objektorientierte Sicht AnweisungSenden einer Botschaft an ein Objekt, das mit der zugehörigen Methode reagiert (Methodenaufruf)
Anweisungen „Karol soll sich in einer U-Form bewegen“ Schritt Schritt LinksDrehen Schritt Schritt LinksDrehen Schritt Schritt 2 mal vorwärts Linksum 2 mal vorwärts Linksum 2 mal vorwärts
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 Umgangssprache, mehrdeutig Algorithmus eindeutig, semiformal, schrittweiser Ablauf Programm exakter Formalismus, genormt, vom Prozessor unabhängig Maschinenprogramm 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.
Karol PositionX = 1 PositionY = 1 Blickrichtung = O Schritt() LinksDrehen() RechtsDrehen() Hinlegen() Aufheben() MarkeSetzen() MarkeLöschen() Objektorientierte Sicht
Methoden von Karol Schritt() Schritt(Anzahl) LinksDrehen() RechtsDrehen() Hinlegen() Hinlegen(Anzahl) Aufheben() Aufheben(Anzahl) MarkeSetzen() MarkeLöschen() Warten() Warten(Anzahl) Ton()
Karol PositionX = 2 PositionY = 3 Blickrichtung = O Schritt() LinksDrehen() RechtsDrehen() Hinlegen() Aufheben() MarkeSetzen() MarkeLöschen() ... ... Objektorientierte Sicht 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
wiederhole n mal Anweisungen Bausteine von Algorithmen Wiederholung mit fester Anzahl Die Anweisungen im Wiederholungsteil werden nacheinander mehrfach ausgeführt. (entsprechend der angegebenen Anzahl) wiederhole n mal Anweisungen *wiederhole
Karol PositionX = 2 PositionY = 3 Blickrichtung = O Schritt() LinksDrehen() RechtsDrehen() Hinlegen() Aufheben() MarkeSetzen() MarkeLöschen() IstWand() NichtIstWand() IstZiegel() IstMarke() Objektorientierte Sicht
Methoden von Karol IstWand() NichtIstWand() IstZiegel() IstZiegel(Anzahl) NichtIstZiegel() NichtIstZiegel(Anzahl) IstMarke() NichtIstMarke() IstSüden() IstNorden() IstWesten() IstOsten()
wdh. solange Bedingung Anweisungen 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
Bedingung wahr falsch Anweisungen1 Anweisungen2 Bausteine von Algorithmen Bedingte Anweisung (zweiseitig) In Abhängigkeit von der Bedingung werden die Anweisungen1 bzw. die Anweisungen2 ausgeführt. wenn Bedingung dann Anweisungen1 sonst Anweisungen2 *wenn
Bedingung wahr falsch Anweisungen Bausteine von Algorithmen Bedingte Anweisung (einseitig) Wenn die Bedingung WAHR ergibt werden die Anweisungen ausgeführt. wenn Bedingung dann Anweisungen *wenn
Anweisungen einfache Anweisungen Kontrollstrukturen Methodenaufruf bed.Anweisungen Wiederholungen einseitige zweiseitige mit fester Anzahl Anfangsbedingung Endbedingung Bausteine von Algorithmen
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.
2 Variable / Konstante - Bezeichner, Name - Typ, Wertebereich - Wert, Inhalt PositionX Typen: Ganzzahl Gleitpunktzahl Zeichen Zeichenfolgen Logisch Deklaration Instanzierung Initialisierung
Zustand Ein Zustand ist durch den aktuellen Wert aller Variablen festgelegt (Variablenzustände). Es werden nicht immer alle möglichen Variablen-zustä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.
einfache Anweisungen Kontrollstrukturen Zuweisung Aufruf bed.Anweisungen Wiederholungen einseitige zweiseitige mit fester Anzahl Anfangsbedingung Endbedingung Bausteine von Algorithmen Anweisungen
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