Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Einführung in die Algorithmik aus objektorientierter Sicht

Ähnliche Präsentationen


Präsentation zum Thema: "Einführung in die Algorithmik aus objektorientierter Sicht"—  Präsentation transkript:

1 Einführung in die Algorithmik aus objektorientierter Sicht
Informatik am Gymnasium Einführung in die Algorithmik aus objektorientierter Sicht U.Freiberger Luitpold-Gymnasium Stand Beim algorithmischen Denken lernt man einerseits, seine Gedanken zu einer Folge von Schritten zu ordnen. Anderseits lernt man zu überlegen, was gegeben und was gesucht ist und welche Entscheidungen zu treffen sind.

2 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 Der heutige Informatikunterricht am Gymnasium ist stark von der Algorithmik als einzige Modellierungstechnik geprägt. Dabei zeigt sich im Unterricht die Erfahrung, dass die Schüler bei einfachen Aufgabenstellungen die Umsetzung auf einen Algorithmus nachvollziehen können. Jeder Schüler hat aber eine individuelle Schwelle an Komplexität, bis zu der er den Stoff bewältigt. Wird diese Schwelle überschritten haben die Schüler meist gar keine Möglichkeit mehr den Modellierungsgedanken zu verfolgen. Sie schreiben nur noch - ohne Verständnis - das entstandene Programm ab, tippen es ein und warten auf die Fehlermeldungen des Compilers. Durch „experimentielles“ Arbeitsverhalten versuchen sie den Compiler zufrieden zu stellen. Was sind mögliche Ursachen ? Ablauforientiertes Denken erfordert zielgerichtetes Denken bei jedem noch so kleinen Schritt. Deshalb muss man für das Denken in Abläufen erst ein Gespür entwickeln. Andererseits erfordern einfachste Beispiele in einer üblichen imperativen Programmiersprache schon früh den Einsatz von Variablen. „for i=1 to 4 do writeln(’Max’)“. D.h. es muss zusätzlich das Variablenkonzept stillschweigend eingeführt werden.

3 Probleme (define zins (/ 3 100)) (define kapital 763) (+ kapital (* zins kapital)) ==> 78589/100 (exact->inexact (+ kapital (* zins kapital))) ==> (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“ Viele Programmiersprachen benötigen von vorneherein umfangreiche, syntaktische Kenntnisse bezüglich des Grundaufbaus eines Programms. Folge: Es werden Algorithmen entwickelt, die es eigentlich „nicht wert“ sind, sogenannte „einschrittige“ Algorithmen. Wie etwa: Oberfläche, Rauminhalt Quader; Sinusfunktion nach speziellen Verfahren (siehe LP alt); Rabatt ab einer Stückzahl; Hypothenuse im rechtwinkligen Dreieck; Rückerstattung in Abhängigkeit von Mitglieddauer (größer 5 oder kleiner); Beitragsrückerstattung gestaffelt nach Jahren; Lösung der quadratischen Gleichung; Wochenlohnberechnung; Mengenrabatt gestaffelt; Portoberechnung für einen Brief; Schulnoten Eingabe der Ziffer Ausgabe der Note in Worten; Alles läuft auf eine Formel (eventuell mit einer Bedingung) hinaus, die berechnet wird. Es gibt gar keinen Ablauf, sondern nur einen Berechnungsschritt. Dieses ist eigentlich eine funktionale Modellierung (8. Jahrgangsstufe), die Funktion als verarbeitender Prozess. Ein Beispiel in Pascal: berechne im rechtwinkligen Dreieck Hypotenuse c, Höhe h und Kathete a bei gegebenen Hypotenusenabschnitten p und q; Zwei andere Beispiele mit Scheme: neues Kapital aus gegebenem Kapital und Zinsfuss; alle Quadratzahlen von 1 bis 10; Bei den einfachen Algorithmen muss man darauf achten, dass sich die Systemreaktion deutlich von den Anweisungen des Algorithmus unterscheidet. Problematisches Beispiel: „Wir schreiben eine Visitenkarte“ - Unterschied zwischen Anweisungsfolge (Programmtext) und Systemreaktion beim Programmablauf verstehen

4 Didaktische Forderungen
- Einfache, klar aufgebaute, leicht bedienbare Entwicklungsumgebung - Minilanguage <-> Sublanguage Anlehnung der Programmiersprache an die natürliche Sprache - Eingabehilfen bei der Erfassung des Programms Die üblichen Standardumgebungen von Programmiersprachen bieten viel zu viele Einstell- und Wahlmöglichkeiten, die für den Lernenden noch keinen Begriff darstellen, die jedoch teilweise für die Arbeit nötig sind, die vom eigentlichen Lernen ablenken, („Was ist das, Was macht jenes“) und die zu experimentellem Erobern der Entwicklungsumgebung verführen. Der Umfang der zu erlernden Syntax darf nicht zu groß sein, mit wenigen Anweisungen müssen sinnvolle Programme möglich sein. Zwei Konzepte: Minilanguage: eigens entwickelte Sprache; einfache Syntax und damit geringer Lernaufwand; da unabhängig von herkömmlichen Sprachen eher an die natürliche Sprache anpassbar Sublanguage: Einsatz einer „Untermenge“ einer vorhandenen realen Programmiersprache; meist sind schon zu Programmbeginn einige „Sonderanweisungen“ nötig um dieses Subsystem zu aktivieren, diese „Sonderanweisungen“ werden dann ohne Verständnis in das Programm integriert Das Eingeben des Programmtextes macht wegen der Syntaxschreibweise meist Schwierigkeiten, deshalb muss hier - durch die Entwicklungsumgebung - geholfen werden.

5 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 Um die Reaktion zu Veranschaulichen eignet sich am besten eine Figur, die durch die Anweisungen gesteuert wird. Man sieht sofort die Reaktion auf die Anweisung an dem Verhalten der Figur.

6 Historie Minilanguages Karel the Robot Richard E. Pattis
A Gentle Introduction to the Art of Programming John Wiley & Sons 1981 Den meisten, aktuellen Minilanguages liegt die Idee von “Karel, the Robot” zugrunde, wie sie zum ersten Mal in “Pattis, Richard E; Karel the Robot: A Gentle Introduction to the Art of Programming; John Wiley & Sons, 1981” veröffentlicht wurde. Das Grundkonzept ist, einen Roboter zu programmieren, der in einer “Bildschirmwelt” lebt. Wenn die Programme laufen, sehen die Schülerinnen und Schüler an der Reaktion des Roboters sofort, was sie programmiert haben und ob ihr Programm die Aufgabenstellung erfüllt. Bei Pattis ist die Roboterwelt zweidimensional und besteht aus einem quadratischen Straßengitter in dem sich Karel, dargestellt als Pfeil, entlang der Straßen bewegen kann. In dieser Welt können Mauern aufgebaut werden, die Karel nicht überwinden kann und “Beeper” verteilt werden, die Karel einsammelt und ablegt. Karel ist mit einer bewußt einfachen Programmiersprache, die nur einen kleinen Satz an Befehlen kennt steuerbar. Die meisten Realisierungen verwenden die zweidimensionale Welt, wie sie von Pattis vorgesehen wurde. Wesentlich mehr Möglichkeiten bieten dreidimensionale Welten und trotzdem bleiben diese einfach genug um sie zur Einführung in die Algorithmik einsetzen zu können.

7 Objektorientierte Sicht
Karol PositionX = 2 PositionY = 1 Blickrichtung = S Schritt() LinksDrehen() RechtsDrehen() Karol PositionX = 2 PositionY = 1 Blickrichtung = S ROBOTER PositionX PositionY Blickrichtung Da das „Ablauforientierte Denken“ nicht sehr einfach ist, empfiehlt sich der Einstieg in die Algorithmik aus objektorientierter Sicht. Einführung an Hand des einfachen Informatiksystems „Karol the Robot“. Ein kleiner Roboter (Figur) lebt in einer Welt mit einem Boden aus Quadraten. <Klick> Die Klasse ROBOTER hat einige Eigenschaften: PositionX mit 1..WeltBreite; PositionY mit 1..WeltLänge; Blickrichtung mit N S W O Es gibt nur ein Objekt der Klasse ROBOTER und das ist Karol. Es gibt noch ein Objekt der Klasse WELT mit den Attributen Breite, Länge und Höhe. Karol hat auch Fähigkeiten, er besitzt einige Methoden um sich zu bewegen.

8 Objektorientierte Sicht
Karol PositionX = 2 PositionY = 1 Blickrichtung = S Schritt() LinksDrehen() RechtsDrehen() Schritt() Schritt() Mache einen Schritt vorwärts Vorerst geschieht noch gar nichts. <Klick> Man schickt eine Botschaft an Karol und dieser reagiert mit der entsprechenden Methode. Man nennt dies auch Aufruf der Methode ...() An dieser Stelle noch vor dem Einsatz der Programmierumgebung sollen die Schülerinnen und Schüler „Roboter spielen“. Ein Schüler schickt die Botschaften, ein anderer Schüler spielt den Roboter und reagiert auf die Botschaften mit seinen Methoden. Gut geeignet ist hier ein Fußboden mit einem quadratischen Fliesenmuster. Man muss vorher vereinbaren welche „Methoden“ der „lebende Roboter“ beherrschen soll. Im nächsten Schritt schreiben Schüler eine Folge von Anweisungen [nur die einfachen: Schritt(), LinksDrehen(), RechtsDrehen() ] auf ein Blatt Papier und ein anderer liest sie Zeile für Zeile ab. Als Aufgabestellung ist z.B. „diagonal 3 Schritte gehen“ geeignet. Die Kinder kennen dies etwa aus der Fernsehsendung „Tabaluga TV“, dort sind es „Eisschollen“ über die man schreiten muss.

9 Objektorientierte Sicht
Karol PositionX = 2 PositionY = 2 Blickrichtung = S Schritt() LinksDrehen() RechtsDrehen() Karol führt seine Methode aus, dabei ändern sich eventuell auch seine Attributwerte. Man erteilt Karol eine Anweisung (schickt eine Botschaft, ruft eine Methode von Karol auf) <Klick> Anweisung Senden einer Botschaft an ein Objekt, das mit der zugehörigen Methode reagiert (Methodenaufruf)

10 „Robot Karol“ Einteilung der Programmierumgebung erläutern - Programm, Welt, Übersicht, Information. (Karol: Im Direktmodus Schritt, Linksdrehen, Rechtsdrehen zeigen; erstmal die blauen Pfeile zur Steuerung benutzen dann die Tastaturbefehle zeigen) „Man schickt durch Mausklick auf die Schaltfläche <Pfeil oben> die Botschaft gehe einen Schritt vor, Karol reagiert mit seiner Methode Schritt()“ Die Unterscheidung zwischen Botschaft und Methode wird offensichtlich, wenn Karol mit dem Gesicht zur Wand direkt vor dieser steht. Man kann Karol die Botschaft „Gehe vorwärts“ schicken, diese ruft die Methode schritt() auf, die aber in bestimmten Situationen nichts bewirkt. (Karol: Schüler bauen im Direktmodus eine Treppe, legen ein Schachbrett an oder lassen Karol ein Quadrat 2*2 verlegen und dann zur Ausgangsposition zurückkehren)

11 Anweisungen „Karol soll sich in einer U-Form bewegen“ Schritt
LinksDrehen 2 mal vorwärts Linksum Karol soll sich in einer U-Form bewegen. Hierzu sind mehrere Anweisungen nötig, die Karol nacheinander ausführen muss. <Klick> Die nötigen Anweisungen zur Lösung dieser Aufgabenstellung sind als Algorithmus aufgeführt. Man muss diesen Algorithmus aber in eine, von Karol ausführbare Form bringen (programmieren) Erst spielerisch mit einem „lebenden Roboter“, dann mit Karol im Direktmodus, dann als Programm eingeben und ablaufen lassen

12 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. nicht Algorithmus: Die Folge der Zahlen „1+1/2+1/3+...“ „Rechne die drei Zahlen zusammen“ „Tue stets das Gute“ nicht ausführbar: „wenn auf der Venus Leben existiert, dann „

13 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. Algorithmus ist das abstrakte Modell, Programm ist das reale Modell. Das Programm ist eine textuelle Darstellungsform des Algorithmus. Ein Struktogramm ist eine grafische Darstellungsform des Algorithmus.

14 Programmieren Problembeschreibung Umgangssprache, mehrdeutig Algorithmus eindeutig, semiformal, schrittweiser Ablauf Programm exakter Formalismus, genormt, vom Prozessor unabhängig Maschinenprogramm einfache Sprache, Prozessor abhängig Auf das Beispiel „in U-Form bewegen“ anwenden: Problem „Karol soll sich in einer U-Form bewegen“; Algorithmus „2 mal vorwärts linksum ...“; Programm „Schritt, Schritt, LinksDrehen,..“ Prozessor ist nicht immer gleich Computer sondern bedeutet nur Ausführender (kann auch eine Person sein) Die Übersetzung vom Programm zum Maschinenprogramm macht dann eine Software, der Compiler. Alle anderen Schritte der Mensch. Programmieren: Konzeption und Entwurf von Algorithmen, die als Programme realisiert und durch Computersysteme ausgeführt werden.

15 Programm in der Sprache Karol
Schritt LinksDrehen (Karol: Programm eintippen und ausführen lassen) Erklärung der Programmierumgebung: Start, Schnelldurchlauf, Einzelschritt Erklärung der Welt: „Programmwirkung“ hängt vom Zustand der Welt ab, d.h. zum Beispiel der Ausgangsposition von Karol und der Größe der Welt. Programm speichern (*.kdp), Welt speichern (*.kdw) (Karol: uform.kdp, uform.kdw) Man kann auch die objektorientierte Schreibweise mit dem Punkt benutzen um klar zu stellen, wen die Botschaft betrifft z.B. Karol.Schritt. Da wir nur einen Empfänger für die Botschaften haben, werden wir die Angabe Karol. weglassen. uform.kdp und uform.kdw

16 Bausteine von Algorithmen
Sequenz Eine Sequenz ist die Zusammenfassung einer Folge von Anweisungen, die hintereinander ausgeführt werden.

17 Objektorientierte Sicht
Karol PositionX = 1 PositionY = 1 Blickrichtung = O Schritt() LinksDrehen() RechtsDrehen() Hinlegen() Aufheben() MarkeSetzen() MarkeLöschen() Karol kann noch mehr, er kann vor sich Ziegel hinlegen und aufheben und er kann an seiner aktuellen Stelle eine Marke setzen bzw. löschen. (Karol: Damit man erkennt ob Karol auch ordentlich das U läuft soll er dabei Marken setzen: „U-Form mit Markierungen“ uform2.kdp) (Karol: 4 Ziegel in einer Reihe legen Hinlegen Schritt Hinlegen Schritt Hinlegen Schritt Hinlegen Schritt Programmausführung zeigen : viererreihe.kdp ) Ggf. bei Einstellungen Hinweis auf die Sprunghöhe (Sprungvermögen)

18 Methoden von Karol Schritt() Schritt(Anzahl) LinksDrehen()
RechtsDrehen() Hinlegen() Hinlegen(Anzahl) Aufheben() Aufheben(Anzahl) MarkeSetzen() MarkeLöschen() Warten() Warten(Anzahl) Ton() Methoden von Karol ohne Rückgabewert. Anzahl ist ein formaler Parameter für die Anzahl der Schritte, Anzahl Ziegel oder Anzahl Millisekunden.

19 Objektorientierte Sicht
Karol PositionX = 2 PositionY = 3 Blickrichtung = O Schritt() LinksDrehen() RechtsDrehen() Hinlegen() Aufheben() MarkeSetzen() MarkeLöschen() ... Die Fähigkeiten von Karol können durch neue Methoden erweitert werden; diese müssen vorher vom Programmierer festgelegt werden; festlegen=definieren Selbstdefinierte Anweisungen müssen erst definiert werden, bevor sie verwendet werden können. Propädeutische Hinführung zu „Zerlegen in Teilalgorithmen“. Dies fördert das Denken in Ablaufeinheiten. Nur durch diese Fähigkeit kann man größere, im ersten Moment unüberschaubare Abläufe bearbeiten. Für die Klasse ROBOTER können zusätzlich neue Methoden festgelegt werden.

20 Programm in der Sprache Karol
Anweisung Umdrehen LinksDrehen *Anweisung Programm Umdrehen Schritt *Programm Neue Anweisungen müssen erst definiert werden bevor sie verwendet werden können. „Wir bringen Karol eine neue Methode ‚Umdrehen‘ bei“ Gesamtaufgabe unter Verwendung von Umdrehen: „Karol soll einen Schritt Rückwärts gehen“ (Karol: Eintippen, Formatieren des Listing zeigen) (Karol: rückwärts.kdp)

21 Wiederholung mit fester Anzahl
Bausteine von Algorithmen Wiederholung mit fester Anzahl wiederhole n mal Anweisungen *wiederhole Die Anweisungen im Wiederholungsteil werden nacheinander mehrfach ausgeführt. (entsprechend der angegebenen Anzahl) wiederhole n mal Anweisungen Hierbei auch Einführung der Struktogramme als eine grafische Darstellung eines Algorithmus. (Karol: „Vier Ziegel in einer Reihe legen“; erst ohne Wiederholung durch sequentielles Anschreiben; dann mit Wiederholung 4 mal; wiederhole 4 mal Hinlegen Schritt *wiederhole wfa1.kdp wfa1.kdw) (Karol: „Lege ein Quadrat“ wfa2.kdp und Struktogramm zeigen) (Karol: „Lege Quadratrand“ wfa3.kdp und Struktogramm zeigen; automatisches Formatieren zeigen) Hinweis: Um die Lesbarkeit bei der Projektion zu verbessern die Schriftgöße erhöhen (Einstellungen Editor Schriftgröße 18) Hinweis: Wiederholung mit fester Anzahl benötigt keine Zählvariable ! Hinweis: Keine Blockbildung nötig durch extra Symbole wie {} oder begin end oder ähnliches. Hinweis auf Syntaxhighlighting; Eingabeunterstützung durch Menü; Syntaxprüfung (Farbänderung beim Eingeben bzw. Syntaxprüfung aufrufen)

22 Objektorientierte Sicht
Karol PositionX = 2 PositionY = 3 Blickrichtung = O Schritt() LinksDrehen() RechtsDrehen() Hinlegen() Aufheben() MarkeSetzen() MarkeLöschen() IstWand() NichtIstWand() IstZiegel() IstMarke() Bisher hat Karol Methoden besessen mit denen er bestimmte Vorgänge ausführen kann. Der Aufruf einer Methode dieser Art wird als Anweisung bezeichnet. Karol hat aber auch Methoden, mit denen er auf eine Anfrage mit WAHR oder FALSCH antwortet. Der Aufruf einer Methode dieser Art heißt Bedingung. Damit keine boolschen Terme nötig sind gibt es zu den wichtigen Bedingungen auch die negierte. IstWand(), NichtIstWand(), IstZiegel(), NichtIstZiegel(), IstMarke(), NichtIstMarke(), IstSüden(), IstNorden(), IstOsten(), IstWesten() Die Methode IstZiegel() kann auch einen Parameter haben um Karol die Frage stellen zu können: „Liegen vor dir ... Ziegelsteine“. Zum Beispiel IstZiegel(3). Es können auch eigene, neue Bedingungen festgelegt werden unter Verwendung der Schlüsselwörter WAHR und FALSCH.

23 Methoden von Karol IstWand() NichtIstWand() IstZiegel()
IstZiegel(Anzahl) NichtIstZiegel() NichtIstZiegel(Anzahl) IstMarke() NichtIstMarke() IstSüden() IstNorden() IstWesten() IstOsten() Methoden von Karol die einen boolschen Wert zurückgeben. Anzahl ist ein formaler Parameter für die Anzahl der Ziegel.

24 Wiederholung mit Anfangsbedingung
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 Die Wiederholung mit Anfangsbedingung wird keinmal, einmal oder mehrmals durchlaufen. (Karol: „soll bis zur Wand gehen“ wab1.kdp) Veränderung durch Quader auf dem Weg; der Quader verhält sich wie eine Wand; Aufbau der Welt über 2D-Darstellung; (Karol: wab1a.kdw) Über einen Ziegel würde er selbstverständlich hinweg gehen. (Karol: wab1b.kdw) (Karol: „Ziegel an der Wand entlang legen“ wab2.kdp) (Erweiterung „nur jeden zweiten Ziegel legen“) (Karol: Bei der vorherigen Aufgabe war Karol zum Start in die Ecke plaziert worden; jetzt wird im beigebracht „gehe in die nächste Ecke und stelle dich dort auf “ InDieEcke.kdp; automatische Formatierung eines Programmtextes zeigen) wdh. solange Bedingung Anweisungen

25 Wiederholung mit Endbedingung
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 Die Wiederholung mit Endbedingung wird mindestens einmal oder mehrmals durchlaufen. wdh. solange Bedingung Anweisungen

26 Bedingte Anweisung (zweiseitig)
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 Anweisungen1 Anweisungen2 wahr falsch Die Zweiseitige bedingte Anweisung ist zum Einstieg günstiger als die einseitige. Die Schüler überlegen bei letzterer immer „was passiert dann wenn die Bedingung nicht eintritt“. Bei der zweiseitigen ist dies, im Sinne der Schüler, klar. (Karol: „soll Ziegel invertieren, d.h. wo ein Ziegel liegt aufheben, wo keiner ist hinlegen“ invertieren.kdp)

27 Bedingte Anweisung (einseitig)
Bausteine von Algorithmen Bedingte Anweisung (einseitig) Wenn die Bedingung WAHR ergibt werden die Anweisungen ausgeführt. wenn Bedingung dann Anweisungen *wenn Bedingung Anweisungen wahr falsch (Karol: „Soll eine Reihe auffüllen“ auffüllen.kdp)

28 Bausteine von Algorithmen
Anweisungen einfache Anweisungen Kontrollstrukturen bed.Anweisungen Wiederholungen Methodenaufruf mit fester Anzahl Anfangsbedingung Endbedingung einseitige zweiseitige Links schon offengelassen für die Zuweisung, die erst später behandelt wird. Kontrollstrukturen steuern die Ausführung von Anweisungen, d.h. sie geben an in welcher Reihenfolge, ob bzw. wie oft Anweisungen ausgeführt werden sollen.

29 Programm in der Sprache Karol
Bedingung IstZiegelRechts falsch Rechtsdrehen wenn IstZiegel dann wahr *wenn Linksdrehen *Bedingung Programm wiederhole solange IstZiegelRechts Schritt *wiederhole *Programm Neben den vordefinierten Bedingungen ist es möglich eigene, selbstdefinierte Bedingungen festzulegen. In der Definition der Bedingung müssen die Wörter WAHR bzw. FALSCH vorkommen, die festlegen welchen Wert die Bedingung zurückgibt. Neue Bedingungen müssen erst definiert werden bevor sie verwendet werden können. „Wir bringen Karol eine neue Methode ‚IstZiegelRechts‘ bei. Auf diese Frage antwortet er mit WAHR oder FALSCH“

30 Algorithmen Beispiele - Ziegelrand - Turmbauen - Treppebauen
- Auf der Mauer laufen - Spirale legen - Buchstaben (Projekt) (Karol: Verwendung der gelernten Algorithmen Randlegen und InDieEckeGehen in einem Programm; Hinweis auf die Möglichkeit einer Bibliothek; „Ziegelrand an der Wand entlang mit beliebigem Startpunkt“ ziegelrand.kdp leicht erweitern zu NurJederZweiteZiegelRand) (Karol: „Turmbauen mit Verwendung von Quadratrand“ turm.kdp) (Ergänzung: „Egal wo Karol zu Beginn steht, den gleichen Turm bauen“) (Karol: „Eine Treppe bauen, dabei achten, dass Karol maximal eine Stufe hochspringen kann“ treppebauen.kdp) (Karol: Aus obigen Beispielen kann man eine Burg mit Mauer und einer Reihe Zinnen bauen, bei der in der Mitte eine Treppe auf die Mauer führt; evtl. noch eine Eingangsöffnung einbauen) Zusammenfassung der Kontrollstrukturen und eigenen Anweisungen und Bedingungen: (Karol: „Soll auf einer geschlossenen Ziegellinie laufen“ laufen.kdp) (Karol: „Ziegel in einer Spirale legen“) Für ein größeres Projekt eignet sich zum Beispiel: (Karol: „Karol lernt Buchstaben mit den Ziegeln zu schreiben“ buchstaben.kdp). Jeder Schüler entwickelt jeweils einen Buchstaben, immer mit gleicher Ausgangs- und Endposition. Die Anweisungen heißen wie die Buchstaben und ein Programm lautet dann zum Beispiel H A F E N

31 Hier endet die 7. Jahrgangsstufe. In der 9
Hier endet die 7.Jahrgangsstufe. In der 9.Jahrgangsstufe wird über die „Zustandsorientierte Sicht“ das Variablenkonzept erarbeitet. Dann kann diese auch an Karol gezeigt werden. Hier ist ein Einschub zur „Zustandsorientierten Modellierung“ nötig. Rechte Schaltfläche. <Klick> Vortrag „Zustand.ppt“ von Folie 1 bis 13, dann weiter mit nächster Folie. Wenn Ende für 7.Jahrgangsstufe dann linke Schaltfläche. <Klick>

32 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 Beim Programm Karol kann man Zustände des Systems sehr gut erkennen. Schüler erarbeiten wie sich ein Zustand des ganzen Systems beschreiben läßt. Zur Motivation den selben Algorithmus auf unterschiedliche Welten ansetzen, dabei bemerkt man, dass dies zu anderen Ergebnissen führen kann. Im Folgenden nur das Objekt Karol alleine als System betrachten.

33 Zustandsorientierte Sicht
Karol PositionX = 2 PositionY = 3 Blickrichtung = O MaxSprunghöhe = 1 Schritt() ... Jetzt nur noch ein Objekt betrachten, den Karol. Karol hat Attribute, die sich im Laufe des Ablaufs ändern (PositionX, Blickrichtung) und andere, die während des ganzen Ablaufs konstant bleiben (MaxSprunghöhe). Wer verändert die Werte der Attribute ? Es sind die Methoden der Figur, z.B. Schritt() Der Zustand eines Objekts ist durch seine Attributwerte und die Beziehungen zu anderen Objekten festgelegt.

34 Zustandsorientierte Sicht
Die Zustände können eigene Namen bekommen wie z.B. Z4 oder Z108 Mit jeder Änderung entsteht ein neuer Variablenzustand. Im Laufe eines Programms entstehen viele Variablenzustände, nämlich jedesmal wenn sich der Wert eines Attributs ändert. Aber andererseits muss es nicht sein, dass im Laufe eines Programms alle möglichen Zustände auch angenommen werden. PositionX = 2 PositionY = 1 Blickrichtung = S MaxSprunghöhe = 1 PositionX = 2 PositionY = 3 Blickrichtung = O MaxSprunghöhe = 1

35 Zustandsorientierte Sicht
Ein Algorithmus führt das Karol-System von einem Zustand in einen anderen Zustand über. Er vollzieht einen Zustandsübergang.

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

37 Variable / Konstante - Bezeichner, Name - Typ, Wertebereich
- Wert, Inhalt 2 PositionX Typen: Ganzzahl Gleitpunktzahl Zeichen Zeichenfolgen Logisch Deklaration Instanzierung Initialisierung LP: „Variablenkonzept (Bezeichner, Wert, Typ, Zuweisung)“ Modell der Schachtel: aussen beschriftet mit dem Bezeichner der Variablen, innen ein Zettel auf dem der Wert steht, Größe der Schachtel ist ein Symbol für die möglichen Werte (Wertebereich, Domäne,Typ) die der Variablenwert annehmen kann (z.B. eine Wort=string braucht mehr Platz als eine Zahl=integer). Eine Informatikschachtel kann nur genau einen Zettel enthalten. Wird ein Wert zugewiesen, so wird der alte Zettel entfernt und ein neuer in die Schachtel gelegt. Bei einer Konstanten ist der Schachtelboden klebrig, das heißt der Zettel kann nicht entfernt werden. (Karol: Die Attribute PositionX sind z.B. Ganzzahl und die Blickrichtung ist vom Typ Zeichen. Die maximale Sprunghöhe ist Konstante vom Typ Ganzzahl) Eigentlich benötigt eine Variable nach der Deklaration auch noch eine Instanzierung (Einrichtung). Bei den meisten Programmiersprachen geschieht dies jedoch automatisch bei der Deklaration. Wir betrachten Variable als eine Art Container, die jeweils einen bestimmten Wert aus einer Wertemenge (Typ) aufnehmen können.

38 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). Man muss also beim Modellierung zusätzlich überlegen durch welche Variablen wird der Zustand beschrieben. Didaktischer Hinweis: Wenn man später beim Algorithmus eine Variablenbelegungstabelle anfertigt ist darauf zu achten, dass alle Werte in einer Zeile einen Zustand repräsentieren und nicht verrutschen (ggf. keine Einträge wenn der Wert der Varaiblen gleich bleibt oder den gleichen Eintrag wiederholen - der Wert der Variablen ist ja in diesem Zustand gleich).

39 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. Man könnte Karol auch direkt zu einer festen Stelle springen lassen, in dem man die Koordinaten der Zielstelle bei den Attributen direkt eingibt (dann könnte Karol fliegen).

40 Bausteine von Algorithmen
Anweisungen einfache Anweisungen Kontrollstrukturen Aufruf Zuweisung bed.Anweisungen Wiederholungen LP: „Wiederholung und Verfeinerung der Ablaufstrukturen, Algorithmusbegriff; graphische Darstellung;“ 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. einseitige zweiseitige mit fester Anzahl Anfangsbedingung Endbedingung

41 Variable / Konstante Überwachung des Rucksacks Karol PositionX = 2
PositionY = 3 Blickrichtung = O MaxSprunghöhe = 1 ImRucksack = 5 MaxImRucksack = 20 Schritt() ... IstVoll() IstLeer() NichtIstLeer() Propädeutische Hinführung zum Variablenbegriff mit Karol: Karol trägt die Ziegel in einem Rucksack mit sich; bis jetzt wurde das nicht berücksichtigt d.h. der Rucksack hatte unendliches Fassungsvermögen und Karol konnte einen beliebig schweren tragen. Karol verfügt über ein weiteres Attribut, dies ist der Rucksack. D.h. er kann mitzählen wieviele Steine er im Rucksack hat. Er kann aber nur prüfen ob Voll oder Leer, die genaue Anzahl weiß er nicht. IstVoll() bzw. IstLeer() (Karol: Einstellungen für den Rucksackzeigen: Anfangswert = Initialisieren; MaxWert = Konstante belegen ) (Karol: rucksack.kdp) (Karol: „Staple alle Ziegel in einer Reihe“ stapel.kdp) Karol kennt die „Rucksack-Methoden“: IstVoll(), NichtIstVoll(), IstLeer(), NichtIstLeer(), HatZiegel(), HatZiegel(Anzahl) Überwachung des Rucksacks

42 Wiederholung und Vertiefung
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 In der 9.Jahrgangsstufe unbedingt noch einige Stunden mit dem Programm Karol aus der 7.Jahrgangsstufe arbeiten. Zur Festigung des Algorithmusbegriffs und zur Wiederholung der Grundstrukturen. (Karol: Erst einige Beispiele ähnlich zur 7.Jgst:Turmbauen, Burgbauen, auf der Mauer laufen, dann schwierigere)

43 Heimat von Karol www.schule.bayern.de/karol
Karol: Hinweis auf eigene Figuren; im Handbuch ist die genaue, erforderliche Bitmapgröße beschrieben;

44 Algorithmik Ende Der weitere Teil der Algorithmik wird mit einer imperativen Sprache durchgeführt.


Herunterladen ppt "Einführung in die Algorithmik aus objektorientierter Sicht"

Ähnliche Präsentationen


Google-Anzeigen