Strukturierte Programmierung - PowerPoint PPT Presentation

About This Presentation
Title:

Strukturierte Programmierung

Description:

Entstehungsgeschichte um PASCAL Systematisierung des Typsystems Imperativ & expression-orientientiert: x:= (real a= p*q; real b= p/q; if ab then ... – PowerPoint PPT presentation

Number of Views:195
Avg rating:3.0/5.0
Slides: 21
Provided by: FrankB159
Category:

less

Transcript and Presenter's Notes

Title: Strukturierte Programmierung


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)
  • 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
  • Modula-2
  • Pascal
  • 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

begin real e2.718 ... end
Blockbeispiel
7
Algol 68
  • Produkt zweier WG und deren Kompromissen
  • ? vgl. Entstehungsgeschichte um PASCAL
  • Systematisierung des Typsystems
  • Imperativ expression-orientientiert
  • x (real a pq real b p/q if agtb then a
    else b fi) (y 2z)
  • ? ? 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 a0array1..100 of
    real type a1array0..999 of real
    var x a1 procedure p(xa0) 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
  • Modula-2
  • Pascal
  • Algol

15
Modula
  • 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 Reali
    sierung großer Projekte, Wiederverwendbarkeit und
    Unabhängigkeit der Erstellung ? Separate
    Kompilierung
  • Beispiel MODULE Beispiel FROM InOut
    IMPORT Read, Write Decs begin R
    ead(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,yreal)
Point procedure abs(pPoint) real end Points.
implementation module Points procedure
assign(x,yreal) Point begin..end assign
procedure abs(pPoint) 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,yreal var pPoint)
procedure abs(pPoint) real end OpPoints.
implementation module OpPoints type Point
pointer to PointData PointData
Array1..2 of real procedure assign(x,yreal
var pPoint) begin..end assign procedure
abs(pPoint) 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
Write a Comment
User Comments (0)
About PowerShow.com