Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Strukturierte Programmierung Algol Pascal Modula-2 Lehrstuhl für Programmiersysteme Prof. Gert Smolka Vortrag: Frank Bauer Betreuer: Andreas Rossberg.

Ähnliche Präsentationen


Präsentation zum Thema: "Strukturierte Programmierung Algol Pascal Modula-2 Lehrstuhl für Programmiersysteme Prof. Gert Smolka Vortrag: Frank Bauer Betreuer: Andreas Rossberg."—  Präsentation transkript:

1 Strukturierte Programmierung Algol Pascal Modula-2 Lehrstuhl für Programmiersysteme Prof. Gert Smolka Vortrag: Frank Bauer Betreuer: Andreas Rossberg

2 Strukturierte Programmierung Situation vor der Entstehung der StrukturiertenProgrammierung ( FORTRAN) n Programm als bloße Folge von Anweisungen n Monolithische Programme n Globale Variablen n Keine Prozeduren n GoTo

3 Strukturierte Programmierung Neue Konzepte, die zuvor unbekannt waren n (lexikalisches) Scoping n Einführung von Prozeduren n Strukturierung durch Module

4 Strukturierte Programmierung

5 Algol 60 n Erstes systematisches einfaches Typsystem (statisch) n Erstmalig Rekursion als Konzept Eleganter Quicksort-Algorithmus durch Hoare n Stack Allokation n Call-by-name & Call-by-value n Erfindung der Backus-Normal-Form (BNF) Definition der Syntax der Sprache

6 Blockstruktur n Wesentlicher Beitrag zur Strukturierten Programmierung durch Einführung der Blockstruktur in Programmen Enstehung von Kontrollstrukturen und Scoping, wie etwa FOR- oder WHILE-Schleifen begin real e:=2.718;... end; Blockbeispiel:

7 Algol 68 n Produkt zweier WG und deren Kompromissen vgl. Entstehungsgeschichte um PASCAL n Systematisierung des Typsystems n Imperativ & expression-orientientiert: x:= (real a= p*q; real b= p/q; if a>b then a else b fi) + (y:= 2*z); Betonung des Ausdruckbegriffs! n Versuch der exakten Definition der Semantik

8 Orthogonalität Beliebige Komposition aus Referenzen, Records und anderen Typen 1. Records (structs) als Parameter, Variablen und als Resultate 2. Procs als Parameter (call-by-name), Variablen und als Resultate 3. Referenzen subsummieren Pointer, Variablen, Call-by-name wenn ref x ein Typ, dann auch ref ref x Variablen und Referenzen als synonyme Konzepte!

9 Typsystem 1. Strukturelle Typäquivalenz mode a= struct(int val, ref a next); mode b= struct(int val, ref struct (int val, ref b next) next); 2. Procs werden als first-class-citizens behandelt proc a = (int n, proc (int) real x) real: begin...x(i)..end 3. Unions mode person= union(man, woman); case body (loc person) in (man) :... (woman) :... esac

10 Coercions n Widening realvar := intvar n Dereferencing y: ref real x := y Impl. Wechsel des Typs (a priori) eines Ausdrucks um den Typ (a posterio) der Umgebung zu entsprechen n Deproceduring real x:= random proc r:= random und einige mehr...

11 Strukturierte Programmierung

12 Pascal n Sprachdefinition ~1970 (N. Wirth) n Einsatzgebiet: ausdruckskräftige, einfache Sprache im Lehrbereich Anschauung von Structured Programming & Stepwise Refinement n Versuch der Implementierung einer effizienten Sprache & Compiler n Probleme: minimaler Sprachumfang der Kompatibilitätsprobleme schuf, vergleichsweise langsame Programme

13 Innovationen & Probleme n Algol: viele statement-Strukturen Pascal: viele (dynamische) Daten(typ)-Strukturen (C. Hoare) expliziter Derefenzierungsop ( ) & Pointertyp n (Über) Betonung der frühen Bindung und statischer Eigenschaften: type a0=array[1..100] of real; type a1=array[0..999] of real; var x: a1; procedure p(x:a0); begin...end; n Dennoch nicht gelungene Datentypen: Variant Record var r: record maxspeed: integer; case v: Vehicle of truck: (nowheels: integer); vessel: (homeport: string) end

14 Strukturierte Programmierung

15 Modula n Entwicklung durch N. Wirth in den späten 1970er Jahren n Modul = Zusammenfassung von Deklarationen (Konstanten, Vars, Typen, Prozeduren) n Zweck: Problemzerlegung in Teilfunktionen & Verfeinerung Main Module Prozeduren Realisierung großer Projekte, Wiederverwendbarkeit und Unabhängigkeit der Erstellung Separate Kompilierung n Beispiel : MODULE Beispiel; FROM InOut IMPORT Read, Write; Decs; begin Read(ch); Write(ch); statements end Beispiel.

16 Modulkonzept n Modul = Abstraktion nach außen Information Hiding n Damit: Sicherung der korrekten Funktionsweise, Fehlereindämmung, Ignorierung von Implementationsdetails n Interface (definition module) & Implementation (implementation module) Sichbarkeit nach außen & beobachtbares Verhalten Unabhängige Änderung eines importierten Moduls n Beide Parts werden unabhängig kompiliert Compilation Units n Änderung der Implementierung ohne Mitteilung an Client des definiton part

17 Definition & Implementation n Definition part: Deklaration der Objekte n Beispiel: lokale Module möglich definition module Points; type Point = Array [1..2] of real; procedure assign(x,y:real): Point; procedure abs(p:Point): real; end Points. implementation module Points; procedure assign(x,y:real): Point; begin..end assign; procedure abs(p:Point): real; begin..end abs; end Points.

18 Typabstraktion n Implementation von opaken Typen nur durch Pointertypen! Transparent exportOpaque export definition module OpPoints; type Point; procedure assign(x,y:real; var p:Point); procedure abs(p:Point): real; end OpPoints. implementation module OpPoints; type Point = pointer to PointData; PointData = Array[1..2] of real; procedure assign(x,y:real; var p:Point); begin..end assign; procedure abs(p:Point): real; begin..end abs; end OpPoints.

19 Zusammenfassung n Algol Einführung wesentlicher Konzepte der Strukturierten Programmierung n Pascal Sprache im Lehrbereich mit didaktisch einfacher Syntax zur Vermittlung grundlegender Programmierkonzepte n Modula-2 Einführung des Modulkonzepts

20 Referenzen n Thomas Bergin, Richard Gibson, History of Programming Languages, ACM Press 1996 n Andrew McGettrick, Algol 68: a first and second course. Cambridge University Press 1978 n Edsger Dijkstra, Go To Statement Considered Harmful. Communications of the ACM 11(3), ACM Press 1968 n Niklaus Wirth, Programming in Modula 2. Springer 1982 n John C. Mitchell, Concepts in Programming Languages, Cambridge University Press 2003


Herunterladen ppt "Strukturierte Programmierung Algol Pascal Modula-2 Lehrstuhl für Programmiersysteme Prof. Gert Smolka Vortrag: Frank Bauer Betreuer: Andreas Rossberg."

Ähnliche Präsentationen


Google-Anzeigen