Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Strukturierte Programmierung

Ähnliche Präsentationen


Präsentation zum Thema: "Strukturierte Programmierung"—  Präsentation transkript:

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

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

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

4 Strukturierte Programmierung
Pascal Modula-2 Algol

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

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

7 Algol 68 Produkt zweier WG und deren Kompromissen
 vgl. Entstehungsgeschichte um PASCAL Systematisierung des Typsystems 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! 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 Impl. Wechsel des Typs (a priori) eines Ausdrucks
um den Typ (a posterio) der Umgebung zu entsprechen Widening  realvar := intvar Dereferencing  y: ref real x := y Deproceduring real x:= random proc r:= random und einige mehr...

11 Strukturierte Programmierung
Pascal Modula-2 Algol

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

13 Innovationen & Probleme
Algol: viele statement-Strukturen Pascal: viele (dynamische) Daten(typ)-Strukturen (C. Hoare)  expliziter Derefenzierungsop () & Pointertyp (Ü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; Dennoch nicht gelungene Datentypen: Variant Record var r: record maxspeed: integer; case v: Vehicle of truck: (nowheels: integer); vessel: (homeport: string) end p(x) nicht erlaubt!

14 Strukturierte Programmierung
Pascal Modula-2 Algol

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

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

17 Definition & Implementation
Definition part: Deklaration der Objekte Beispiel: 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. lokale Module möglich

18 Typabstraktion Transparent export Opaque export
Implementation von opaken Typen nur durch Pointertypen! 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 Algol
 Einführung wesentlicher Konzepte der Strukturierten Programmierung Pascal  Sprache im Lehrbereich mit didaktisch einfacher Syntax zur Vermittlung grundlegender Programmierkonzepte Modula-2  Einführung des Modulkonzepts

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


Herunterladen ppt "Strukturierte Programmierung"

Ähnliche Präsentationen


Google-Anzeigen