Die Programmiersprache CHILL

Slides:



Advertisements
Ähnliche Präsentationen
Imperative Programmierung
Advertisements

Klassen - Verkettete Liste -
Forschungszentrum caesar
Einführung in die Programmierung Zusammenfassung
Zusammenfassung der Vorwoche
PKJ 2005/1 Stefan Dissmann Vorwoche - Klasse public class Studierende { private String name, vorname, studiengang; private int matNr, semester; private.
10. Grundlagen imperativer Programmiersprachen
(kleine!) Java Einführung Mittwoch, Heute Ziel: erstes Java-Programm erstellen Von der Aufgabenstellung bis zur Lösung Grundlagen Einfache.
der Universität Oldenburg
der Universität Oldenburg
der Universität Oldenburg
Java: Objektorientierte Programmierung
Java: Dynamische Datentypen
FH-Hof Verwaltung von Zeichenketten Richard Göbel.
Java: Grundlagen der Objektorientierung

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 Kapitel 7 Claudio Moraga, 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 Kapitel 10 Claudio Moraga; Gisbert Dittrich FBI Unido
PKJ 2005/1 Stefan Dissmann Rückblick auf 2005 Was zuletzt in 2005 vorgestellt wurde: Klassen mit Attributen, Methoden und Konstruktoren Referenzen auf.
Zusammenfassung Vorwoche
Listen Prof. Dr. Christian Böhm in Zusammenarbeit mit Gefei Zhang
Die Skriptsprache Perl (2) Wolfgang Friebel DESY Zeuthen.
DVG Klassen und Objekte
Weiteres Programm Studium des Breitendurchlaufs Hierzu
Wir müssen also überlegen: Implementierung der Knoten, Implementierung der Kanten, daraus: Implementierung des Graphen insgesamt. Annahme: die Knoteninhalte.
Einführung in die Programmierung Datensammlung
Einfach verkettete Listen
Grundkonzepte Java - Klassendefinition
Informatik 1 Übung 2.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmiersprache C 3.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.
Javakurs FSS 2012 Lehrstuhl Stuckenschmidt
BIT – Schaßan – WS 02/03 Basisinformationstechnologie HK-Medien Teil 1, 11.Sitzung WS 02/03.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fakultät.
Einführung in die Programmierung Wintersemester 2011/12 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund.
Einführung in die Programmiersprache C 4
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
Programiersprache Mustafa SÖYLEMEZ e
Variablenkonzept Klassisch, in Java Basistyp
Purga - Scriptengine Ein Einblick.
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Thomas Hilpold: Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger.
Grundlagen Wissenschaftlichen Arbeitens Hilal Tekoglu
EPROG Tutorium #3 Philipp Effenberger
Einführung in PHP.
Einführung in PHP 5.
MODULA-2.
Starten der Entwicklungsumgebung (IDE)
Learning By Doing Ausnahmebehandlung Exceptions (Ausnahmebehandlung) Typische Fehlverhalten zur Laufzeit: s. Buch S. 287ff -Verwendung von null-Objekten.
PHP: Operatoren und Kontrollstrukturen
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
CuP - Java Achte Vorlesung Entspricht ungefähr Kapitel 4.1 des Skriptums Montag, 28. Oktober 2002.
Java Syntaxdiagramme Buchstabe A B Z a z ... Ziffer
Alois Schütte Advanced System Programming 2 Interprozeßkommunikation  2.1 JVM Ablaufumgebung  2.2 Java Native Interface (JNI)  Verwendung von.
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
Mag. Thomas Hilpold, Universität Linz, Institut für Wirtschaftsinformatik – Software Engineering 1 Algorithmen und Datenstrukturen 1 SS 2002 Mag.Thomas.
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Java-Kurs Übung Besprechung der Hausaufgabe
Extended Pascal ( Erweitreung von Pascal) Name: Mehmet CELIK Matr :
The Programming Language Pascal
Programmiersprache PASCAL
Datentypen: integer, char, string, boolean
Arrays in Java Ein Array ist eine Variable, die aus einer An-zahl von Elementen des gleichen Datentyps besteht, die aufeinanderfolgend im Speicher liegen.
GRUNDLAGEN WISSENSCHAFTLICHEN ARBEITENS MODULA-2 SONAY SUBAYAZ
Implementieren von Klassen
 Präsentation transkript:

Die Programmiersprache CHILL

Gliederung Entstehung und Anwendungsgebiete Elementare Programmstrukturen Typkonzepte Globale Programmstrukturen Prozedurkonzepte Ausnahmebehandlung Nebenläufigkeit Beispiel Mergesort Literaturverzeichnis

Entstehung CHILL – CCITT High Level Language CCITT Standardisierungskomitee von ITU(Internationaler Fernmeldeunion)

Anwendungsgebiete hauptsächlich in der Kommunikationstechnik angewandt (z.B. rechnergesteuerte Vermittlungssysteme) 1987 viele der größten Softwaresysteme im Bereich der Telekommunikation mit CHILL implementiert keine kommerzielle Verbreitung (geringer Bekanntheitsgrad)

Elementare Programmstrukturen algol-60-ähnliche Sprache blockorientiert, streng typisiert große Sprache (bietet Konstrukte zur Erstellung großer Softwaresysteme) Programme in Module und Blöcke gegliedert

Beispiel Beispiel_1: MODULE DCL x,y INT, z ARRAY (1:10) INT; x:= 0; DO FOR i:= 1 TO 10; x:= x + i; inner: BEGIN DCL k INT := x + 2 * i; z(i) := k + x; END inner; OD; y:= x; END Beispiel_1;

Elementare Programmstrukturen Sprung/Exitanweisung GOTO marke; Exit marke; Bedingte Anweisungen IF condition THEN action1;...;FI; CASE ... OF (condition1) : action1; (condition2) : action2; ELSE : action3; ESAC;

Beispiele DCL DCL i,j INT:= -5; i,j INT := -5; CASE i,j OF (ELSE), (9): j:= 1; (26), (*): j:= 2;i+:=12; (*), (ELSE): ESAC; DCL i,j INT := -5; CASE i+12 OF (1:25): j:= 0;i := 12; (26): j:= 1; ELSE j:=2; i+:=1; ESAC;

Elementare Programmstrukturen DCL i,j INT, a ARRAY (1:10) INT; i := 1; i,j := 2 * i + 1; i +:= 1; entspricht i:=i + 1 i *:= j + i; entspricht i:=i * (j + i) a := [1,2,3,4,5,6,7,8,9,0];

Elementare Programmstrukturen DO-Anweisung mit leerem Kontrollteil simple_do: DO i := i + 1; OD simple_do; DO-Anweisung mit FOR-Kontrolle WHILE-Kontrolle WITH-Kontrolle

Elementare Programmstrukturen DO FOR i:= 100 BY 5 DOWN TO 25; ........ OD; DO FOR EVER; ........ Kann nur durch Sprung oder Ausnahme- OD; Erzeugung verlassen werden DCL a ARRAY (1:100) INT; DO FOR x IN a; x:= 1;

Elementare Programmstrukturen DCL rec STRUCT (x, y INT); DO WITH rec; x :=1; y :=1; OD;

Typkonzepte INT, CHAR, BOOL vordefiniert Möglichkeit mit Konstruktor neue Modes (Datentypen) zu bilden

Arten von Modes diskrete Modes Powerset-Modes zusammengesetzte Modes Referenzmodes Prozedurmodes Synchronisations- und Instanzmodes Ein-/Ausgabe-Modes

Modedefinition 2 Arten : SYNMODE NEWMODE SYNMODE: - Die Namen der mit SYNMODE definierten MODES sind synonyme Benennungen des gleichen MODES. =>sind einander zuweisbar NEWMODE:- NEWMODE definiert unterschiedliche MODES deren Werte nicht einander zuweisbar sind.

Beispiel Typ_Beispiel: MODULE NEWMODE X = CHAR, Y = CHAR (10), Z = ARRAY (1:10) BOOL; U = STRUCT (s1 INT, s2 CHAR); DCL x X, y Y, z Z, u U; x :='c'; y := 'skugkhegbp'; y(2) := 'a'; z(5:7) := [FALSE, TRUE, TRUE]; u.s1 := 4; END Typ_Beispiel;

Beispiel NEWMODE Dollar, Euro = INT; DCL a Dollar, b Euro; a := b; // nicht möglich SYNMODE Dollar, Euro = INT; DCL a Dollar, b Euro; a := b; // erlaubt

Programmstruktur Block Modulion Lebensdauer von einem im Block definierten Element entspricht der Ausführzeit von diesem im Block definierten Objekte sind außerhalb nicht sichtbar wenn Objektnamen von außerhalb nicht überschrieben sind sie im Block sichtbar Modulion ineinander schachtelbare Einheiten haben keinen Einfluss auf die Lebensdauer der in ihnen definierten Objekte dienen zur Kontrolle von Sichtbarkeit von Objekten globales Objekt nur sichtbar durch Anweisung lokale Objekte nur nach außen durch Anweisung sichtbar

Lebensdauer von Objekten Ein CHILL-Programm besteht aus mindestens einem Prozess, dem IOP (imaginary outermost process). Der IOP lebt so lange, bis das entsprechende CHILL-Programm abgearbeitet ist und alle benutzerdefinierten Prozesse beendet sind. Die Lebensdauer der anderen Prozesse ist durch Ausführung der letzten oder der STOP-Anweisung begrenzt . Jeder Prozess umfasst Anzahl von eine Blöcken. Betritt die Kontrolle eine Blockstruktur, so werden die darin deklarierten Speicherplätze von außen nach innen angelegt und ebenso wieder vernichtet.

Lebensdauer von Objekten Variablen mit STATIC-Attribut besitzen die Lebensdauer des IOP. Ihre Sichtbarkeit ergibt sich aus der Definitionsstelle. Mittels INIT ist eine Lebenszeit-Initialisierung eines Speicherplatzes möglich. Er wird zu Beginn seiner Existenz mit einem konstanten Wert belegt.

Beispiel Zaehler: PROC (); DCL zaehler INT STATIC INIT := 0; IF zaehler = 10 THEN zaehler := 0; fertig := TRUE; FI; END Zaehler; Zaehler: PROC(); DCL zaehler INT STATIC := 0; zaehler +:= 1; IF zaehler = 10 THEN zaehler:= 0; fertig:= TRUE; FI; END Zaehler;

Import Export bei Modulions Die Grenzen von Modulions können wie im folgendem Beispiel durch GRANT (Export) und SIZE (Import) überwunden werden. Trade: BEGIN DCL embargo INT; export: MODULE GRANT T_hide FORBID (s1); NEWMODE T_hide = STRUCT (s1, s2 : INT); DCL l_inside T_hide; l_inside := [1,2]; ......... END export; import: MODULE SEIZE export ALL; END import; END Trade;

Ausnahmebehandlung CHILL bietet die Möglichkeit, den Eintritt einer unerwarteten Situation durch Auslösen einer benannten Ausnahme (Exception) zu signalisieren. Das Ausnahmekonzept von CHILL sieht keine Rückkehr an die Stelle des Auftretens der Ausnahme vor. Schlüsselwörter: p_name : PROC (...) EXCEPTIONS (ex1,..,exn); IF..THEN CAUSE ex1 ;FI; ON (ex1,....,ex6): Aktion1; (ex7,....,exn): Aktion2; END ;

Sprachdefinierte Ausnahmen Verschiedene Aktionen können auch implizit Ausnahmen signalisieren. Die durch CHILL definierten Ausnahmen werden durch die Verletzung einer dynamischen Bedingung erzeugt. Vordefinierte Ausnahmen sind z.B.: OVERFLOW RANGEFAIL RECURSEFAIL

Ausnahmebehandlung Beispiel Sqrt: PROC (i INT) RETURNS (INT) EXCEPTIONS (bad_argument); IF i<0 THEN CAUSE bad_argument; FI; ........ END sqrt; DCL y INT := -5; y := sqrt(y) ON( bad_argument) : y:=0; END;

Prozedurkonzepte IN CHILL wird im Allgemeinen zwischen Funktionsprozeduren (mit Rückgabewert) und Prozeduren (ohne Rückgabewert) unterschieden.

Resultat von Funktionsprozeduren Die Resultatspezifikation wird im Prozedurkopf mittels RETURNS (MODE) vereinbart. Der Wert der Funktionprozedur ergibt sich aus dem Ausdruck in der RETURN- Anweisung.Will man ein Ergebnis zwischenspeichern so kann dies mit RESULT geschehen.

Parameterübergabe Werteübergabe IN-Parameter INOUT-Parameter Speicherplatzübergabe

Beispiel DCL a, b, c, d INT; test: PROC (p1 INT IN, p2 INT OUT, p3 INT INOUT, p4 INT LOC); p1 := p1 + 2; p2 := 5; p3 := p2 + 4; p4 := p4 + p4; END test; a := 6; b := 77; c := 8; d := 4; CALL test (a, b, c, d); Speicherplatzbelegung nach Prozeduraufruf : a = 6, b = 5, c = 9, d = 8

Prozedurattribute Rekursivität Generalität SIMPLE RECURSIVE GENERAL rekursiv aufrufbar nicht Prozedurmode tauglich GENERAL Prozedurmode tauglich INLINE nicht rekursiv aufrufbar nicht Prozedurmode tauglich

Prozeduren als Werte CHILL bietet die Möglichkeit einen Prozedurmode zu definieren auf dessen Werten folgende Operationen zur Verfügung stehen: Test auf Gleichheit Zuweisung an Speicherplatz mit Prozedurmode Aufruf der durch den Prozedurwert bezeichneten Prozedur Die Definition eines Prozedurmodes unterscheidet sich vom Kopf einer Prozedurdefinition nur in zwei Punkten: Die Parameterliste besteht nur aus Parameterspezifikationen Die Bennenung des Prozeduratributs entfällt (immer GENERAL)

Prozeduren als Werte SYNMODE T_procedure = PROC (INT IN, INT IN) RETURNS (BOOL); DCL l_procedure T_procedure, flag BOOL; less: PROC (x INT IN, y INT IN) RETURNS (BOOL) GENERAL; RETURN x<y; END less; greater: PROC (a, b INT) RETURNS (BOOL) GENERAL; RETURN a> b; END greater; l_procedure := less; flag := l_procedure(13, 14); flag := less(13, 14);

Nebenläufigkeit und Prozesse Formale Parameter eines Prozesses haben nur LOC oder IN Attribut keine Prozesshierachien in CHILL Prozessdefinitionen in keiner Region oder Block außer IOP

Prozessinteraktion Ereignisse - sind Synchronisationsmittel für Prozesse Regionen - dienen zur exklusiven Datenverwaltung Signale - Möglichkeit zur direkten und indirekten Kommunikation von Prozessen Puffer - indirekte Kommunikation mittels Mailboxprinzip

Prozesszustände aktiv, unterbrochen, suspendiert, terminiert Synchronisations- und Kommunikationsaktionen führen zu unterbrochenem Zustand suspendierte Prozess wartet darauf, besetzte Region betreten zu können Prozess terminiert falls STOP-Anweisung ausgeführt oder Ausnahme erzeugt Prozess kann nicht von anderem gestoppt werden

Prozessausführung Scheduling nicht festgelegt durch Sprachdefinition CHILL-Prozesse haben keine Prioritäten(Puffersignale und Eventvar. Besitzen diese) Unterbrochenen Prozessen kann Priorität zugeordnet werden

Beispiel SIGNAL s = (CHAR) TO p; p:PROCESS (); .... END p; p_instance := START p(); SEND s(`x`) TO p_instance;

Listendefinition NEWMODE LIST = REF NODE, NODE = STRUCT (head INT, tail LIST);

mergesort: PROC ( list LIST) SIMPLE RECURSIVE RETURNS (LIST); IF list = NULL THEN RETURN NULL; ELSIF list->.tail = NULL THEN RESULT list; ELSE BEGIN DCL list1,list2 LIST := NULL, remainder LIST:= list; DO WHILE remainder /= NULL; new LIST := ALLOCATE (NODE); next LIST := remainder ->.tail; new ->.head := remainder ->.head; new ->.tail := list 1; list1 := list2; list2 := new; TERMINATE (remainder); remainder := next; OD ; RETURN merge(mergesort(list1),mergesort(list2)) END mergesort;

merge: PROC (list1 LIST,list2 LIST) SIMPLE REKURSIVE RETURNS LIST; IF list1 = NULL THEN RETURN list2; ELSIF list2 = NULL THEN RETURN list1; ELSE IF list1->.head < list2->.head THEN BEGIN DCL result LIST := ALLOCATE(NODE); result ->.head := list1 ->.head; result ->.tail := merge(list1 ->.tail, list2); TERMINATE (list1); RETURN result; END analog zu erstem Fall FI END Merge;

Literaturverzeichnis Eine Einführung in die Programmiersprache CHILL Lenzer/Th.Letschert/Lingen/Hollis Hüthig Verlag