Visualisierung funktionaler Programme

Slides:



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

Ziele von EINI I + II Einführen in „Informatik“
der Universität Oldenburg
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:
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (26-Graphenalgorithmen: Wiederholung und Übung) Prof. Th. Ottmann.
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Rekursionen Erstellt von J. Rudolf im November 2001 /
WS Algorithmentheorie 02 - Polynomprodukt und Fast Fourier Transformation Prof. Dr. Th. Ottmann.
Algorithmentheorie 02 – Polynomprodukt und Fast Fourier Transformation
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (03 – Verschiedene Algorithmen für dasselbe Problem) Prof. Dr. Th. Ottmann.
WS Algorithmentheorie 01 – Divide and Conquer (Segmentschnitt) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Tobias Lauer.
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (03 – Verschiedene Algorithmen für dasselbe Problem) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
WS Algorithmentheorie 08 – Dynamische Programmierung (2) Matrixkettenprodukt Prof. Dr. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 4 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 2 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Union-Find-Strukturen
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (03 – Verschiedene Algorithmen für dasselbe Problem) Prof. Dr. Th. Ottmann.
Algorithmen und Datenstrukturen
Vorlesung Informatik 3 Einführung in die Theoretische Informatik (17 –Turingmaschinen) Prof. Dr. Th. Ottmann.
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
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
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 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
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 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
Universität Dortmund, Lehrstuhl Informatik 1 EINI II Einführung in die Informatik für Naturwissenschaftler und Ingenieure.
Imperative Programmierung Funktionen und Parameter
PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Methoden sind mit einem Namen versehene Programmabschnitte besitzen Rückgabetyp, Namen, Parameterliste.
Christian Schindelhauer
Programmierung 1 - Repetitorium
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Einführung in die Programmierung Wintersemester 2013/14 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
BIT – Schaßan – WS 02/03 Basisinformationstechnologie HK-Medien Teil 1, 11.Sitzung WS 02/03.
Beweissysteme Hartmut Klauck Universität Frankfurt WS 06/
Beweissysteme Hartmut Klauck Universität Frankfurt WS 06/
Hartmut Klauck Universität Frankfurt WS 06/
Polynome und schnelle Fourier-Transformation
Einführung in die Programmierung
Einführung in die Informatik für Naturwissenschaftler und Ingenieure
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmierung Wintersemester 2009/10 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmierung Wintersemester 2009/10 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmierung Wintersemester 2011/12 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmierung
Einführung in die Programmierung Wintersemester 2012/13 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmiersprache C 4
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger Institut.
2.4 Rekursion Klassifikation und Beispiele
Eine rein funktionale Sprache
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.
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
1 Albert-Ludwigs-Universität Freiburg Rechnernetze und Telematik Prof. Dr. Christian Schindelhauer Informatik III Christian Schindelhauer Wintersemester.
Integritätserhaltung und -Überprüfung in deduktiven Datenbanken
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
Funktionen. Aufgabe : Eingabe zweier Zahlen ---> Minimum bestimmen Dann nochmals Eingabe zweier Zahlen ---> Minimum bestimmen.
Dr. Wolfram Amme, Semantik funktionaler Programme, Informatik II, FSU Jena, SS Semantik funktionaler Programme.
Funktionen (Zweck und Eigenschaften) Funktionen sind Unterprogramme, die einen bestimmten Zweck erfüllen Sie zerlegen Probleme in kleine, abgeschlossene.
Dr. Wolfram Amme, Automatische Speicherverwaltung, Informatik II, FSU Jena, SS Automatische Speicherverwaltung.
1. Die rekursive Datenstruktur Liste 1.3 Rekursive Funktionen
REKURSION + ITERATION.
 Präsentation transkript:

Visualisierung funktionaler Programme Ljudmila Nekrasova Seminar Softwaretechnik: Visualisierung von Softwareprozessen WS 2002/2003

Inhalt Einleitung Ansätze der Visualisierung Abarbeitung imperativer Programme Abarbeitung funktionaler Programme Visualisierung funktionaler Programme Auswertung funktionaler Programme Ersetzungsstrategien Die von KIEL unterstützte Teilsprache von ML Unterschiede zwischen Berechnungsregeln am Beispiel von Morris-Funktion mit Anwendung von KIEL Visualisierung von Quicksort in KIEL Zusammenfassung Literatur Seminar Softwaretechnik: Visualisierung von Softwareprozessen WS 2002/2003

Abarbeitung funktionaler Programme Ein funktionales Programm besteht aus der Definition von einem oder mehreren Rechenvorschriften Ausführung eines funktionalen Programms bedeutet Auswertung eines Ausdrucks. Ein Ausdruck bzw. Term ist ein gewisser Aufruf des Rechenvorschrifts, wobei die formalen Parameter durch die jeweiligen Argumente substituiert werden Die Auswertung geschieht durch Termersetzung. Mit jedem Ersetzungsschritt wird der Ausdruck immer mehr bis zum seinen Wert reduziert. Also besteht die Auswertung aus einer Folge von Reduktionsschritten, die am Ende , wenn keine Reduktion mehr möglich ist, zum Ergebnis (Wert des Ausdrucks) führt. Seminar Softwaretechnik: Visualisierung von Softwareprozessen WS 2002/2003

Visualisierung funktionaler Programme Ein möglicher Ansatz der Visualisierung funktionaler Programme ist die Visualisierung der Termersetzung Dazu wird ein Term als Baum dargestellt. Es wird also eine Graph-Repräsentation des Programms erstellt, die mittels Graph-Reduktion die Termersetzung nachbildet Beispiel: f ( x ) = (x + 1) * (x – 1 ) Die Auswertung des Terms f ( 4 ) Kann wie folgt dargestellt werden: @ * * f 4  + -  5 3  15 4 1 4 1 Seminar Softwaretechnik: Visualisierung von Softwareprozessen WS 2002/2003

Visualisierung funktionaler Programme Es gibt zwei Arten von Auswertung: strikte und nicht strikte Auswertung @ f x Funktion f wird auf Argument x angewandt Strikte Auswertung: Das Argument x wird reduziert, bevor die Definition von f eingesetzt und weiter reduziert wird Nicht-strikte Auswertung: Die Expansion der Definition von f, bevor das Argument x ausgewertet wird, kann unnötige Berechnungen ersparen. Ein Argument wird erst dann ausgewertet, wenn eine Funktion tatsächlich auf das Argument zugreifen muss Seminar Softwaretechnik: Visualisierung von Softwareprozessen WS 2002/2003

Visualisierung funktionaler Programme Beispiel: nicht-strikte Funktion fac (x) = if x = 0 then 1 else x * fac(x – 1) fac (0) ist auszuwerten @ if @  = 1 f -  1 f 0 0 0 0 1 Seminar Softwaretechnik: Visualisierung von Softwareprozessen WS 2002/2003

Auswertung funktionaler Programme Die im Expansionsschritt zu expandierenden Rechenvorschriftsaufrufe werden von der gewählten Ersetzungsart (Ersetzungsstrategie) bestimmt Es gibt mehrere Ersetzungsarten Sei t ein Ausdruck . Sei b der Auswertungsbaum zu t Ersetzungsart Zu expandierende Rechenvorschriftsaufrufe Leftmost-Innermost {r | r ist bei einem Tiefensuchedurchlauf in b der erste Rechenvorschriftsknoten, der keine Rechenvorschtriftsknoten als Nachkommen hat } Leftmost-Outermost {r | r ist bei einem Tiefensuche-Durchlauf in b der erste Rechenvorschriftsknoten } Full {r | r ist Rechenvorschriftsknoten in b } Seminar Softwaretechnik: Visualisierung von Softwareprozessen WS 2002/2003

Auswertung funktionaler Programme Leftmost-Outermost-Strategie stellt nicht-strikte Auswertung dar und Leftmost-Innermost - strikte Auswertung Allgemein ist die Leftmost-Innermost-Ersetzung effizienter als Leftmost-Outermost–Strategie, da Argumentausdrücke durch das Einsetzen von verdoppelt und damit mehrfach ausgewertet werden Beispiel: Gegeben ist folgende Funktion: double (x) = x + x Wenn der Ausdruck double (fac (125)) nach Leftmost-Outermost-Strategie ausgewertet wird, dann erhalten wir folgenden Ausdruck fac ( 125) + fac (125) Also fac (125) muß doppelt ausgewertet werden Seminar Softwaretechnik: Visualisierung von Softwareprozessen WS 2002/2003

Unterschiede zwischen Berechnungsregeln am Beispiel von Morris-Funktion mit Anwendung von KIEL Seminar Softwaretechnik: Visualisierung von Softwareprozessen WS 2002/2003

Auswertung von Morris-Funktion nach der Leftmost-Innermost Strategie Seminar Softwaretechnik: Visualisierung von Softwareprozessen WS 2002/2003

Auswertung von Morris-Funktion nach der Leftmost-Innermost Strategie Seminar Softwaretechnik: Visualisierung von Softwareprozessen WS 2002/2003

Auswertung von Morris-Funktion nach der Leftmost-Outermost Strategie Seminar Softwaretechnik: Visualisierung von Softwareprozessen WS 2002/2003

Quicksort Das Quicksort –Algorithmus wird in ML wie folgt rekursiv definiert: fun qsort (s: int list) : int list = if null(s) then s else qsort( le (s, hd (s))) @ eq (s, hd (s)) @ qsort (gr (s, hd (s)) ; Die Funktion qsort benutzt drei Hilfsfunktionen: fun le (s: int list, n : int) : int list = if null (s) then nil else if hd (s) < n then hd (s) :: le (tl (s), n) else le (tl (s), n) ; fun eq (s: int list, n : int) : int list = if null (s) then nil else if hd (s) = n then hd (s) :: eq (tl (s), n) else eq (tl (s), n) ; fun gr (s : int list, n : int) : int list = if null (s) then nil else if hd (s) > n then hd ( s) :: gr (tl (s), n) else gr (tl (s), n) ; Seminar Softwaretechnik: Visualisierung von Softwareprozessen WS 2002/2003

Visualisierung von Quicksort in KIEL Seminar Softwaretechnik: Visualisierung von Softwareprozessen WS 2002/2003

Visualisierung von Quicksort in KIEL Seminar Softwaretechnik: Visualisierung von Softwareprozessen WS 2002/2003

Visualisierung von Quicksort in KIEL Seminar Softwaretechnik: Visualisierung von Softwareprozessen WS 2002/2003

Visualisierung von Quicksort in KIEL Seminar Softwaretechnik: Visualisierung von Softwareprozessen WS 2002/2003

Visualisierung von Quicksort in KIEL Seminar Softwaretechnik: Visualisierung von Softwareprozessen WS 2002/2003

Literatur Dr. Prof. Berghammer R. : KIEL Ein Computersystem zur Visualisierung der Auswertung von funktionalen Programmen. Inst. Für Informatik und Praktische Mathematik, Universität Kiel ( 1999) Tiedt M. : Kiel interactive evaluation laboratory: Eine Arbeitsumgebung zur Visualisierung von Termersetzungssemantik. Diplomarbeit, Inst. Für Informatik und Praktische Mathematik,Universität Kiel (1999) Dr. Hubwieser P. : Rekursion im didaktischen Querschnitt. Habilitationsvortrag (2000) Koj J.: Eine graphische Programmierumgebung für deklarative Programmiersprachen. Diplomarbeit, Mathematisch-naturwissenschaftliche Fakultät der Rheinisch-Wesfälichen Technischen Hochschule Aachen (2000) Seminar Softwaretechnik: Visualisierung von Softwareprozessen WS 2002/2003