Strukturierte Programmierung

Slides:



Advertisements
Ähnliche Präsentationen
Niklaus Wirth: Prinzipien der Programmiersprachen und PASCAL
Advertisements

Programme in C++.
C Sharp (C#) Martin Saternus Senior Student Partner
Algorithmentheorie 08 – Dynamische Programmierung (1)
Programmierung 1 - Repetitorium WS 2002/2003 Programmierung 1 - Repetitorium Andreas Augustin und Marc Wagner Homepage:
ALGOL ALGOrithmic Language.
Einführung in die Programmierung Zusammenfassung
16. Modularität und Abstraktion
Ausdrücke bezeichnen Elemente eines Datentyps induktive Definition:
10. Grundlagen imperativer Programmiersprachen
12. Iteration und Rekursion
Puck eine visuelle Programmiersprache für die Schule
Spec# Proseminar Assertions im SS 2007 Uni Paderborn Andreas Martens Betreuer: Dipl. Inform. Björn Metzler.
Java: Dynamische Datentypen
Indirekte Adressierung
Java: Referenzen und Zeichenketten
Garbage Collection Maik Theisen Betreuer: Guido Tack
Objektorientierte Programmierung
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Tobias Lauer.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Informatik II, SS 2008 Algorithmen und Datenstrukturen Vorlesung 2 Prof. Dr. Thomas Ottmann Algorithmen & Datenstrukturen, Institut für Informatik Fakultät.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 5 Polymorphismus Sommersemester 2003 Lars Bernard.
Informatik II (für Fakultät Maschinenwesen)
Imperative Programmierung Funktionen und Parameter
Imperative Programmierung
Automatisches Testen und Bewerten von Java-Klassen
Semantische Fehler Seminar im Grundstudium WS2002/2003:
Proseminar SS Evaluation der Programmiersprache PASCAL AN ASSESSMENT OF THE PROGRAMMING LANGUAGE PASCAL Autor: Niklaus Wirth Bearbeitung:
Zhaohan Chen SS061 SIMULA-an Algol Based Simulation Language geschrieben von: Zhaohan Chen Betreuer: Prof. Dr. Rainer Manthey.
Die Programmiersprache CHILL
Programmierung 1 - Repetitorium WS 2002/2003 Programmierung 1 - Repetitorium Andreas Augustin und Marc Wagner Homepage:
Programmierung 1 - Repetitorium WS 2002/2003 Programmierung 1 - Repetitorium Andreas Augustin und Marc Wagner Homepage:
Einführung in C EDV1 - 03C-Einführung.
Konzepte von Programmiersprachen
Einführung in die Programmierung Datensammlung
INHALT INHALT Inhalt Delphi IDE ObjectPascal Hello World! Delphi IDE
BIT – Schaßan – WS 02/03 Basisinformationstechnologie HK-Medien Teil 1, 11.Sitzung WS 02/03.
Einführung in die Programmierung
Willkommen... Studentinnen und Studenten der Studiengänge Umweltnaturwissenschaften Erdwissenschaften Agrarwissenschaften zur.
Dynamische Datentypen
Konzept einer Programmiersprache!
Programiersprache Mustafa SÖYLEMEZ e
Programmiersprachen Proseminar Grundlagen wissenschaftlichen Arbeitens
Kapitel 2: Grundelemente von Programmiersprachen
Grundlagen Wissenschaftlichen Arbeitens Hilal Tekoglu
Algorithmen und Datenstrukturen Übungsmodul 3
MODULA-2.
Starten der Entwicklungsumgebung (IDE)
Agenda für heute, 18. Mai, 2006 Strukturierung von Programmen: ProzedurenStrukturierung von Programmen: Prozeduren Strukturierung von Programmen: Units.
Agenda für heute, 12. Mai, 2005 ProzedurenProzeduren Funktionsprozeduren Prozedurparameter Lokale und globale Variablen Datentypen: Ordinaltypen.
Agenda für heute, 28. April, 2005 Strukturierte VariablenStrukturierte Variablen Arrays.
Agenda für heute, 7. April, 2005 Bedingte ProgrammausführungBedingte Programmausführung Algorithmische Grundlagen Vergleichsoperatoren, Wahrheitswerte.
Programmieren in C Grundlagen C 2
Vorkurs Programmierungstechnik Einführung in Pascal Michael Gellner Lehrstuhl für Softwaretechnik am Institut für praktische Informatik der Universität.
Computergestützte Verifikation
Algorithmen und Datenstrukturen 1 SS 2002
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Extended Pascal ( Erweitreung von Pascal) Name: Mehmet CELIK Matr :
The Programming Language Pascal
Extended Pascal Erweiterung von Pascal shadi Behzadipour shadi Shadi behzadipour.
Programmiersprache PASCAL
Objektorientierte (OO) Programmierung
Funktionen (Zweck und Eigenschaften) Funktionen sind Unterprogramme, die einen bestimmten Zweck erfüllen Sie zerlegen Probleme in kleine, abgeschlossene.
Pointer. * und &  Bei der Definition int var1; ○ // „normale“ Variable int *var2; ○ // Zeiger auf einen Integer int *var2 = NULL; ○ // … incl. Initialisierung.
Namensliste Teil der semantischen Aktionen
Programmieren und Problemlösen
GRUNDLAGEN WISSENSCHAFTLICHEN ARBEITENS MODULA-2 SONAY SUBAYAZ
The Programming Language Pascal
 Präsentation transkript:

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

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

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

Strukturierte Programmierung Pascal Modula-2 Algol

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

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;

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

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!

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

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...

Strukturierte Programmierung Pascal Modula-2 Algol

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

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!

Strukturierte Programmierung Pascal Modula-2 Algol

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!

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

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

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.

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

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