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

Slides:



Advertisements
Ähnliche Präsentationen
Algorithmentheorie 08 – Dynamische Programmierung (1)
Advertisements

Programmierung 1 - Repetitorium
Programmierung 1 - Repetitorium WS 2002/2003 Programmierung 1 - Repetitorium Andreas Augustin und Marc Wagner Homepage:
Programmierung 1 - Repetitorium
Programmierung 1 - Repetitorium WS 2002/2003 Programmierung 1 - Repetitorium Andreas Augustin und Marc Wagner Homepage:
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Friedrich-Schiller-Schule LEIPZIG anders.denkend.humanistisch
Vergleichstests – Kompetenztest Thüringen Ergebnisse 2008/09 Primar – Klasse 6
Rekursionen Erstellt von J. Rudolf im November 2001 /
Friedhelm Meyer auf der Heide 1 HEINZ NIXDORF INSTITUT Universität Paderborn Algorithmen und Komplexität Notationen A = ist eine endliche, nichtleere menge,
Vorlesung Informatik 3 Einführung in die Theoretische Informatik (02 – Endliche Automaten) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 3 Einführung in die Theoretische Informatik (06 – Reduktion endlicher Automaten) Prof. Dr. Th. Ottmann.
WS Algorithmentheorie 08 – Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. Th. Ottmann.
Vorlesung Informatik 3 Einführung in die Theoretische Informatik (04 – Automaten mit ε-Transitionen) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 3 Einführung in die Theoretische Informatik (03 – Nichtdeterminierte endliche Automaten) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 3 Einführung in die Theoretische Informatik (17 –Turingmaschinen) Prof. Dr. Th. Ottmann.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 7 Claudio Moraga, Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Methoden sind mit einem Namen versehene Programmabschnitte besitzen Rückgabetyp, Namen, Parameterliste.
Willkommen zum Plenum.
Christian Schindelhauer
Christian Schindelhauer
Nachqualifizierungskurs für Informatiklehrkräfte
Matthias Spohrer · TU München Modul Ablaufmodellierung 2. Präsenzveranstaltung – – TU Stammgelände Innenstadt Nachqualifizierungskurs für Informatiklehrkräfte.
Nachqualifizierungskurs für Informatiklehrkräfte
Nachqualifizierungskurs für Informatiklehrkräfte
Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Rekursion Richard Göbel.
Rekursive Funktionen (Fakultät)
Wir begrüßen Sie zum Vorbereitungsdienst am Seminar Freiburg
Endliche Automaten Informatik JgSt. 13, Abitur 2009
Was machst du nach der Schule?
BIT – Schaßan – WS 02/03 Basisinformationstechnologie HK-Medien Teil 1, 11.Sitzung WS 02/03.
Information und Kommunikation Hartmut Klauck Universität Frankfurt SS
Hartmut Klauck Universität Frankfurt WS 06/
Einführung in die Programmierung
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger Institut.
Räumliche Orientierung Lehrveranstaltungsraum:
2.4 Rekursion Klassifikation und Beispiele
Eine Präsentation von Lena Sauter & Corinna Nawatzky
Akzeptor & Sprache.
Gabsheim, mitten im Feld: Der Wigwam
Algorithmen und Datenstrukturen Übungsmodul 8
Automaten, formale Sprachen und Berechenbarkeit II SoSe 2004 Prof. W. Brauer Teil 1: Wiederholung (Vor allem Folien von Priv.-Doz. Dr. Kindler vom WS 2001/02.
Zentrale Abschlussarbeiten Ablaufplanung
Institut für Softwarewissenschaft – Universität WienP.Brezany 1 Beispiele Beispiel 1 Konstruieren Sie für folgende Sprachen über = { a, b, c.
Beispiele: KFG 2.Teil Beispiel 1: Sei G eine Grammatik mit den folgenden Regeln: S  Ac | Bd A  aAb | ab B  aBbb | abb Definieren Sie.
Die Sternenuhr Wir entdecken die Wissenschaften LTAM Steffen M. 2003/04 Kneip R.
Christian Schindelhauer Wintersemester 2006/07 3. Vorlesung
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Informatik III Christian Schindelhauer Wintersemester.
Christian Schindelhauer Wintersemester 2006/07 2. Vorlesung
Institut für Softwarewissenschaft – Universität WienP.Brezany 1 Beispiele (Frist: ) Beispiel 1: Sei  = {a, b} ein Alphabet und Q = {q 0, q 1 } eine.
Inhalt Einordnung und Funktion der lexikalische Analyse Grundlagen
© 2004 Pohlig Informatik Kurse © 2004 Pohlig Informatik Kurse Der Tramp tanzt die Rekursion zünderUntersuchen(…) Basisfall Rückmeldung:
Wann ist eine Funktion (über den natürlichen Zahlen) berechenbar?
Jana und ihre Eltern gehen mit Julie in den Europapark!
1 // Verkettete Liste 2 // demonstriert verkettete Listen und // Rekursion // (Einfügen am "Fuß") // #include struct Liste { int Element; Liste *weiter;
Dr. Wolfram Amme, Semantik funktionaler Programme, Informatik II, FSU Jena, SS Semantik funktionaler Programme.
Dr. Wolfram Amme, Funktionale Programmierung, Informatik II, FSU Jena, SS Funktionale Programmierung.
2.4 Rekursion Klassifikation und Beispiele
Rekursion – Speicherverwaltung
Kalender 2004 String-Version
Methoden - rekursiv.
Folien nach Wochentagen
Wiederholung Größte gemeinsame Teiler Satz von Bezout:
Tage, Monate, Uhrzeit.
JANUAR MONTAG DIENSTAG MITTWOCH DONNERSTAG FREITAG SAMSTAG
Öffnungszeiten Montag bis Mittwoch: 11 Uhr bis 23 Uhr
Januar 2016 Montag Dienstag Mittwoch Donnerstag Freitag Samstag
 Präsentation transkript:

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

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

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.

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...

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.

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

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

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

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

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

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:

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

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)

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

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)

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

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

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

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.

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...)

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