27.06.2006 Proseminar SS 20061 Evaluation der Programmiersprache PASCAL AN ASSESSMENT OF THE PROGRAMMING LANGUAGE PASCAL Autor: Niklaus Wirth Bearbeitung:

Slides:



Advertisements
Ähnliche Präsentationen
Blue J.
Advertisements

Algorithmentheorie 08 – Dynamische Programmierung (1)
Imperative Programmierung
Prüfungspläne Bachelor-Thesis
Zusammenfassung der Vorwoche
Suche in Texten (Stringsuche )
Pascal-Datentypen Skalare Typen Zeiger- Typen Strukturierte Typen
10. Grundlagen imperativer Programmiersprachen
der Universität Oldenburg
Terminierung und Deadlocks Enkhbat Daginaa Betreuerin Prof. Heike Wehrheim Totale Korrektheit.
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
Indirekte Adressierung
Java: Referenzen und Zeichenketten
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.
Union-Find-Strukturen
Fakten, Regeln und Anfragen
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Imperative Programmierung
Praxis-Repetitorium JAVA zusätzliche, ergänzende Lehrveranstaltung
PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Programm besteht aus mehreren Bestandteilen: Schlüsselwörter Sonderzeichen Bezeichner Kommentare Texte.
Semantische Fehler Seminar im Grundstudium WS2002/2003:
Die Skriptsprache Perl (2) Wolfgang Friebel DESY Zeuthen.
Batch-Programmierung Grundlagen
Einführung in die Programmierung Datensammlung
Tino Reindanz - FSU Jena Seminar Aktive Datenbanken – SS 2007 Folie 1 Seminar Aktive Datenbanken Rule Development Rule Development for Active Database.
Spezifikation von Anforderungen
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Debugging in Lua Universität zu Köln Re-usable Content in 3D und Simulationssystemen Prof. Dr. Manfred Thaller Referent: Artur Wilke.
BIT – Schaßan – WS 02/03 Basisinformationstechnologie HK-Medien Teil 1, 11.Sitzung WS 02/03.
Präsentation C Tutorium von Daniel J. Nowak Folie 1 C Tutorium.
Wiederholte Programmausführung
HORIZONT 1 XINFO ® Das IT - Informationssystem PL/1 Scanner HORIZONT Software für Rechenzentren Garmischer Str. 8 D München Tel ++49(0)89 / 540.
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen Übungsmodul 5 Dr. W. Narzt u. Dr. A. Stritzinger.
Programiersprache Mustafa SÖYLEMEZ e
Variablenkonzept Klassisch, in Java Basistyp
Permanente Datenspeicherung
1. Entwicklungsumgebung 2. Kontextmenü 3. Compile 4. Objekt 5. Attribut 6. Klasse 7. Deklaration 8. Intialisierung.
Programmiersprachen Proseminar Grundlagen wissenschaftlichen Arbeitens
Informatik II Grundlagen der Programmierung Programmieren in C Programmstrukturen / Kontrollstrukturen Hochschule Fulda – FB ET Sommersemester 2014.
Grundlagen Wissenschaftlichen Arbeitens Hilal Tekoglu
Algorithmen und Datenstrukturen SS 2005
Mala Bachmann, Beispiel Velorennen (1) Velorennen mit 5 TeilnehmerInnen Wie kann die durchschnittliche Rennzeit berechnet werden?
MODULA-2.
Agenda für heute, 22. Juni, 2006 Direkte FilezugriffeDirekte Filezugriffe Datentypen: Mengen Individualisierbare Datentypen.
Agenda für heute, 20. April, 2006 Wiederholte ProgrammausführungWiederholte Programmausführung Algorithmische Grundlagen Bedingungen zum Abbruch von Programmschleifen.
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.
Agenda für heute, 14. April, 2005 Wiederholte ProgrammausführungWiederholte Programmausführung Algorithmische Grundlagen Bedingungen zum Abbruch von Programmschleifen.
Übung 4.1 Strukturierte Datentypen
Programmieren in C Grundlagen C 2
PHP: Operatoren und Kontrollstrukturen
Hochschule Fulda – FB ET Sommersemester 2014
Programmieren in C Grundlagen C 2
Agenda für heute, 21. April, 2005 Interaktion mit Pascal-ProgrammenInteraktion mit Pascal-Programmen Dateneingabe Programmsteuerung Debugging Datentypen:
Extended Pascal ( Erweitreung von Pascal) Name: Mehmet CELIK Matr :
The Programming Language Pascal
Prüfungsbesprechung Barbara Scheuner Vorlesung: Programmieren und Problemlösen Prof. Hans Hinterberger.
Extended Pascal Erweiterung von Pascal shadi Behzadipour shadi Shadi behzadipour.
Programmiersprache PASCAL
Objektorientierte (OO) Programmierung
1. Betreuer: Prof. Dr. Jörg Striegnitz 2. Betreuer: Dr. Martin Schindler Kontextsensitive Autocompletion für Klassendiagramme in der UML/P Florian Leppers.
Programmieren und Problemlösen
Prüfungsbesprechung Barbara Scheuner
GRUNDLAGEN WISSENSCHAFTLICHEN ARBEITENS MODULA-2 SONAY SUBAYAZ
The Programming Language Pascal
 Präsentation transkript:

Proseminar SS Evaluation der Programmiersprache PASCAL AN ASSESSMENT OF THE PROGRAMMING LANGUAGE PASCAL Autor: Niklaus Wirth Bearbeitung: Haiyu Wang Betreuer: Prof. Dr. Rainer Manthey Proseminar Geschichte der Programmiersprachen SS 2006

Proseminar SS Referenzen Niklaus Wirth: An assessment of the programming language pascal, ACM SIGPLAN Notices, Vol. 10 (6), Juni 1975, 23 – 30 Yao Zhiqiang: Grundlage der Programmiersprache Pascal, Uni-Qinghua Verlag Juli 2000 China.

Proseminar SS Gliederung 1. Was ist zuverlässige Software? 2. Wichtige Sprachkonzepte für transparente Programmierung in Pascal 3. Explizite Unterscheidung zwischen Typ und Variable 4. Datei: ein problematisches Konzept 5. Sicherheit vs. Flexibilität: der Typ Union 6. Zusammenfassung

Proseminar SS Was ist zuverlässige Software ? zuverlässig: ein Mensch, ein Auto, ein Gerät, auf das man sich verlassen kann Viele unerwartete Zustände, die der Programmier nicht im voraus erkannt hat, führen zu Fehlern in einem Programm. Software besteht aus verschiedenen Programmen. Zuverlässige Software bedeutet, dass jeder Teil der Software bzw. jedes Programm stabil und zuverlässig sein muss. Um zuverlässige Programme zu haben, ist es notwendig, korrekten Code zu schreiben.

Proseminar SS Darüber hinaus sehen wir, dass der Programmierer selbst die ganze Zeit über eine bedeutende Rolle spielt. Für Programmierer ist es wichtig, vernünftig, systematisch, präzise abzuwägen, bevor sie Programme schreiben... mit passenden Tools bzw. formaler Sprache Programme zu schreiben. Die Sprache Pascal ist so entworfen worden, dass man zuverlässige Software in Pascal besonders gut erstellen kann.

Proseminar SS Wichtige Sprachkonzepte für transparente Programmierung in Pascal 1. symbolische Skalar-Typen 2. Record-Typen 3. Mengen-Typen 4. Subrange-Typen 5. Schleifen und Verzweigungen

Proseminar SS symbolische Skalar-Typen: type color = (red, yellow, green, blue) Der Compiler überprüft ständig die verschiedenen Variablen dieses Typs und verhindert dadurch unzulässige Operationen. 2. Record-Typen: type person = record name: alfa; age: integer; sex: (male, female); …… end Der Record besteht aus Komponenten, die unterschiedliche Typen haben.

Proseminar SS Mengen-Typen: type tint = set of color Bitstrings, die charakteristische Funktionen darstellen, unterstützen die Darstellung von Mengen. 4. Subrange-Typen: type index = Die Deklaration gibt dem Compiler Informationen, den günstigsten Speicherbedarf zu bestimmen und jeden Auftrag mit den nötigen Überprüfungen durchzuführen.

Proseminar SS Schleifen und Verzweigungen: while, repeat, for if, case Mit Schleifen- und Verzweigungen schreibt man Programme einfach und flexibel. Sprachkonzepte, die Transparenz behindern: 1. Operatorprioritäten Es gibt weniger Operatoren als in Algol goto-Statement Wegen der Instabilität von goto-Statements in Pascal, ist es sinnvoll. keine goto-Statements zu nutzen.

Proseminar SS Explizite Unterscheidung zwischen Typ und Variable In Pascal hat jede Variable einen Typ, und jeder Typ wird präzis vom Programmierer definiert. Der Compiler übersetzt eine Typ-Definition in eine Speicherschablone, die von der Verteilung jeder Variable des Typs abhängig ist. Die Typdefinition bestimmt die Menge von Operatoren, die für die Variablen des Typs zulässig sind.

Proseminar SS Für transparente und effiziente Programm haben explizite Typdefinitionen große Vorteile. Wegen zu strikter Typdefinition hat das Konzept des Typs Schwierigkeit zu unterscheiden, zwischen integer und natural numbers, small sets und large sets. weitere Einschränkungen in der Nutzung von Arrays: 1. Ausschluss von dynamischen Arrays 2. Arrays mit fixierter Größe machen Programme zuverlässiger und transparenter, sind aber weniger flexibel.

Proseminar SS Um oben genannte Nachteile zu beheben, können wir einen Typ als Parameter nutzen. type table (m,n) = array [m.. n] of integer; var t1: table (1,100); t2: table(0,999); function sum (t: table; u, v: integer): integer; var i, s: integer; bigin s := 0; for i := u to v do s := t [i] + s; sum := s end; …… end.

Proseminar SS Datei: ein problematisches Konzept In Pascal bestehen Dateien aus streng sequentiell angeordneten Daten, und sie wird durch mathematischen Begriffe definiert. Im Vergleich zum Array sind Dateien dynamisch änderbar. Eine modifizierte Version von Pascal im Jahre 1973 bietet eine Verbesserung des Datei-Konzepts. Pufferprobleme entstehen, wenn eine Datei in den Sekundärspeicher geladen werden muss.

Proseminar SS Um Pufferprobleme zu lösen, gibt es zwei Möglichkeiten. Die Auswahl hängt von der beabsichtigten Anwendung der Programmiersprache ab: 1. Für Anwendungen bei der Systemkonstruktion kann man auf Dateien ganz verzichten. 2. Sonst kann man oft die Operatoren get und put durch read und write ersetzen: read ( f, x ) Ξ x : = f*; get ( f ) write ( f, x ) Ξ f* : = x ; put ( f ) f* ist Puffer

Proseminar SS Eine Voraussetzung der axiomatischen Schemata ist die Verwendung des Prädikats eof (end of file): EOF(f) = Das bedeutet, bevor man ein Programm angibt, muss der Dateizugriff schon durchgeführt werden. (Ein Puffer hier ist notwendig) Eine Lösung besteht aus einer Kombination von zurückgespulter Datei mit Anfangsladung im Puffer (siehe nächste Folie). TRUE,Sichtfenster steht hinter letzter Komponente von f FALSE,sonst

Proseminar SS Die Lösung mit den Operationen reset (f) und rewrite (f): reset ( f ) Ξ rewind ( f ); openread ( f ) rewrite ( f ) Ξ rewind ( f ); openwrite ( f ) Die Nachteile sind: 1. Der Zusammenhang zwischen eof (f) und Puffer ist zwischendurch unbestimmt. 2. Der Programmierer vergisst manchmal festzulegen, ob eine openread- oder openwrite-Operation vorliegt. Die meisten ungenügenden Konsequenzen des Datei-Konzepts in Pascal entstehen im Bereich von Grundlagen und Text-Dateien.

Proseminar SS Man sieht eine Text-Datei als eine Reihefolge von Linien an, und jede Linie beginnt mit einem Zeichen. Wie eof (f) führen wir eoln (f) ein, der das Ende einer Linie zeigt. Analog werden andere Operatoren eingeführt: writeln (f) beendet die Erzeugung einer Linie, readln (f) beginnt das Lesen der nächsten Linie. Problem dabei: Am Ende einer Linie ist eoln (f) wahr, soll am Ende der letzter Linie die Wert von eof (f) auch wahr sein? Es ist schwer einfach zu sagen. Solche Kleinigkeiten im Datei-Konzept spielen einen ganz wichtigen Rolle, um zuverlässige Programme zu bekommen.

Proseminar SS Sicherheit vs. Flexibilität: der Typ Union Manchmal ist es wünschenswert, Variablen mit verschiedenen Typen zu definieren. Diesel Variablen-Typ heißt Union (Vereinigung) der gewüsnchten Typen. Es gibt drei Gründe dafür, den Typ Union zu verwenden: 1. der Bedarf von unterschiedlichen Strukturen 2. gemeinsame Nutzung von Speicherplatz 3. Typumwandlung. Die Gefahr bei der Verwendung von Union ist, dass die Möglichkeit besteht, den aktuelle Variablen-Typ falsch zu definieren.

Proseminar SS Zusammenfassung PASCAL ist eine zuverlässige Programmiersprache. Die Sprache muss auf einfachen, flexiblen, und sauberen axiomatischen Merkmalen basieren. Die Sprachregeln sollten nicht von traditionellen Regeln abweichen. Auch bei neuen Eigenschaften soll man sich an diese Regeln halten. Jedes Konzept der Sprache soll offensichtlichen Regeln gehorchen. Jede Sprachregel muss vom System überprüfbar sein.

Proseminar SS Ich bedanke mich für Ihre Aufmerksamkeit und herzlich danke Dr. Manthey für die wertvolle Hilfe und Unterstützungen! Wang Haiyu