Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Matthias Spohrer · TU München 8. Präsenzveranstaltung 08.04.2003 – TU Stammgelände Innenstadt Nachqualifizierungskurs für Informatiklehrkräfte.

Ähnliche Präsentationen


Präsentation zum Thema: "Matthias Spohrer · TU München 8. Präsenzveranstaltung 08.04.2003 – TU Stammgelände Innenstadt Nachqualifizierungskurs für Informatiklehrkräfte."—  Präsentation transkript:

1 Matthias Spohrer · TU München 8. Präsenzveranstaltung – TU Stammgelände Innenstadt Nachqualifizierungskurs für Informatiklehrkräfte

2 © 2003 Matthias Spohrer · TU München Seite 2 Inhaltsübersicht Aufwärmübung Informationen Rekursion Entrekursivierung Ausblick OOM-Modul

3 Nachqualifizierungskurs für Informatiklehrkräfte © 2003 Matthias Spohrer · TU München Seite 3 Infos - Präsenztage Donnerstag, UhrHS 0670 Funktionale Modellierung Dienstag, UhrHS 1601 Funkt. Mod. & OOM Mittwoch, UhrHS 1601 OOM Montag, *15(?)-18 Uhr* HS 0220 Auf Wunsch, zur Klausur Donnerstag, UhrHS 0220 Klausur *ob und ab wann dieser Präsenztag stattfinden soll, werden wir jetzt gemeinsam ausmachen. Außerdem eine Abschlussveranstaltung im Juli.

4 Nachqualifizierungskurs für Informatiklehrkräfte © 2003 Matthias Spohrer · TU München Seite 4 Sonstiges / Infos / Aussprache Dienstag Präsenztag nächstes Schuljahr: wie angekündigt Dienstag Sorry für die fehlenden Korrekturen!!! Anmerkungen / Wünsche / Fragen zum aktuellen Material...

5 Nachqualifizierungskurs für Informatiklehrkräfte © 2003 Matthias Spohrer · TU München Seite 5 Kleine Aufwärmübung Staatsexamen Herbst 1997, Thema II, Aufgabe 3 Gegeben sei das Alphabet A = (A, B, C). In A * zeichnen wir die Teilmenge T der Wörter aus, die weder ACC noch BCC als Teilzeichenreihe enthalten. Dabei ist x A * genau dann eine Teilzeichenreihe von y A *, wenn es ein y' A * und ein y" A * gibt, so dass y = y'xy" ist. Konstruieren Sie den (bis auf die Bezeichnungen der Zustände eindeutigen) minimalen deterministischen endlichen Automaten A = (S, I,, s0, F) mit der Zustandsmenge S, dem Eingabealphabet I = A, der Zustandsübergangsfunktion : S x I S, dem Anfangszustand s0 und der Endzustandsmenge F, der genau T akzeptiert! Stellen Sie hierzu den Automaten A durch seinen Zustandsübergangsgraphen dar.

6 Nachqualifizierungskurs für Informatiklehrkräfte © 2003 Matthias Spohrer · TU München Seite 6 Rekursion Linear rekursive Linear rekursive Funktionen...enthalten höchstens einen rekursiven Funktionsaufruf innerhalb jedes Fallunterscheidungszweiges. function ggt (nat a, b): nat return if a = b then a else if a < b then ggt(a, b–a) else ggt(a–b, b) fi fi function fak(nat x): nat return if x=0 then 1 else fak(x-1)*x fi function potenz(nat x,n): nat return if n=0 then 1 else potenz(x, n–1)*x fi

7 Nachqualifizierungskurs für Informatiklehrkräfte © 2003 Matthias Spohrer · TU München Seite 7 Rekursion Repetitiv rekursive Repetitiv rekursive Funktionen...sind lineare rekursive Funktionen, die als letzten Verarbeitungsschritt den rekursiven Aufruf haben. function ggt (nat a, b): nat return if a = b then a else if a < b then ggt(a, b–a) else ggt(a–b, b) fi fi function fak(nat x): nat return if x=0 then 1 else fak(x-1)*x fi fak NICHT repetitiv rekursiv fak NICHT repetitiv rekursiv function potenz(nat x,n): nat return if n=0 then 1 else potenz(x, n–1)*x fi potenz NICHT repetitiv rekursiv potenz NICHT repetitiv rekursiv

8 Nachqualifizierungskurs für Informatiklehrkräfte © 2003 Matthias Spohrer · TU München Seite 8 Rekursion Kaskadenartig rekursive Kaskadenartig rekursive Funktionen...sind rekursive Funktionen, die in mindestens einem Fallunterscheidungszweig mehr als einen rekursiven Aufruf enthalten. function bn (nat n,k): nat return if n=0 or k=0 or k =n then 1 else bn(n–1, k) + bn(n–1, k–1) fi function qsort (natlist ls): natlist return if length(ls) <= 1 then ls else concat(concat(qsort(smaller(ls,ls.head)), equal(ls,ls.head)), qsort(greater(ls,ls.head))) fi

9 Nachqualifizierungskurs für Informatiklehrkräfte © 2003 Matthias Spohrer · TU München Seite 9 Rekursion Vernestet rekursive Vernestet rekursive Funktionen...sind rekursive Funktionen, in denen in den Parameterausdrücken eines rekursiven Aufrufs weitere rekursive Aufrufe auftreten function acker(nat m, n): nat return if m=0 then n+1 else if n=0 then acker (m–1, 1) else acker (m–1, acker (m, n–1)) fi fi function quersumme(nat n): nat return if n<=9 then n else quersumme(quersumme(n div 10) + (n mod 10)) fi fi

10 Nachqualifizierungskurs für Informatiklehrkräfte © 2003 Matthias Spohrer · TU München Seite 10 Rekursion Verschränkt rekursive Verschränkt rekursive Funktionen...sind mehrere rekursive Funktionen, die sich gegenseitig aufrufen function gerade (nat n): bool return if n = 1 then false else ungerade(n-1) fi function ungerade (nat n): bool return if n = 1 then true else gerade(n-1) fi

11 Nachqualifizierungskurs für Informatiklehrkräfte © 2003 Matthias Spohrer · TU München Seite 11 Rekursion Primitiv rekursive Primitiv rekursive Funktionen...entstehen aus sehr einfachen Grundfunktionen über den natürlichen Zahlen, indem man endlich viele Operationen hierauf anwendet. Grundfunktionen sind: Operationen sind:

12 Nachqualifizierungskurs für Informatiklehrkräfte © 2003 Matthias Spohrer · TU München Seite 12 Rekursion Primitiv rekursive Primitiv rekursive Funktionen – Beispiel 1 Addition Die Addition ist primitiv rekursiv: add(x,y)=x+y add(x,0):=x add(x,y+1)=succ(add(x,y)) Hier wäre g(x)=x=proj11(x) und h=succ°proj33

13 Nachqualifizierungskurs für Informatiklehrkräfte © 2003 Matthias Spohrer · TU München Seite 13 Rekursion Primitiv rekursive Primitiv rekursive Funktionen – Beispiel 2 Multiplikation Die Multiplikation ist prim. rekursiv: mult(x,y)=x*y mult(x,0):=0 mult(x,y+1)=add(x,mult(x,y)) Hier wäre g(x)=0=zero1(x) und h=add(proj13,proj3)

14 Nachqualifizierungskurs für Informatiklehrkräfte © 2003 Matthias Spohrer · TU München Seite 14 Rekursion Primitiv rekursive Primitiv rekursive Funktionen – Beispiel 3 Vorgängerfkt. Die Vorgängerfkt. ist prim. rek.: pred(x)=x-1 pred(0):=0 pred(y+1)=y Hier wäre g()=0=zero0() und h=proj12

15 Nachqualifizierungskurs für Informatiklehrkräfte © 2003 Matthias Spohrer · TU München Seite 15 Rekursion Primitiv rekursive Primitiv rekursive Funktionen – Beispiel 4 Fakultät Die Fakultät ist prim. rek.: fak(x)=x! fak(0):=1 fak(n+1)=(n+1)*fak(n) Hier wäre g()=1=succ(zero0()) und h=mult(succ°proj12,proj22)

16 Nachqualifizierungskurs für Informatiklehrkräfte © 2003 Matthias Spohrer · TU München Seite 16 Rekursion Primitiv rekursive Primitiv rekursive Funktionen – Beispiel Staatsexamen Probiert euch an die Staatsexamensaufgabe Frühjahr 99 Thema II Aufgabe 1

17 Nachqualifizierungskurs für Informatiklehrkräfte © 2003 Matthias Spohrer · TU München Seite 17 Entrekursivierung Repetitiv rekursive Repetitiv rekursive Funktionen...sind besonders einfach iterativ zu schreiben function ggt (nat a, b): nat return if a = b then a else if a < b then ggt(a, b–a) else ggt(a–b, b) fi fi function ggTit(nat a, b): nat var nat avar := a, bvar := b; begin while not avar=bvar do if avar

18 Nachqualifizierungskurs für Informatiklehrkräfte © 2003 Matthias Spohrer · TU München Seite 18 Entrekursivierung Linear rekursive Linear rekursive Funktionen...können mit Hilfe der Einbettungstechnik durch repetitiv-rekursive Funktionen dargestellt und dann wie eben entrekursiviert, also iterativ dargestellt werden. Dies ist vergleichbar mit dem Currying und den Akkumulatoren in HASKELL! function fakallg(nat n, k): nat return if n=0 then k else fakallg(n–1, k*n) fi function fakallgit(nat n, k): nat var nat nvar := n, kvar := k; begin while nvar <> 0 do kvar := kvar*nvar; nvar := nvar –1; od; return kvar; end fakallgit fakallgit(4,1) kvar:=1; nvar:=4 kvar:=1*4=4 ; nvar:=4-1=3 kvar:=4*3=12 ; nvar:=3-1=2 kvar:=12*2=24 ; nvar:=2-1=1 kvar:=24*1=24 ; nvar:=1-1=0 return 24

19 Nachqualifizierungskurs für Informatiklehrkräfte © 2003 Matthias Spohrer · TU München Seite 19 Entrekursivierung Linear rekursive Linear rekursive Funktionen function fakallg(nat n, k): nat return if n=0 then k else fakallg(n–1, k*n) fi function fakallgit(nat n, k): nat var nat nvar := n, kvar := k; begin while nvar <> 0 do kvar := kvar*nvar; nvar := nvar –1; od; return kvar; end fakallgit Die übliche Fakultätsfunktion ist dann durch fak(n) = fakallg(n,1) eingebettet. vollständiger Induktion Die Korrektheit der Einbettung wird i.a. mit vollständiger Induktion bewiesen.

20 Nachqualifizierungskurs für Informatiklehrkräfte © 2003 Matthias Spohrer · TU München Seite 20 Entrekursivierung Kaskadierend- verneste-rekursive Kaskadierend- oder verneste-rekursive Funktionen...können durch einen Kellerspeicher iterativ geschrieben werden (LIFO-Prinzip) function acker(nat m, n): nat return if m=0 then n+1 else if n=0 then acker (m–1, 1) else acker (m–1, acker (m, n–1)) fi fi Iterative Version siehe Folie... (passt hier nicht drauf...)

21 Nachqualifizierungskurs für Informatiklehrkräfte © 2003 Matthias Spohrer · TU München Seite 21 Fragen ?


Herunterladen ppt "Matthias Spohrer · TU München 8. Präsenzveranstaltung 08.04.2003 – TU Stammgelände Innenstadt Nachqualifizierungskurs für Informatiklehrkräfte."

Ähnliche Präsentationen


Google-Anzeigen