Visualisierung funktionaler Programme

19
Seminar Softwaretechnik: Visu alisierung von Softwareprozes sen WS 2002/2003 1 Visualisierung funktionaler Programme Ljudmila Nekrasova

description

Visualisierung funktionaler Programme. Ljudmila Nekrasova. Inhalt. Einleitung Ansätze der Visualisierung Abarbeitung imperativer Programme Abarbeitung funktionaler Programme Visualisierung funktionaler Programme Auswertung funktionaler Programme Ersetzungsstrategien - PowerPoint PPT Presentation

Transcript of Visualisierung funktionaler Programme

Page 1: Visualisierung funktionaler Programme

Seminar Softwaretechnik: Visualisierung von Softwareprozessen WS 2002/2003

1

Visualisierung funktionaler Programme

Ljudmila Nekrasova

Page 2: Visualisierung funktionaler Programme

Seminar Softwaretechnik: Visualisierung von Softwareprozessen WS 2002/2003

2

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

Page 3: Visualisierung funktionaler Programme

Seminar Softwaretechnik: Visualisierung von Softwareprozessen WS 2002/2003

3

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.

Page 4: Visualisierung funktionaler Programme

Seminar Softwaretechnik: Visualisierung von Softwareprozessen WS 2002/2003

4

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 nachbildetBeispiel:f ( x ) = (x + 1) * (x – 1 )Die Auswertung des Termsf ( 4 )Kann wie folgt dargestellt werden: @ * *

f 4 + - 5 3 15

4 1 4 1

Page 5: Visualisierung funktionaler Programme

Seminar Softwaretechnik: Visualisierung von Softwareprozessen WS 2002/2003

5

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

Page 6: Visualisierung funktionaler Programme

Seminar Softwaretechnik: Visualisierung von Softwareprozessen WS 2002/2003

6

Visualisierung funktionaler Programme

Beispiel: nicht-strikte Funktionfac (x) = if x = 0 then 1else x * fac(x – 1)

fac (0) ist auszuwerten

@ if @ = 1 f - 1

f 0 0 0 0 1

Page 7: Visualisierung funktionaler Programme

Seminar Softwaretechnik: Visualisierung von Softwareprozessen WS 2002/2003

7

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 }

Page 8: Visualisierung funktionaler Programme

Seminar Softwaretechnik: Visualisierung von Softwareprozessen WS 2002/2003

8

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

Page 9: Visualisierung funktionaler Programme

Seminar Softwaretechnik: Visualisierung von Softwareprozessen WS 2002/2003

9

Unterschiede zwischen Berechnungsregeln am Beispiel von Morris-Funktion mit Anwendung von KIEL

Page 10: Visualisierung funktionaler Programme

Seminar Softwaretechnik: Visualisierung von Softwareprozessen WS 2002/2003

10

Auswertung von Morris-Funktion nach der Leftmost-Innermost Strategie

Page 11: Visualisierung funktionaler Programme

Seminar Softwaretechnik: Visualisierung von Softwareprozessen WS 2002/2003

11

Auswertung von Morris-Funktion nach der Leftmost-Innermost Strategie

Page 12: Visualisierung funktionaler Programme

Seminar Softwaretechnik: Visualisierung von Softwareprozessen WS 2002/2003

12

Auswertung von Morris-Funktion nach der Leftmost-Outermost Strategie

Page 13: Visualisierung funktionaler Programme

Seminar Softwaretechnik: Visualisierung von Softwareprozessen WS 2002/2003

13

QuicksortDas 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) ;

Page 14: Visualisierung funktionaler Programme

Seminar Softwaretechnik: Visualisierung von Softwareprozessen WS 2002/2003

14

Visualisierung von Quicksort in KIEL

Page 15: Visualisierung funktionaler Programme

Seminar Softwaretechnik: Visualisierung von Softwareprozessen WS 2002/2003

15

Visualisierung von Quicksort in KIEL

Page 16: Visualisierung funktionaler Programme

Seminar Softwaretechnik: Visualisierung von Softwareprozessen WS 2002/2003

16

Visualisierung von Quicksort in KIEL

Page 17: Visualisierung funktionaler Programme

Seminar Softwaretechnik: Visualisierung von Softwareprozessen WS 2002/2003

17

Visualisierung von Quicksort in KIEL

Page 18: Visualisierung funktionaler Programme

Seminar Softwaretechnik: Visualisierung von Softwareprozessen WS 2002/2003

18

Visualisierung von Quicksort in KIEL

Page 19: Visualisierung funktionaler Programme

Seminar Softwaretechnik: Visualisierung von Softwareprozessen WS 2002/2003

19

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)