Einstieg in die Algorithmik mit Karol

Werbung
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
Herunterladen