Vergleichen Programmiersprache

Slides:



Advertisements
Ähnliche Präsentationen
ALP II: Objektorientierte Programmierung Sommersemester 2006
Advertisements

der Universität Oldenburg
Forschungszentrum caesar
Einführung in die Programmierung Zusammenfassung
16. Modularität und Abstraktion
Ausdrücke bezeichnen Elemente eines Datentyps induktive Definition:
Pascal-Datentypen Skalare Typen Zeiger- Typen Strukturierte Typen
10. Grundlagen imperativer Programmiersprachen
Puck eine visuelle Programmiersprache für die Schule
DINAMISCHE STRUKTUREN FACHBEGRIFFE 1. DER POINTERDER POINTER 2. DER BUFFERDER BUFFER 3. DER KNOTENDER KNOTEN DIE EINFACHVERKETTETE LISTE DEFINITION DEFINITION.
FH-Hof Einbindung von JavaScript Anweisungen
Java: Dynamische Datentypen
Indirekte Adressierung
Java: Grundlagen der Sprache
Java: Referenzen und Zeichenketten
Strukturierte Programmierung
1 Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Prof. Dr. Th. Ottmann.
Vorlesung Informatik 2 Algorithmen und Datenstrukturen (02 – Funktionenklassen) Tobias Lauer.
Die Skriptsprache Lua Softwaretechnologie II.
Praktikum Entwicklung und Einsatz von Geosoftware I - Sitzung 3 Klassen, Objekte, Arrays und Kontrollstrukturen Sommersemester 2003 Lars Bernard.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Vorlesung 2 SWS WS 99/00 Gisbert Dittrich FBI Unido
Die Programmiersprache CHILL
Die Skriptsprache Perl (2) Wolfgang Friebel DESY Zeuthen.
Einführung in die Programmierung Anweisungen und Datentypen
LS 2 / Informatik Datenstrukturen, Algorithmen und Programmierung 2 (DAP2)
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
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.
Wiederholte Programmausführung
Willkommen... Studentinnen und Studenten der Studiengänge Umweltnaturwissenschaften Erdwissenschaften Agrarwissenschaften zur.
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
Dynamische Datentypen
Konzept einer Programmiersprache!
Programiersprache Mustafa SÖYLEMEZ e
Programmiersprachen Proseminar Grundlagen wissenschaftlichen Arbeitens
Purga - Scriptengine Ein Einblick.
Grundlagen Wissenschaftlichen Arbeitens Hilal Tekoglu
Algorithmen und Datenstrukturen Übungsmodul 1
MODULA-2.
Willkommen... Studentinnen und Studenten der Studiengänge Umweltnaturwissenschaften Erdwissenschaften Agrarwissenschaften zur.
Agenda für heute, 18. Mai, 2006 Strukturierung von Programmen: ProzedurenStrukturierung von Programmen: Prozeduren Strukturierung von Programmen: Units.
Datentypen: integer, char, string, boolean
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.
Agenda für heute, 26. Mai, 2005 Strukturierte Variablen: RecordsStrukturierte Variablen: Records Kombiniertes Strukturieren Individualisierbare Datentypen.
Programmieren in C Grundlagen C 2
BMEVIEEA100 Grundlagen der Programmierung
PI Burgenland Java und JavaScript 1. Teil
Vorkurs Programmierungstechnik Einführung in Pascal Michael Gellner Lehrstuhl für Softwaretechnik am Institut für praktische Informatik der Universität.
Der Datentyp Verbund (record)
Agenda für heute, 21. April, 2005 Interaktion mit Pascal-ProgrammenInteraktion mit Pascal-Programmen Dateneingabe Programmsteuerung Debugging Datentypen:
Kapitel 5Strukturen Information aus der realen Welt werden in einem informationsverarbeitenden System als Daten abgelegt. Diese stellen also eine (vereinfachte)
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
Delphi Chars und Strings
Extended Pascal ( Erweitreung von Pascal) Name: Mehmet CELIK Matr :
The Programming Language Pascal
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen 1 SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger Institut.
Extended Pascal Erweiterung von Pascal shadi Behzadipour shadi Shadi behzadipour.
Programmiersprache PASCAL
A SHORT INTRODUCTION TO CONCURRENT EUCLID Entwicklung von Euclid 1976 Entwicklung von Euclid 1977 Entwicklung des „TORONTO Euclid“ 1977 Entwicklung.
Objektorientierte (OO) Programmierung
Programmieren und Problemlösen
Strukturierte Variablen: Records
Hello World! Javakurs 2013 Arne Kappen
Datentypen: integer, char, string, boolean
Datentypen: integer, char, string, boolean
Einführung in die Programmierung
GRUNDLAGEN WISSENSCHAFTLICHEN ARBEITENS MODULA-2 SONAY SUBAYAZ
The Programming Language Pascal
 Präsentation transkript:

Vergleichen Programmiersprache Modula 2-Sprache Proseminar : Vergleichen Programmiersprache zhao ,ning

Gliederung Einleitung Module Typkonzepte Prozedurkonzepte, Anweisungen Exception Prozess, Multiprozess Mergesort OOM2 Literatur

Geschichte 1984 Turing Preis. 1966 Algo W,PL 360 in Amerika Univerität <<Algorithms+Data Structures=Programs>> 1984 Turing Preis. 1966 Algo W,PL 360 in Amerika Univerität Pascal 1971 in Schweiz Strukturiert Programmierung 1976 wieder nach Amerika, in Firma Xerox, Alto Computer zu entwerfen. 1977 in ETH um mit Lilith PC zusammenzuarbeiten,Modula-2 1978 Modula-2 veröffentlichen EBNF(Extended BNF) , Syntax Diagramm Oberon,Oberon-2

Anwendungsgebiete Unsiverselle Sprache Datenstrukturen, Software Engineering,Koncurrent Programmierung Wissenschaftliche Anwendung,Diskrete Simulation Bio-Informatik LifeLab (Labor für zellulare 2D Automaten) Große Projekte und Echtzeitsysteme Entwicklung großer System 1985.MicroPro Easy orientiert sich an Benutzer ,die Computer hassen

Vorteile 25 Seiten Beschreibung, leicht erlernbar Module werden getrennt kompiliert, dadurch weniger Fehlermöglichkeit und leichtere Änderbarkeit Geschwindigkeit, leicht portierbar auf ein anderes Betriebssystem Fehler werden frühzeitig erkannt (vollständige Typprüfung, Schnittstellenprüfung schon beim Kompilieren). Modula-2-Programme haben dadurch 3 Mal weniger Fehler als C-Programme Einfache Implementierung paraleller Prozesse

Neuheit Daten kapseln für zuverlässig Softwaresystem ADT Konzept wird unterstützt eine strenge Typbindung. Qualifizierte Zugriffe Pointer

Modulhierarchie Module Programm Module Lokale Module Globale Module Basis Module Bibliotheks- module Benutzer- module Grundbibliotheks- module

Module Internationaler Standard definiert 5 System Module: SYSTEM, COROUTINES, TERMINATION, EXCEPTIONS und M2EXCEPTION. Keine Übersetzung der SYSTEM Module notwendig. Durch die Systemmodule werden bereitgestellt: rechnerspezifischer Datentypen und Prozeduren, Typtransfer-Funktionen und die Möglichkeit der Deklaration von Variablen mit festen Adressen. Durch SYSTEM-Modul bereitgestellte Datentypen: WORD, ADDRESS, PROCESS. Durch SYSTEM-Modul bereitgestellte Prozeduren: ADR, SIZE, TSIZE, NEWPROCESS, TRANSFER sowie weitere Objekte, abhängig von verwendeten Compiler.

HELLOWORLD MODULE hello; IMPORT InOut; BEGIN Qualifizierter Import MODULE hello; IMPORT InOut; BEGIN InOut.WriteString("Hello, world!"); InOut.WriteLn; END hello. Nicht qualifizierter Import MODULE hello; FROM InOut IMPORT WriteString, WriteLn; BEGIN WriteString("Hello, world!"); WriteLn; END hello.

Schachtelung von Modulen Lokale Module können überall definiert werden, wo auch lokale Variablen definiert werden dürfen. Innere Module sehen nicht die Deklarationen des umschließenden Moduls Ein umschließender Modul sieht nur die exportierten Bezeichner Module auf gleicher Ebene dürfen gegenseitig importieren und exportieren

Sichtbarkeit/Initialisierungsreihenfolge MODULE M; PROCEDURE P; ..... MODULE M1 MODULE M2 MODULE M3 BEGIN Anweisung; END M

Innere Module Qualifizierter Export Unqualifizierter Export MODULE hello; IMPORT InOut; MODULE inner; EXPORT QUALIFIED a; VAR a : INTEGER; BEGIN a := 1; END inner; a :INTEGER; a := 0; InOut.WriteInt(a,3); InOut.WriteInt(inner.a,3); END hello. Unqualifizierter Export MODULE hello; IMPORT InOut; MODULE inner; EXPORT a; VAR a : INTEGER; BEGIN a := 1; END inner; a :INTEGER; a := 0; InOut.WriteInt(a,3); InOut.WriteInt(inner.a,3); END hello.

Externe Module DEFINITION MODULE item; IMPLEMENTATION MODULE item; TYPE index = INTEGER; item = RECORD key: index END; PROCEDURE ReadItem(): item; END item. (*Schnittstellen in „def“ Datei speichern*) IMPLEMENTATION MODULE item; FROM InOut IMPORT WriteLn, WriteString, ReadInt, WriteInt; PROCEDURE ReadItem(): item; ... BEGIN … END ReadItem;

Undurchsichtige Datentypen Definition eines Typnames in Definitonsmoduln ohne Bindung an einen konkreten Datentyp.realisieren ADT. Die konkrete Deklaration eines undurchsichtigen Datentyps ist auf POINTER-Typen beschränkt. DEFINITION MODULE Test; TYPE zahl; PROCEDURE Readnum(zahl); END test. IMPLEMENTATION MODULE Test; TYPE zahl =POINTER TO zahlfolge; zahlfolge=RECORD vor:CARDINAL; nach:REAL; END;............

Symbol Name ident=letter{letter|digit} Zahlen (ganzen Zahlen,Gebrochene Zahlen) Zeichenketten „“ oder‚‘ Operatoren und Schlüsselwörter :=,=,#(ungleich),~, ^,IN FOR,FROM,IF,IMPLEMENTATION,IMPORT, ELSIF,OF ,OR,WHILE,WITH,PRPZEDURE,POINTER, PROZESS,UNTIL,VAR,RECORD,SET,MODULE,MOD... Kommentare (* mmmmmmmmm*) dürfen geschachtelt sein (*ccc(aa)(*ss*)*)

Unstrukturierte Datentypen vordefinierte Datentypen : INTEGER, LONGINTEGER,CARDINAL, REAL, BOOLEAN, CHAR, BITSET. BITSET {2,4,6}, {}, {0..15} (bei 16-Bit Rechnern), {0..31} (bei 32-Bit Rechnern) CARDINAL: Alle positiven ganzen Zahlen (einschließlich Null). nicht vordefinierte Datentypen : Aufzählungstypen Material = (eisen, stahl, kupfer, glas, gummi) Unterbereichstypen, Minimal – und Maximalwert: [0 .. 9]; [„0“ .. „9“]; [0C .. 177C]; [FALSE .. TRUE]; INTEGER[1 .. 1000]; [0 .. 40000]; [-10 .. +10] Ungültig: [ „A“ .. „9“] [1.5 ..2.5]

Strukturierte Datentypen Array, Record, Pointer, SET-Typen, Prozedur-Typ TYPE Name = ARRAY[1 .. 20],[0 .. 19] OF CHAR TYPE Name =ARRAY CHAR OF [0 .. 9] Ungültig mit Index-Typ: ARRAY BITSET OF INTEGER, ARRAY CARDINAL OF INTEGER TYPE Datum = RECORD Tag :[1..31];Monat:[Jan .. Dez];Jahr :[1900..2006] TYPE ptr = POINTER TO Datum; POINTER ist an einen bestimmten Datentyp (seinen Basistyp) gebunden. SET OF [3 ..5] SET OF [eisen .. kupfer] Ungülitge: SET OF [-1 .. +1] SET OF CHAR nur Aufzählungs- und Unterbereichstypen erlaubt. TYPE winkelfunktion =PROCEDURE (REAL):REAL;

Zuweisung Designator „:=“ Expression. Beispiele: set:={1,2,3,4,5}; a[i] :=„A“; p^.t :=2;

Prozedurekonzepte PROCEDURE Vertauschen(VAR Var1, Var2: Art); VAR ZwischenVar: Art; BEGIN ZwischenVar := Var1; Var1 := Var2; Var2 := ZwischenVar END Vertauschen; PROCEDURE Maximum(Zahl1, Zahl2: INTEGER): INTEGER; TYPE F: PROCEDURE(VAR INTEGER, INTEGER): INTEGER; VAR funk: F; funk := Maximum;

Steuerstruktur Bedingte Anweisungen IF, CASE Wiederholungsanweisungen WHILE, FOR, REPEAT, LOOP Kein “GOTO”

IF THEN IF Betrag < 0 THEN AenderungKontostand := TRUE; Soll := Soll + (-Betrag) ELSIF Betrag > 0 THEN AenderungKontostand := TRUE; Haben := Haben + Betrag ELSE AenderungKontostand := FALSE END

CASE Beispiel: CASE Operator OF '+': Ergebnis := Zahl1 + Zahl2 | ELSE Fehler := TRUE END; ……………………

WHILE FOR WHILE a<b DO a:=a+1; b=b-1; END FOR TestTeiler := 2 TO Zahl-1 BY 1 DO IF Zahl MOD TestTeiler = 0 THEN Primzahl := FALSE; WriteCard(TestTeiler, 1); WriteLn

Loop LOOP WriteLn; ReadInt(Zahl); ………………. Read(Antwort); Read(Zeichen); IF NOT (Antwort = JaAntwort) AND (Zeichen = EOL) THEN EXIT END …………………….

Repeat Until REPEAT WriteString("Bitte eine ganze Zahl und Return eingeben: "); Read(Antwort); Read(Zeichen) UNTIL NOT (Antwort = JaAntwort) AND (Zeichen = EOL); WriteString("Ende!"); END; ………………………………

Prozess Niedrige Ebene, keine Prozeßsynchronisation und –kommunikation. Nur durch Implementierung höherer Konzepte realisiert. Bsp: Modulrumpf := p1. Consumer := c. MODULE test; VAR workspace[1 .. 50 ] OF CARDINAL; p1,c:PROCESS; PROCEDURE Consumer; BEGIN LOOP Write(char);TRANSFER (c,p1); END END Consumer; BEGIN NEWPROCESS(Consumer,ADR(workspace),SIZE(workspace),c); LOOP Read(char);(*LOOP ohne Exit,zeichnet “p1” Prozess.*) TRANSFER(p1,c); END test..

Prozess Unterbrechung und Prioritäten Prozess wird von außen zu unterbrochen. Auslöser meist ein Hardware-Signal, das einen Prozeduraufruf auslöst Interupt-Handler muss bereitgestellt werden. Priorität ist eine Konstante vom Datentyp CARDINAL. Module Clock[7]; Var timer,interrupted :PROCESS; workspace :ARRAY [1 .. 100] OF CARDINAL; PROCEDURE EverySecond; BEGIN LOOP IOTRANSFER(timer,interrupted,24);... END NEWPROCESS(EverySecond,ADR(workspace),SIZE(workspace),timer); TRANSFER(interrupted,timer); END Clock;

Termination HALT: unnormale Termination ,Ganz Programm wird abgebrochen. FINALLY: normale Termination, Mechanismus ,Mühl zu aufräumen . MODULE DistinguishHalt; FROM TERMINATION IMPORT HasHalted; IMPORT STextIO; VAR ch : CHAR; BEGIN STextIO.WriteString ("Halt? Y/N => "); STextIO.ReadChar (ch); STextIO.SkipLine; IF CAP (ch) = "Y" THEN HALT END; FINALLY IF NOT HasHalted () THEN STextIO.WriteString ("Not "); END; STextIO.WriteString ("Halted"); STextIO.WriteLn; STextIO.WriteString ("Press a return to continue"); STextIO.SkipLine; END DistinguishHalt.

MergeSort PROCEDURE MergeSort (VAR source: ARRAY OF CARDINAL; lBound, uBound : CARDINAL); PROCEDURE Merge (VAR source: ARRAY OF CARDINAL; left, mid, right : CARDINAL); VAR countS1, countS2, temp : CARDINAL; BEGIN countS1 := left; WHILE countS1 <= mid DO IF source [countS1] > source [mid + 1] THEN temp := source [countS1]; source [countS1] := source [mid + 1];

MergeSort countS2 := mid + 2; WHILE (countS2 <= right) AND (temp > source [countS2]) DO source [countS2 - 1] := source [countS2]; INC (countS2); END; source [countS2 - 1] := temp; INC (countS1); END Merge;

MergeSort VAR middle : CARDINAL; BEGIN IF lBound >= uBound THEN RETURN END; middle := (lBound + uBound) DIV 2; MergeSort (source, lBound, middle); MergeSort (source, middle + 1, uBound); Merge (source, lBound, middle, uBound); END MergeSort;

OOM-2 MODULE TestRectangleClass1; IMPORT SWholeIO; TRACED CLASS rectangle; REVEAL SetDims, Area, sides; CONST sides = 4; VAR length, width : INTEGER; PROCEDURE SetDims (len, wid : INTEGER); END SetDims; … PROCEDURE Area () : INTEGER; END Area;… BEGIN (* initialization *) SetDims (0,0); END rectangle; VAR theRect : rectangle; BEGIN (* main *) CREATE (theRect); SWholeIO.WriteInt (theRect.Area(), 10); theRect.SetDims (4, 3); END TestRectangleClass1.

Kompilierung und Ausführung moorea: % gpmake prog11 ## compiling item.def ... ## compiling item.mod ... ## building prog11 ... moorea: % prog11 8 Sätze eingeben: 11 33 22 55 77 44 9 0 moorea: % ** Sprache Version**: Volition Systems ,Logitech(PC-DOS,CP/M) , Modula Research Inititute

Literatur Modula-2 Quelle: Modula-2 (Springer): Rohlfing-Brosell,H(BDR) Algorithmen und Datenstrukturen mit Modula-2 :Niklaus Wirth Softwaretechnik und Modula-2 :Gustav Pomberger http://www.cs.inf.ethz.ch/~wirth/ http://www.csc.twu.ca/rsbook http://www.modula2.org/tutor/ Kompiler(windows) http://freepages.modula2.org/compi.html http://home.perm.ru/~strannik/ http://sourceforge.net/projects/mide3de2/ http://www.excelsior-usa.com/xdsx86win.htmll Linux http://www.nongnu.org/gm2/ http://floppsie.comp.glam.ac.uk/Glamorgan/gaius/ Niklaus:wirth @ inf.ethz.ch

Danke für Ihre Aufmersamkeit. END Danke für Ihre Aufmersamkeit.