Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Heimo Kembel Geändert vor über 11 Jahren
1
Matthias Spohrer · TU München 8. Präsenzveranstaltung 08.04.2003 – 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, 13.03.03 14-18 UhrHS 0670 Funktionale Modellierung Dienstag, 08.04.0314-18 UhrHS 1601 Funkt. Mod. & OOM Mittwoch, 07.05.0314-18 UhrHS 1601 OOM Montag, 02.06.03*15(?)-18 Uhr* HS 0220 Auf Wunsch, zur Klausur Donnerstag, 26.06.03 10-12 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<bvar then bvar := bvar–avar else avar := avar–bvar fi od; return avar; end ggTit ggTit(12,8) avar:=12, bvar:=8 avar:=12-8=4 bvar:=8-4=4 return 4
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 ?
Ähnliche Präsentationen
© 2025 SlidePlayer.org Inc.
All rights reserved.