Matthias Spohrer · TU München Modul Ablaufmodellierung 2. Präsenzveranstaltung – 13.03.2003 –...

41
Matthias Spohrer · TU München Modul „Ablaufmodellierung“ Präsenzveranstaltung – 13.03.2003 – TU Stammgelände Innensta Nachqualifizierungskurs für Informatiklehrkräfte

Transcript of Matthias Spohrer · TU München Modul Ablaufmodellierung 2. Präsenzveranstaltung – 13.03.2003 –...

Page 1: Matthias Spohrer · TU München Modul Ablaufmodellierung 2. Präsenzveranstaltung – 13.03.2003 – TU Stammgelände Innenstadt Nachqualifizierungskurs für Informatiklehrkräfte.

Matthias Spohrer · TU München

Modul „Ablaufmodellierung“

2. Präsenzveranstaltung – 13.03.2003 – TU Stammgelände Innenstadt

Nachqualifizierungskurs für Informatiklehrkräfte

Page 2: Matthias Spohrer · TU München Modul Ablaufmodellierung 2. Präsenzveranstaltung – 13.03.2003 – TU Stammgelände Innenstadt Nachqualifizierungskurs für Informatiklehrkräfte.

Nachqualifizierungskurs für Informatiklehrkräfte© 2003 Matthias Spohrer · TU München

Seite 2

Inhaltsübersicht

Informationen Überblick über Programmiersprachen Vergleich Imperativ - Funktional Wiederholung: Grundstrukturen Imperativer Programme Call-by-value / Call-by-reference Der Quicksort Einführung in die funktionale Programmierung: Haskell

Page 3: Matthias Spohrer · TU München Modul Ablaufmodellierung 2. Präsenzveranstaltung – 13.03.2003 – TU Stammgelände Innenstadt Nachqualifizierungskurs für Informatiklehrkräfte.

Nachqualifizierungskurs für Informatiklehrkräfte© 2003 Matthias Spohrer · TU München

Seite 3

Infos - Präsenztage

Donnerstag, 13.03.03

14-18 Uhr HS 0670

Funktionale Modellierung

Dienstag, 08.04.03 14-18 Uhr HS 1601

OOM

Mittwoch, 07.05.03 14-18 Uhr HS 1601

OOM

Montag, 02.06.03* 15(?)-18 Uhr*

HS 0220

Auf Wunsch, zur Klausur

Donnerstag, 26.06.03

10-12 Uhr HS 0220

Klausur

*ob und ab wann dieser Präsenztag stattfinden soll, werden wir jetzt gemeinsam ausmachen. •Außerdem eine Abschlussveranstaltung im Juli.

Page 4: Matthias Spohrer · TU München Modul Ablaufmodellierung 2. Präsenzveranstaltung – 13.03.2003 – TU Stammgelände Innenstadt Nachqualifizierungskurs für Informatiklehrkräfte.

Nachqualifizierungskurs für Informatiklehrkräfte© 2003 Matthias Spohrer · TU München

Seite 4

Sonstiges / Infos / Aussprache

Präsenztag nächstes Schuljahr: wie angekündigt DienstagDienstag

Fehlende Stammblätter / Einverständniserklärungen bitte umgehend abgeben!!!!!

Auffälligkeiten zu den Korrekturen

Anmerkungen / Wünsche / Fragen zum aktuellen Material...

Unterschied Felder – Verbund – Liste?

Page 5: Matthias Spohrer · TU München Modul Ablaufmodellierung 2. Präsenzveranstaltung – 13.03.2003 – TU Stammgelände Innenstadt Nachqualifizierungskurs für Informatiklehrkräfte.

Nachqualifizierungskurs für Informatiklehrkräfte© 2003 Matthias Spohrer · TU München

Seite 5

Kleine Aufwärmübung

Staatsexamen Herbst 2000, Thema II, Aufgabe 1Staatsexamen Herbst 2000, Thema II, Aufgabe 1Geben Sie Zustandsdiagramme für deterministische endliche Automaten für die folgenden Sprachen an.a) Die Menge der Wörter w{a,b}*,deren Länge |w| entweder durch 2 oder durch 3 teilbar ist.

Page 6: Matthias Spohrer · TU München Modul Ablaufmodellierung 2. Präsenzveranstaltung – 13.03.2003 – TU Stammgelände Innenstadt Nachqualifizierungskurs für Informatiklehrkräfte.

Nachqualifizierungskurs für Informatiklehrkräfte© 2003 Matthias Spohrer · TU München

Seite 6

Falls der Wert von a größer als 0 ist, erhöhe a um 1

Kontext: Datentyp von a

Syntax

Aufbau der (zulässigen) ProgrammtexteDefinition durch eine Grammatik

Semantik

Bedeutung der Syntax unter Berücksichtigung des Kontextes

Unterscheidung

Beispiel:

if (a > 0) a = a + 1;

Programmiersprachen

Einteilung der Programmiersprachen in

• niedere Programmiersprachen• höhere oder problemorientierte Programmiersprachen

Page 7: Matthias Spohrer · TU München Modul Ablaufmodellierung 2. Präsenzveranstaltung – 13.03.2003 – TU Stammgelände Innenstadt Nachqualifizierungskurs für Informatiklehrkräfte.

Nachqualifizierungskurs für Informatiklehrkräfte© 2003 Matthias Spohrer · TU München

Seite 7

Niedere Programmiersprachen

Maschinensprache:

Darstellung der Befehle durch Binärcode

Vorteil: direkte Ausführung durch den jeweiligen Prozessor, damit schnell

Nachteil: prozessorabhängigfür den Menschen nicht verständlich

Beispiel: 00101011 00000110 11010101

Assemblersprache:

Darstellung der Maschinenbefehle durch mnemonische Symbole

Vorteil: leichter verständlich

Nachteil: prozessorabhängig, Übersetzung in Maschinensprache notwendig

Beispiel: move 9 A ( A Akkumulator = spezieller Speicher)add 10 A

Page 8: Matthias Spohrer · TU München Modul Ablaufmodellierung 2. Präsenzveranstaltung – 13.03.2003 – TU Stammgelände Innenstadt Nachqualifizierungskurs für Informatiklehrkräfte.

Nachqualifizierungskurs für Informatiklehrkräfte© 2003 Matthias Spohrer · TU München

Seite 8

Höhere Programmiersprachen

Sprachen zur Formulierung einer Problemlösung

Man unterscheidet:

• imperative Programmiersprachen

• objektorientierte Programmiersprachen

• funktionale Programmiersprachen

• logische (prädikative) Programmiersprachen

• Anfragesprachen für Datenbanken, z.B. SQL

• Internetsprachen, z.B. HTML, XML

• Entwurfs- und Spezifikationssprachen, z.B. UML

„Klassische“ Einteilung, orientiert am vorliegenden Denkschema

Page 9: Matthias Spohrer · TU München Modul Ablaufmodellierung 2. Präsenzveranstaltung – 13.03.2003 – TU Stammgelände Innenstadt Nachqualifizierungskurs für Informatiklehrkräfte.

Nachqualifizierungskurs für Informatiklehrkräfte© 2003 Matthias Spohrer · TU München

Seite 9

Imperative Programmiersprachen

Grundprinzipien: + Anwendung bei algorithmischen Problemen (festgelegte Folge von Anweisungen)+ Variablenkonzept

Beispiele: Basic, Pascal, C

Programmbeispiel: Sortier-Algorithmen

„Grundlagen der Programmierung“ im Studienmaterial „betrachtet“

Java als imperative Programmiersprache

Page 10: Matthias Spohrer · TU München Modul Ablaufmodellierung 2. Präsenzveranstaltung – 13.03.2003 – TU Stammgelände Innenstadt Nachqualifizierungskurs für Informatiklehrkräfte.

Nachqualifizierungskurs für Informatiklehrkräfte© 2003 Matthias Spohrer · TU München

Seite 10

Funktionale Programmiersprachen

Grundprinzipien: + Programm = Funktion, die sich aus anderen Funktionen zusammensetzen kann

+ wichtigstes Konstruktionsprinzip: Rekursion

+ keine Variablen (= benannter Speicherplatz)

Beispiele: Gofer / Haskell, LISP / Scheme

Programmbeispiel: in Gofer / Haskell:

quadrat::Int -- > Intquadrat n = n * n

binom:: (Int, Int) --> Intbinom n m = quadrat(n) + 2 * n * m + quadrat(m)

Aufruf z.B. mit binom(2,3)

Page 11: Matthias Spohrer · TU München Modul Ablaufmodellierung 2. Präsenzveranstaltung – 13.03.2003 – TU Stammgelände Innenstadt Nachqualifizierungskurs für Informatiklehrkräfte.

Nachqualifizierungskurs für Informatiklehrkräfte© 2003 Matthias Spohrer · TU München

Seite 11

Logische Programmiersprachen

Grundprinzipien: Formulierung des eigenen Wissens in Form einer Menge von Regeln

Computer versucht mit Hilfe der Regeln, selbstständig eine Lösung zu finden

Beispiele: PROLOG

Programmbeispiel: in PROLOG

Heiratsbeziehung: verheiratet(Mann, Frau)

Regeln: verheiratet(Heinz, Klara). verheiratet(Klaus, Maria).

?verheiratet(Heinz, Klara)yes

?verheiratet(Klaus, Frau)

Frau = Maria

Page 12: Matthias Spohrer · TU München Modul Ablaufmodellierung 2. Präsenzveranstaltung – 13.03.2003 – TU Stammgelände Innenstadt Nachqualifizierungskurs für Informatiklehrkräfte.

Nachqualifizierungskurs für Informatiklehrkräfte© 2003 Matthias Spohrer · TU München

Seite 12

Objektorientierte Programmiersprachen

Grundprinzipien: Objekte mit Eigenschaften und Operationen

Klassenbildung

Vererbung

Polymorphie

Dynamische Bindung

Beispiele: C++, Java, Delphi (mit Einschränkungen)

Programmbeispiel: Kontenverwaltung bei einer Bank

-> OOM - Modul-> OOM - Modul

Page 13: Matthias Spohrer · TU München Modul Ablaufmodellierung 2. Präsenzveranstaltung – 13.03.2003 – TU Stammgelände Innenstadt Nachqualifizierungskurs für Informatiklehrkräfte.

Nachqualifizierungskurs für Informatiklehrkräfte© 2003 Matthias Spohrer · TU München

Seite 13

Zusammenfassung

Viele Sprachen benutzen auch Konzepte anderer Sprachgruppen.

Beispiel: Verwendung von Konzepten imperativer Sprachen in Java bei der Programmierung von Methoden.

Es gibt keine beste Programmiersprache

Die Wahl der Sprache ist abhängig vom zu lösenden Problem!

Page 14: Matthias Spohrer · TU München Modul Ablaufmodellierung 2. Präsenzveranstaltung – 13.03.2003 – TU Stammgelände Innenstadt Nachqualifizierungskurs für Informatiklehrkräfte.

Nachqualifizierungskurs für Informatiklehrkräfte© 2003 Matthias Spohrer · TU München

Seite 14

Imperative und funktionale Programmierspr.

Funktional Imperativ

Grundprinzip

Funktionales Programm = Term, in dem selbstdefinierte

Funktionen vorkommen können

Zustand A (= Speicherbelegung)

Zustand B (= „neue“ Speicherbel.)

Imperatives Programm = Folge von Zustandskombinationen der

betroffenen Variablen

Variablen als benannter Container zur Aufnahme eines Wertes (eines be-stimmten Typs )

Nein Ja

Problem: Seiteneffekt, verstanden als. „unerwünschte, nichtbeobach-tete“ Änderung einer Variablen ( Abschnitt „Felder“ im Material)

Bedingungsanweisung Ja Ja

Wiederholungsanweisung Nein, Steuerung über Rekursion Ja

Besondere Eignung für rekursive Datenstrukturen Algorithmen

Anweisung

Page 15: Matthias Spohrer · TU München Modul Ablaufmodellierung 2. Präsenzveranstaltung – 13.03.2003 – TU Stammgelände Innenstadt Nachqualifizierungskurs für Informatiklehrkräfte.

Nachqualifizierungskurs für Informatiklehrkräfte© 2003 Matthias Spohrer · TU München

Seite 15

Modellierung von Abläufen

Möglichkeiten, Abläufe zu beschreiben

Aktionsstrukturen

Zustandsmodell

Algorithmische Modelle

Page 16: Matthias Spohrer · TU München Modul Ablaufmodellierung 2. Präsenzveranstaltung – 13.03.2003 – TU Stammgelände Innenstadt Nachqualifizierungskurs für Informatiklehrkräfte.

Nachqualifizierungskurs für Informatiklehrkräfte© 2003 Matthias Spohrer · TU München

Seite 16

„Modellierung“ von Algorithmen

Verwendung von

Kontrollflussdiagrammen Aktivitätsdiagramme Struktogrammen

Lehrplan trifft bzgl. der Modellierungsmethode keine Festlegung! An den Schulen in der Regel Verwendung von Struktogramme

Page 17: Matthias Spohrer · TU München Modul Ablaufmodellierung 2. Präsenzveranstaltung – 13.03.2003 – TU Stammgelände Innenstadt Nachqualifizierungskurs für Informatiklehrkräfte.

Nachqualifizierungskurs für Informatiklehrkräfte© 2003 Matthias Spohrer · TU München

Seite 17

Algorithmisches Problemlösen

Diese Vorgehensweise wird oft

Strukturierte Programmentwicklung

oder

Top – Down – Entwicklung

oder

Prinzip der schrittweisen Verfeinerung genannt.

1. Zerlegung des vorgegebenen Problems in • Teilprobleme und • die Beziehungen zwischen diesen Teilproblemen ( Schnittstellen)

2. Wiederholung von Schritt 1, angewendet auf die Teilprobleme, bis man „kleinste“ Teilprobleme hat, die ohne weitere Zerlegung gelöst werden können. Zur Lösung dieser kleinsten Teilprobleme sind nur eine geringe Zahl unterschiedlicher Grundstrukturen nötig.

3. Zusammensetzung der Teilproblemlösungen führt zur Lösung des Ausgangsproblems

Page 18: Matthias Spohrer · TU München Modul Ablaufmodellierung 2. Präsenzveranstaltung – 13.03.2003 – TU Stammgelände Innenstadt Nachqualifizierungskurs für Informatiklehrkräfte.

Nachqualifizierungskurs für Informatiklehrkräfte© 2003 Matthias Spohrer · TU München

Seite 18

Algorithmisches Problemlösen

HAUPTPROGRAMM

Daten

Code

Prozedur 1

Daten

Code

Prozedur 2

Daten

Code

Prozedur 3

Daten 2

Daten 3

Daten 4

Daten 5

Daten 1

Page 19: Matthias Spohrer · TU München Modul Ablaufmodellierung 2. Präsenzveranstaltung – 13.03.2003 – TU Stammgelände Innenstadt Nachqualifizierungskurs für Informatiklehrkräfte.

Nachqualifizierungskurs für Informatiklehrkräfte© 2003 Matthias Spohrer · TU München

Seite 19

Grundstrukturen und Darstellung in Struktogrammen I

...Einfache Anweisung

...

...

...

Sequenz von Anweisungen

Bool. Ausdruckwahr falschEinseitige

Bedingungsanweisung

...Prozeduraufruf

IF Boolscher Ausdruck { ... }

Bool. Ausdruckwahr falschZweiseitige

Bedingungsanweisung

IF Boolscher Ausdruck { ... }ELSE { ... }

Page 20: Matthias Spohrer · TU München Modul Ablaufmodellierung 2. Präsenzveranstaltung – 13.03.2003 – TU Stammgelände Innenstadt Nachqualifizierungskurs für Informatiklehrkräfte.

Nachqualifizierungskurs für Informatiklehrkräfte© 2003 Matthias Spohrer · TU München

Seite 20

MehrseitigeBedingungsanweisung

Ausdruck

w1 w2 w3

SWITCH Ausdruck { case w1: .... case w2: .... case w3: ....}

Solange <boolscher Ausdruck>Wiederholung mitAnfangsbedingung

wdh.

WHILE (bool. Ausdruck) { ... }

bis <boolscher Ausdruck>

Wiederholung mitEndbedingung

wdh. DO { ... }WHILE (bool. Ausdruck)

Von ... bis ...Wiederholung mitZähler

wdh.

FOR (i = 1; i < 3, i = i+1) { ... }

Grundstrukturen und Darstellung in Struktogrammen II

Page 21: Matthias Spohrer · TU München Modul Ablaufmodellierung 2. Präsenzveranstaltung – 13.03.2003 – TU Stammgelände Innenstadt Nachqualifizierungskurs für Informatiklehrkräfte.

Nachqualifizierungskurs für Informatiklehrkräfte© 2003 Matthias Spohrer · TU München

Seite 21

Problem von Struktogrammen in der Schule

Bei Betrachtung von einfacheren Problemen wirken Struktogramme oft (vor allem) für Schüler überdimensioniert, in der Regel reicht hier meist Pseudocode.

Bei komplexen Problemen sind Struktogramme unübersichtlich, schwierig „wartbar. Man muss bereits am Anfang wissen, wie das ganze Struktogramm ausschaut.

Page 22: Matthias Spohrer · TU München Modul Ablaufmodellierung 2. Präsenzveranstaltung – 13.03.2003 – TU Stammgelände Innenstadt Nachqualifizierungskurs für Informatiklehrkräfte.

Nachqualifizierungskurs für Informatiklehrkräfte© 2003 Matthias Spohrer · TU München

Seite 22

Schwierigkeiten beim algorith. Problemlösen

Trotz Strukturierung muss der Problemlösende das Gesamtkonzept erkennen und bei jedem Teilalgorithmus die Zweckdienlichkeit für die Gesamtlösung bedenken

Nachträgliche Änderung der Daten erfordert eine aufwendige Überarbeitung aller darauf operierenden Teilalgorithmen

Page 23: Matthias Spohrer · TU München Modul Ablaufmodellierung 2. Präsenzveranstaltung – 13.03.2003 – TU Stammgelände Innenstadt Nachqualifizierungskurs für Informatiklehrkräfte.

Nachqualifizierungskurs für Informatiklehrkräfte© 2003 Matthias Spohrer · TU München

Seite 23

Compiler / Interpreter

Compiler: Ein Programm, das Programme aus einer Sprache A (Quellsprache) in

eine Sprache B (Zielsprache) übersetzt.(lexikalische, syntaktische, semantische Analyse)

Nach dieser Übersetzung kann das Programm ausgeführt werden.

Interpreter: Ein Programm, das ein Programm aus einer Sprache A Anweisung für Anweisung (nach der notwendigen lexikalischen und syntaktischen Analyse) sofort ausführt.

Page 24: Matthias Spohrer · TU München Modul Ablaufmodellierung 2. Präsenzveranstaltung – 13.03.2003 – TU Stammgelände Innenstadt Nachqualifizierungskurs für Informatiklehrkräfte.

Nachqualifizierungskurs für Informatiklehrkräfte© 2003 Matthias Spohrer · TU München

Seite 24

Compiler / Interpreter

Vorteil Interpreter: - sind einfacher zu konstruieren - schneller im Dialogbetrieb, beim Testen,

Nachteil Interpreter: - längere Rechenzeit bei der kompletten Ausführung (jeder Befehl, der mehrfach ausgeführt wird, muss mehrfach übersetzt werden; bei jeder Zuweisung müssen die Adressen der Variablen gesucht werden)

Page 25: Matthias Spohrer · TU München Modul Ablaufmodellierung 2. Präsenzveranstaltung – 13.03.2003 – TU Stammgelände Innenstadt Nachqualifizierungskurs für Informatiklehrkräfte.

Nachqualifizierungskurs für Informatiklehrkräfte© 2003 Matthias Spohrer · TU München

Seite 25

Kleine Zwischenübung

Versuchen Sie sich kurz an Aufgabe 6!

Programm dazu!Programm dazu!

Page 26: Matthias Spohrer · TU München Modul Ablaufmodellierung 2. Präsenzveranstaltung – 13.03.2003 – TU Stammgelände Innenstadt Nachqualifizierungskurs für Informatiklehrkräfte.

Nachqualifizierungskurs für Informatiklehrkräfte© 2003 Matthias Spohrer · TU München

Seite 26

Staatsexamen Frühjahr 1996, Aufgabe 5Staatsexamen Frühjahr 1996, Aufgabe 5

Erklären und vergleichen Sie die Aufrufprinzipien Call-by-value und Call-by-reference

Page 27: Matthias Spohrer · TU München Modul Ablaufmodellierung 2. Präsenzveranstaltung – 13.03.2003 – TU Stammgelände Innenstadt Nachqualifizierungskurs für Informatiklehrkräfte.

Nachqualifizierungskurs für Informatiklehrkräfte© 2003 Matthias Spohrer · TU München

Seite 27

Call-by-value

Call-by-value: WertparameterEs wird beim Prozeduraufruf nur der Wert des aktuellen Parameters als Kopie übergeben, nicht jedoch der Name („die ganze Schachtel“) oder die Speicheradresse

procedure cbv(x, y, z: integer);begin

x := x + 3;y := y + z;output(x,y,z);

end;

a := 1; b := 2

cbv(a, b, 7);

Es bleibt a=1, b=2;

1 2 7

// x = 1 + 3

// y = 2 +7

(4, 9, 7)

Page 28: Matthias Spohrer · TU München Modul Ablaufmodellierung 2. Präsenzveranstaltung – 13.03.2003 – TU Stammgelände Innenstadt Nachqualifizierungskurs für Informatiklehrkräfte.

Nachqualifizierungskurs für Informatiklehrkräfte© 2003 Matthias Spohrer · TU München

Seite 28

Call-by-value / Call-by-reference

Call-by-reference: ReferenzparameterDie Prozedur arbeitet unmittelbar mit den aktuellen Parametern und nicht nur auf Kopien der Werte

procedure cbr(var x, y, z: integer);begin

x := x + 3;y := y + z;

end;

a := 1; b := 2

cbr(a, b, 7);Zuerst ist a:=a+3, also a=4

Dann ist b:=b+7=9

Also ist a=4, b=9;

1 2 7

Test hier!Test hier!

Page 29: Matthias Spohrer · TU München Modul Ablaufmodellierung 2. Präsenzveranstaltung – 13.03.2003 – TU Stammgelände Innenstadt Nachqualifizierungskurs für Informatiklehrkräfte.

Nachqualifizierungskurs für Informatiklehrkräfte© 2003 Matthias Spohrer · TU München

Seite 29

Der Quicksort

Schnelles internes Sortierverfahren

1962 von C. Hoare vorgeschlagen

Divide-and-conquer-Verfahren („Teile und herrsche“)Divide-and-conquer-Verfahren („Teile und herrsche“)Divide: Das Problem wird in mehrere möglichst gleichgroße Teilprobleme gleicher Art aufgespalten, die unabhängig voneinander gelöst werdenConquer: Die Teillösungen werden zu einer Lösung des Gesamtproblems zusammengesetzt

Quicksort gilt als schnellstes internes Sortierverfahren mit durchschnittlicher Laufzeit von n*log(n) ( nächstes Jahr!)

Quicksort(a, links, rechts)Quicksort(a, links, rechts) soll eine Liste a von Elementen innerhalb der Grenzen links und rechts sortieren.

Page 30: Matthias Spohrer · TU München Modul Ablaufmodellierung 2. Präsenzveranstaltung – 13.03.2003 – TU Stammgelände Innenstadt Nachqualifizierungskurs für Informatiklehrkräfte.

Nachqualifizierungskurs für Informatiklehrkräfte© 2003 Matthias Spohrer · TU München

Seite 30

Quicksort(a, links, rechts)

3 1 4 28098 5

3 1 4 28098 5

Wähle „mittleres Element“z.B. x = a[(links+rechts) div 2]Oder x=4

x = 4 i = links, j = rechtswhile i <= j do

links=0 rechts=8

3 1 4 28098 5

i=0 j=8

while a[i] < x do inc(i)

i=2

3 1 4 28098 5 while a[j] > x do dec(j)

i=2

j=8

j=7

If i <= j then vertausche a[i] und a[j]inc(i), dec(j) fi3 1 4 88092 5

i=2 j=7

od

a:=

Page 31: Matthias Spohrer · TU München Modul Ablaufmodellierung 2. Präsenzveranstaltung – 13.03.2003 – TU Stammgelände Innenstadt Nachqualifizierungskurs für Informatiklehrkräfte.

Nachqualifizierungskurs für Informatiklehrkräfte© 2003 Matthias Spohrer · TU München

Seite 31

Quicksort(a, links, rechts)

3 1 4 28098 5

i = links, j = rechtswhile i <= j do

links=0 rechts=8

while a[i] < x do inc(i)

while a[j] > x do dec(j)

if i <= j then vertausche a[i] und a[j]inc(i), dec(j) fi3 1 4 88092 5

i=2 j=7

3 1 4 88092 5i=3 j=5

3 1 0 88492 5j=5i=3

3 1 0 88492 5i=4, j=4

od

Wähle „mittleres Element“z.B. x = a[(links+rechts) div 2]Oder x=4

Page 32: Matthias Spohrer · TU München Modul Ablaufmodellierung 2. Präsenzveranstaltung – 13.03.2003 – TU Stammgelände Innenstadt Nachqualifizierungskurs für Informatiklehrkräfte.

Nachqualifizierungskurs für Informatiklehrkräfte© 2003 Matthias Spohrer · TU München

Seite 32

Quicksort(a, links, rechts)

3 1 4 28098 5

i = links, j = rechtswhile i <= j do

links=0 rechts=8

while a[i] < x do inc(i)

while a[j] > x do dec(j)

if i <= j then vertausche a[i] und a[j]inc(i), dec(j) fi

3 1 0 88492 5j=3 i=4

3 1 0 88492 5i=4, j=4

od

3 1 0 88492 5

Quicksort(links, j) Quicksort(i, rechts)

Wähle „mittleres Element“z.B. x = a[(links+rechts) div 2]Oder x=4

Page 33: Matthias Spohrer · TU München Modul Ablaufmodellierung 2. Präsenzveranstaltung – 13.03.2003 – TU Stammgelände Innenstadt Nachqualifizierungskurs für Informatiklehrkräfte.

Nachqualifizierungskurs für Informatiklehrkräfte© 2003 Matthias Spohrer · TU München

Seite 33

Aufgabe

Setze den Algorithmus in java um!

MattsQuickSort.javaMattsQuickSort.java

Page 34: Matthias Spohrer · TU München Modul Ablaufmodellierung 2. Präsenzveranstaltung – 13.03.2003 – TU Stammgelände Innenstadt Nachqualifizierungskurs für Informatiklehrkräfte.

Nachqualifizierungskurs für Informatiklehrkräfte© 2003 Matthias Spohrer · TU München

Seite 34

Einführung in HASKELL – Über Haskell

Haskell ist eine rein funktionale Programmiersprache, ziemlich verschieden von anderen bekannten Programmiersprachen.

Die Sprache ist benannt nach Haskell Brooks Curry , dessen Arbeit in mathematischer Logik ein Grundbaustein für die funktionalen Programmiersprachen war.

Haskell basiert auf dem Lambda Kalkül deshalb wird das Lambda als Logo verwendet.

Page 35: Matthias Spohrer · TU München Modul Ablaufmodellierung 2. Präsenzveranstaltung – 13.03.2003 – TU Stammgelände Innenstadt Nachqualifizierungskurs für Informatiklehrkräfte.

Nachqualifizierungskurs für Informatiklehrkräfte© 2003 Matthias Spohrer · TU München

Seite 35

Einführung in HASKELL – funktionales Programmieren

Ein funktionales Programm besteht aus einem einzelnen Ausdruck, der ausgeführt wird indem er berechnet wird:

Bsp.: Tabellenkalkulation: man definiert den Inhalt einer Zelle in Abhängigkeit von den anderen Zellen. Im Mittelpunkt steht das, 'was' berechnet wird und nicht 'wie' es berechnet wird. Beispiele:

Page 36: Matthias Spohrer · TU München Modul Ablaufmodellierung 2. Präsenzveranstaltung – 13.03.2003 – TU Stammgelände Innenstadt Nachqualifizierungskurs für Informatiklehrkräfte.

Nachqualifizierungskurs für Informatiklehrkräfte© 2003 Matthias Spohrer · TU München

Seite 36

Einführung in HASKELL – funktionales Programmieren

Beachte:

• Reihenfolge, in welcher die Zellen berechnet werden sollen, wird nicht festgelegt Tabellenkalkulation soll die Zellen unter Berücksichtigung ihrer Abhängigkeiten berechnen

• Keine Vorgabe der Speicherzuteilung Tabellenkalkulation stellt eine unendliche Ebene von Zellen bereit und weist nur den gerade benutzten Zellen einen Speicherplatz zu

• Inhalt einer Zelle wird durch einen Ausdruck festgelegt (dessen Teile in beliebiger Reihenfolge berechnet werden können) und nicht durch eine Folge von Befehlen welche den Wert berechnen.

Page 37: Matthias Spohrer · TU München Modul Ablaufmodellierung 2. Präsenzveranstaltung – 13.03.2003 – TU Stammgelände Innenstadt Nachqualifizierungskurs für Informatiklehrkräfte.

Nachqualifizierungskurs für Informatiklehrkräfte© 2003 Matthias Spohrer · TU München

Seite 37

Einführung in HASKELL

Eine interessante Konsequenz aus der unbestimmten Reihenfolge der Berechnung in der Tabellenkalkulation ist, dass der Begriff Anweisung nicht mehr nützlich ist. Wenn man nicht weiß, wann genau die Anweisung ausgeführt wird, kann man keinen Nutzen daraus ziehen!

Dies steht im krassen Gegensatz zu Programmen in herkömmlichen Programmiersprachen wie C oder PASCAL, welche notwendigerweise aus einer sorgfältig festgelegten Folge von Anweisungen bestehen, oder Java, in welcher die Reihenfolge der Methodenaufrufe entscheidend für die Bedeutung des Programms ist.

Die Konzentration auf das 'was' (high-level, d.h. höherer Abstraktionsgrad), im Gegensatz zum 'wie' (low-level, d.h. niederer Abstraktionsgrad), ist das wesentliche Merkmal der funktionalen Programmiersprachen.

Page 38: Matthias Spohrer · TU München Modul Ablaufmodellierung 2. Präsenzveranstaltung – 13.03.2003 – TU Stammgelände Innenstadt Nachqualifizierungskurs für Informatiklehrkräfte.

Nachqualifizierungskurs für Informatiklehrkräfte© 2003 Matthias Spohrer · TU München

Seite 38

Einführung in HASKELL - SQL

Eine andere fast-funktionale Sprache ist SQL.

Eine SQL-Abfrage ist ein Ausdruck mit "projections, selections, joins".

Die Abfrage bestimmt, welche Relation berechnet werden soll ohne zu sagen wie. Tatsächlich kann die Abfrage in jeder passenden Reihenfolge ausgewertet werden.

Page 39: Matthias Spohrer · TU München Modul Ablaufmodellierung 2. Präsenzveranstaltung – 13.03.2003 – TU Stammgelände Innenstadt Nachqualifizierungskurs für Informatiklehrkräfte.

Nachqualifizierungskurs für Informatiklehrkräfte© 2003 Matthias Spohrer · TU München

Seite 39

Installation HASKELL

Wir verwenden einen Haskell-Interpreter namens „HugsHugs“.

Diesen müsst ihr euch im Internet besorgen (etwa 2,7MB groß), er ist für alle Plattformen verfügbar.

Ladet euch bitte unter http://cvs.haskell.org/Hugs/pages/downloading.htm die passenden Dateien herunter (für Windows wäre das hugs98-Nov2002.msi sowie falls gewünscht die beiden anderen msi-Dateien, entsprechende Dateien findet ihr dort auch für alle anderen Betriebssysteme. Ihr benötigt den MS Installer zum Ausführen, dieser ist jedoch in den neueren Windows-Systemen bereits integriert.

Ansonsten könnt ihr ihn „nachrüsten“ (link ebenfalls auf obiger homepage), oder auch folgende Alternative für ältere Windows-Systeme verwenden (diese habe ich jedoch nicht getestet!): http://www.cse.ogi.edu/PacSoft/projects/Hugs/downloads/Hugs98install.exe

Page 40: Matthias Spohrer · TU München Modul Ablaufmodellierung 2. Präsenzveranstaltung – 13.03.2003 – TU Stammgelände Innenstadt Nachqualifizierungskurs für Informatiklehrkräfte.

Nachqualifizierungskurs für Informatiklehrkräfte© 2003 Matthias Spohrer · TU München

Seite 40

Demonstration zur Arbeit mit HASKELL

Einfache Grundprozeduren

Steuerungsoptionen

Selbstdefinierte Funktionen

Quicksort in HASKELL

Starte HugsStarte Hugs

Page 41: Matthias Spohrer · TU München Modul Ablaufmodellierung 2. Präsenzveranstaltung – 13.03.2003 – TU Stammgelände Innenstadt Nachqualifizierungskurs für Informatiklehrkräfte.

Nachqualifizierungskurs für Informatiklehrkräfte© 2003 Matthias Spohrer · TU München

Seite 41

Fragen

?