Einführung in die Algorithmik

Preview:

DESCRIPTION

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 - PowerPoint PPT Presentation

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

Recommended