Upload
kolman-schobel
View
109
Download
2
Embed Size (px)
Citation preview
Einführung in die
Algorithmik
Informatik am Gymnasium
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
- Unterschied zwischen Anweisungsfolge (Programmtext) und Systemreaktion beim Programmablauf verstehen
Probleme
- Programmiersprache erfordert schon bei einfachsten Aufgabenstellungen umfang-reiche syntaktische Grundkenntnisse
- Direkte Einführung der einzelnen Kontroll-strukturen mit einer imperativen Program-miersprache führt zu „Einschrittigen Algorithmen“
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.
(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) )
Didaktische Forderungen
- Einfache, klar aufgebaute, leicht bedienbare Entwicklungsumgebung
- Minilanguage <-> SublanguageAnlehnung 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
HistorieMinilanguages
Richard E. Pattis
Karel the Robot
A Gentle Introduction to the Art of Programming
John Wiley & Sons 1981
Objektorientierte Sicht
ROBOTER
PositionXPositionYBlickrichtung
Karol
PositionX = 2PositionY = 1Blickrichtung = S
Karol
PositionX = 2PositionY = 1Blickrichtung = S
Schritt()LinksDrehen()RechtsDrehen()
Karol
PositionX = 2PositionY = 1Blickrichtung = S
Schritt()LinksDrehen()RechtsDrehen()
Mache einenSchritt vorwärts
Objektorientierte Sicht
Schritt()Schritt()
Karol
PositionX = 2PositionY = 2Blickrichtung = S
Schritt()LinksDrehen()RechtsDrehen()
Objektorientierte Sicht
AnweisungSenden einer Botschaft an ein Objekt, das mit der zugehörigen Methode reagiert(Methodenaufruf)
„Robot Karol“
Anweisungen
„Karol soll sich in einer U-Form bewegen“
SchrittSchrittLinksDrehenSchrittSchrittLinksDrehenSchrittSchritt
2 mal vorwärtsLinksum2 mal vorwärtsLinksum2 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: Konzeption und Entwurf von Algorithmen, die als Programme realisiert und durch Computersysteme ausgeführt werden.
Programmieren
Problembeschreibung
Algorithmus
Programm
Maschinenprogramm
Umgangssprache, mehrdeutig
eindeutig, semiformal, schrittweiser Ablauf
exakter Formalismus, genormt, vom Prozessor unabhängig
einfache Sprache, Prozessor abhängig
Programm in der Sprache Karol
SchrittSchrittLinksDrehenSchrittSchrittLinksDrehenSchrittSchritt
uform.kdp und uform.kdw
Bausteine von Algorithmen
Eine Sequenz ist die Zusammenfassung einer Folge von Anweisungen, die hintereinander ausgeführt werden.
Sequenz
Karol
PositionX = 1PositionY = 1Blickrichtung = 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 = 2PositionY = 3Blickrichtung = 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
Die Anweisungen im Wiederholungsteil werden nacheinander mehrfach ausgeführt. (entsprechend der angegebenen Anzahl)
Wiederholung mit fester Anzahl
wiederhole n mal
Anweisungen
Bausteine von Algorithmen
wiederhole n mal Anweisungen*wiederhole
Karol
PositionX = 2PositionY = 3Blickrichtung = 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()
Die Anweisungen im Wiederholungsteil werden so oft wiederholt, solange die Bedingung WAHR ergibt. Die Überprüfung der Bedingung erfolgt am Anfang jeder Wiederholung.
Wiederholung mit Anfangsbedingung
wdh. solange Bedingung
Anweisungen
Bausteine von Algorithmen
wiederhole solange Bedingung Anweisungen*wiederhole
Die Anweisungen im Wiederholungsteil werden so oft wiederholt, solange die Bedingung WAHR ergibt. Die Überprüfung der Bedingung erfolgt am Ende jeder Wiederholung.
Wiederholung mit Endbedingung
wdh. solange Bedingung
Anweisungen
Bausteine von Algorithmen
wiederholeAnweisungen
*wiederhole solange Bedingung
In Abhängigkeit von der Bedingung werden die Anweisungen1 bzw. die Anweisungen2 ausgeführt.
Bedingte Anweisung (zweiseitig)
Bausteine von Algorithmen
wenn Bedingung dannAnweisungen1
sonstAnweisungen2
*wenn
Bedingung
Anweisungen1 Anweisungen2
wahr falsch
Wenn die Bedingung WAHR ergibt werden die Anweisungen ausgeführt.
Bedingte Anweisung (einseitig)
Bausteine von Algorithmen
wenn Bedingung dannAnweisungen
*wenn
Bedingung
Anweisungen
wahr falsch
Bausteine von Algorithmen
Anweisungen
einfache Anweisungen Kontrollstrukturen
bed.Anweisungen WiederholungenMethodenaufruf
mit fester AnzahlAnfangsbedingungEndbedingung
einseitigezweiseitige
Programm in der Sprache Karol
Bedingung IstZiegelRechts falsch Rechtsdrehen wenn IstZiegel dann wahr *wenn Linksdrehen*Bedingung
Programm wiederhole solange IstZiegelRechts Schritt *wiederhole*Programm
AlgorithmenBeispiele
- 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
Karol
PositionX = 2PositionY = 3Blickrichtung = OMaxSprunghöhe = 1
Schritt()...
Der Zustand eines Objekts ist durch seine Attributwerte und die Beziehungen zu anderen Objekten festgelegt.
Zustandsorientierte Sicht
Zustandsorientierte Sicht
PositionX = 2PositionY = 1Blickrichtung = SMaxSprunghöhe = 1
PositionX = 2PositionY = 3Blickrichtung = OMaxSprunghöhe = 1
Ein Algorithmus führt das Karol-System von einem Zustand in einen anderen Zustand über. Er vollzieht einen Zustandsübergang.
Zustandsorientierte Sicht
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
PositionX
- Bezeichner, Name- Typ, Wertebereich- Wert, Inhalt
DeklarationInstanzierungInitialisierung
Typen:GanzzahlGleitpunktzahlZeichenZeichenfolgenLogisch
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).
Zuweisung
Bausteine von Algorithmen
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.
Anweisungen
Bausteine von Algorithmen
einfache Anweisungen Kontrollstrukturen
bed.Anweisungen Wiederholungen
mit fester AnzahlAnfangsbedingungEndbedingung
einseitigezweiseitige
AufrufZuweisung
Karol
PositionX = 2PositionY = 3Blickrichtung = OMaxSprunghöhe = 1ImRucksack = 5MaxImRucksack = 20
Schritt()...IstVoll()IstLeer()NichtIstLeer()...
Variable / Konstante
Überwachung des Rucksacks
AlgorithmenWiederholung 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
AlgorithmikEnde