Einführung in die Algorithmik
description
Transcript of Einführung in die Algorithmik
![Page 1: Einführung in die Algorithmik](https://reader035.fdocument.pub/reader035/viewer/2022062222/5681599f550346895dc6ed03/html5/thumbnails/1.jpg)
Einführung in die
Algorithmik
Informatik am Gymnasium
aus objektorientierter Sicht
![Page 2: Einführung in die Algorithmik](https://reader035.fdocument.pub/reader035/viewer/2022062222/5681599f550346895dc6ed03/html5/thumbnails/2.jpg)
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
![Page 3: Einführung in die Algorithmik](https://reader035.fdocument.pub/reader035/viewer/2022062222/5681599f550346895dc6ed03/html5/thumbnails/3.jpg)
- 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) )
![Page 4: Einführung in die Algorithmik](https://reader035.fdocument.pub/reader035/viewer/2022062222/5681599f550346895dc6ed03/html5/thumbnails/4.jpg)
Didaktische Forderungen
- Einfache, klar aufgebaute, leicht bedienbare Entwicklungsumgebung
- Minilanguage <-> SublanguageAnlehnung der
Programmiersprache an die natürliche Sprache
- Eingabehilfen bei der Erfassung des Programms
![Page 5: Einführung in die Algorithmik](https://reader035.fdocument.pub/reader035/viewer/2022062222/5681599f550346895dc6ed03/html5/thumbnails/5.jpg)
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
![Page 6: Einführung in die Algorithmik](https://reader035.fdocument.pub/reader035/viewer/2022062222/5681599f550346895dc6ed03/html5/thumbnails/6.jpg)
HistorieMinilanguages
Richard E. Pattis
Karel the Robot
A Gentle Introduction to the Art of Programming
John Wiley & Sons 1981
![Page 7: Einführung in die Algorithmik](https://reader035.fdocument.pub/reader035/viewer/2022062222/5681599f550346895dc6ed03/html5/thumbnails/7.jpg)
Objektorientierte Sicht
ROBOTER
PositionXPositionYBlickrichtung
Karol
PositionX = 2PositionY = 1Blickrichtung = S
Karol
PositionX = 2PositionY = 1Blickrichtung = S
Schritt()LinksDrehen()RechtsDrehen()
![Page 8: Einführung in die Algorithmik](https://reader035.fdocument.pub/reader035/viewer/2022062222/5681599f550346895dc6ed03/html5/thumbnails/8.jpg)
Karol
PositionX = 2PositionY = 1Blickrichtung = S
Schritt()LinksDrehen()RechtsDrehen()
Mache einenSchritt vorwärts
Objektorientierte Sicht
Schritt()Schritt()
![Page 9: Einführung in die Algorithmik](https://reader035.fdocument.pub/reader035/viewer/2022062222/5681599f550346895dc6ed03/html5/thumbnails/9.jpg)
Karol
PositionX = 2PositionY = 2Blickrichtung = S
Schritt()LinksDrehen()RechtsDrehen()
Objektorientierte Sicht
AnweisungSenden einer Botschaft an ein Objekt, das mit der zugehörigen Methode reagiert(Methodenaufruf)
![Page 10: Einführung in die Algorithmik](https://reader035.fdocument.pub/reader035/viewer/2022062222/5681599f550346895dc6ed03/html5/thumbnails/10.jpg)
„Robot Karol“
![Page 11: Einführung in die Algorithmik](https://reader035.fdocument.pub/reader035/viewer/2022062222/5681599f550346895dc6ed03/html5/thumbnails/11.jpg)
Anweisungen
„Karol soll sich in einer U-Form bewegen“
SchrittSchrittLinksDrehenSchrittSchrittLinksDrehenSchrittSchritt
2 mal vorwärtsLinksum2 mal vorwärtsLinksum2 mal vorwärts
![Page 12: Einführung in die Algorithmik](https://reader035.fdocument.pub/reader035/viewer/2022062222/5681599f550346895dc6ed03/html5/thumbnails/12.jpg)
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.
![Page 13: Einführung in die Algorithmik](https://reader035.fdocument.pub/reader035/viewer/2022062222/5681599f550346895dc6ed03/html5/thumbnails/13.jpg)
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.
![Page 14: Einführung in die Algorithmik](https://reader035.fdocument.pub/reader035/viewer/2022062222/5681599f550346895dc6ed03/html5/thumbnails/14.jpg)
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
![Page 15: Einführung in die Algorithmik](https://reader035.fdocument.pub/reader035/viewer/2022062222/5681599f550346895dc6ed03/html5/thumbnails/15.jpg)
Programm in der Sprache Karol
SchrittSchrittLinksDrehenSchrittSchrittLinksDrehenSchrittSchritt
uform.kdp und uform.kdw
![Page 16: Einführung in die Algorithmik](https://reader035.fdocument.pub/reader035/viewer/2022062222/5681599f550346895dc6ed03/html5/thumbnails/16.jpg)
Bausteine von Algorithmen
Eine Sequenz ist die Zusammenfassung einer Folge von Anweisungen, die hintereinander ausgeführt werden.
Sequenz
![Page 17: Einführung in die Algorithmik](https://reader035.fdocument.pub/reader035/viewer/2022062222/5681599f550346895dc6ed03/html5/thumbnails/17.jpg)
Karol
PositionX = 1PositionY = 1Blickrichtung = O
Schritt()LinksDrehen()RechtsDrehen()
Hinlegen()Aufheben()
MarkeSetzen()MarkeLöschen()
Objektorientierte Sicht
![Page 18: Einführung in die Algorithmik](https://reader035.fdocument.pub/reader035/viewer/2022062222/5681599f550346895dc6ed03/html5/thumbnails/18.jpg)
Methoden von Karol
Schritt()Schritt(Anzahl)LinksDrehen()RechtsDrehen()Hinlegen()Hinlegen(Anzahl)Aufheben()Aufheben(Anzahl)MarkeSetzen()MarkeLöschen()Warten()Warten(Anzahl)Ton()
![Page 19: Einführung in die Algorithmik](https://reader035.fdocument.pub/reader035/viewer/2022062222/5681599f550346895dc6ed03/html5/thumbnails/19.jpg)
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.
![Page 20: Einführung in die Algorithmik](https://reader035.fdocument.pub/reader035/viewer/2022062222/5681599f550346895dc6ed03/html5/thumbnails/20.jpg)
Programm in der Sprache Karol
Anweisung Umdrehen LinksDrehen LinksDrehen*Anweisung
Programm Umdrehen Schritt Umdrehen*Programm
![Page 21: Einführung in die Algorithmik](https://reader035.fdocument.pub/reader035/viewer/2022062222/5681599f550346895dc6ed03/html5/thumbnails/21.jpg)
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
![Page 22: Einführung in die Algorithmik](https://reader035.fdocument.pub/reader035/viewer/2022062222/5681599f550346895dc6ed03/html5/thumbnails/22.jpg)
Karol
PositionX = 2PositionY = 3Blickrichtung = O
Schritt()LinksDrehen()RechtsDrehen()Hinlegen()Aufheben()MarkeSetzen()MarkeLöschen()
IstWand()NichtIstWand()IstZiegel()IstMarke()
Objektorientierte Sicht
![Page 23: Einführung in die Algorithmik](https://reader035.fdocument.pub/reader035/viewer/2022062222/5681599f550346895dc6ed03/html5/thumbnails/23.jpg)
Methoden von Karol
IstWand()NichtIstWand()IstZiegel()IstZiegel(Anzahl)NichtIstZiegel()NichtIstZiegel(Anzahl)IstMarke()NichtIstMarke()IstSüden()IstNorden()IstWesten()IstOsten()
![Page 24: Einführung in die Algorithmik](https://reader035.fdocument.pub/reader035/viewer/2022062222/5681599f550346895dc6ed03/html5/thumbnails/24.jpg)
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
![Page 25: Einführung in die Algorithmik](https://reader035.fdocument.pub/reader035/viewer/2022062222/5681599f550346895dc6ed03/html5/thumbnails/25.jpg)
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
![Page 26: Einführung in die Algorithmik](https://reader035.fdocument.pub/reader035/viewer/2022062222/5681599f550346895dc6ed03/html5/thumbnails/26.jpg)
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
![Page 27: Einführung in die Algorithmik](https://reader035.fdocument.pub/reader035/viewer/2022062222/5681599f550346895dc6ed03/html5/thumbnails/27.jpg)
Wenn die Bedingung WAHR ergibt werden die Anweisungen ausgeführt.
Bedingte Anweisung (einseitig)
Bausteine von Algorithmen
wenn Bedingung dannAnweisungen
*wenn
Bedingung
Anweisungen
wahr falsch
![Page 28: Einführung in die Algorithmik](https://reader035.fdocument.pub/reader035/viewer/2022062222/5681599f550346895dc6ed03/html5/thumbnails/28.jpg)
Bausteine von Algorithmen
Anweisungen
einfache Anweisungen Kontrollstrukturen
bed.Anweisungen WiederholungenMethodenaufruf
mit fester AnzahlAnfangsbedingungEndbedingung
einseitigezweiseitige
![Page 29: Einführung in die Algorithmik](https://reader035.fdocument.pub/reader035/viewer/2022062222/5681599f550346895dc6ed03/html5/thumbnails/29.jpg)
Programm in der Sprache Karol
Bedingung IstZiegelRechts falsch Rechtsdrehen wenn IstZiegel dann wahr *wenn Linksdrehen*Bedingung
Programm wiederhole solange IstZiegelRechts Schritt *wiederhole*Programm
![Page 30: Einführung in die Algorithmik](https://reader035.fdocument.pub/reader035/viewer/2022062222/5681599f550346895dc6ed03/html5/thumbnails/30.jpg)
AlgorithmenBeispiele
- Ziegelrand
- Turmbauen
- Treppebauen
- Auf der Mauer laufen
- Spirale legen
- Buchstaben (Projekt)
![Page 31: Einführung in die Algorithmik](https://reader035.fdocument.pub/reader035/viewer/2022062222/5681599f550346895dc6ed03/html5/thumbnails/31.jpg)
![Page 32: Einführung in die Algorithmik](https://reader035.fdocument.pub/reader035/viewer/2022062222/5681599f550346895dc6ed03/html5/thumbnails/32.jpg)
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
![Page 33: Einführung in die Algorithmik](https://reader035.fdocument.pub/reader035/viewer/2022062222/5681599f550346895dc6ed03/html5/thumbnails/33.jpg)
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
![Page 34: Einführung in die Algorithmik](https://reader035.fdocument.pub/reader035/viewer/2022062222/5681599f550346895dc6ed03/html5/thumbnails/34.jpg)
Zustandsorientierte Sicht
PositionX = 2PositionY = 1Blickrichtung = SMaxSprunghöhe = 1
PositionX = 2PositionY = 3Blickrichtung = OMaxSprunghöhe = 1
![Page 35: Einführung in die Algorithmik](https://reader035.fdocument.pub/reader035/viewer/2022062222/5681599f550346895dc6ed03/html5/thumbnails/35.jpg)
Ein Algorithmus führt das Karol-System von einem Zustand in einen anderen Zustand über. Er vollzieht einen Zustandsübergang.
Zustandsorientierte Sicht
![Page 36: Einführung in die Algorithmik](https://reader035.fdocument.pub/reader035/viewer/2022062222/5681599f550346895dc6ed03/html5/thumbnails/36.jpg)
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.
![Page 37: Einführung in die Algorithmik](https://reader035.fdocument.pub/reader035/viewer/2022062222/5681599f550346895dc6ed03/html5/thumbnails/37.jpg)
Variable / Konstante
2
PositionX
- Bezeichner, Name- Typ, Wertebereich- Wert, Inhalt
DeklarationInstanzierungInitialisierung
Typen:GanzzahlGleitpunktzahlZeichenZeichenfolgenLogisch
![Page 38: Einführung in die Algorithmik](https://reader035.fdocument.pub/reader035/viewer/2022062222/5681599f550346895dc6ed03/html5/thumbnails/38.jpg)
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).
![Page 39: Einführung in die Algorithmik](https://reader035.fdocument.pub/reader035/viewer/2022062222/5681599f550346895dc6ed03/html5/thumbnails/39.jpg)
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.
![Page 40: Einführung in die Algorithmik](https://reader035.fdocument.pub/reader035/viewer/2022062222/5681599f550346895dc6ed03/html5/thumbnails/40.jpg)
Anweisungen
Bausteine von Algorithmen
einfache Anweisungen Kontrollstrukturen
bed.Anweisungen Wiederholungen
mit fester AnzahlAnfangsbedingungEndbedingung
einseitigezweiseitige
AufrufZuweisung
![Page 41: Einführung in die Algorithmik](https://reader035.fdocument.pub/reader035/viewer/2022062222/5681599f550346895dc6ed03/html5/thumbnails/41.jpg)
Karol
PositionX = 2PositionY = 3Blickrichtung = OMaxSprunghöhe = 1ImRucksack = 5MaxImRucksack = 20
Schritt()...IstVoll()IstLeer()NichtIstLeer()...
Variable / Konstante
Überwachung des Rucksacks
![Page 42: Einführung in die Algorithmik](https://reader035.fdocument.pub/reader035/viewer/2022062222/5681599f550346895dc6ed03/html5/thumbnails/42.jpg)
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
![Page 43: Einführung in die Algorithmik](https://reader035.fdocument.pub/reader035/viewer/2022062222/5681599f550346895dc6ed03/html5/thumbnails/43.jpg)
Heimat von Karol
www.schule.bayern.de/karol
![Page 44: Einführung in die Algorithmik](https://reader035.fdocument.pub/reader035/viewer/2022062222/5681599f550346895dc6ed03/html5/thumbnails/44.jpg)
AlgorithmikEnde