Programmierkurs I. Gliederung: Deklarationsteil als BNF 2. Blöcke in Ada95 (Lebenszeit, Sichtbarkeit von Variablen)

Ähnliche Dokumente
Einführung in die Programmierung für NF. Übung

3.1 Reservierte Wörter

Syntax von Programmiersprachen

3 Syntax von Programmiersprachen

Einführung in die Programmierung für NF. Rückgabewerte, EBNF, Fallunterscheidung, Schleifen

3 Syntax von Programmiersprachen

Gedächtnis. Während der Abarbeitung eines Algorithmus müssen sich Dinge gemerkt werden bzw. auf Dingen wird gerechnet. Zugriff.

Syntax von Programmiersprachen

Programmierkurs Java

Einführung in die Informatik. Programming Languages

Syntax von Programmiersprachen

Einführung in die Informatik. Programming Languages

Einfache Rechenstrukturen und Kontrollfluss

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme

C.3 Funktionen und Prozeduren

Einfache Rechenstrukturen und Kontrollfluß

2.2 Syntax, Semantik und Simulation

Elementare Konzepte von

Syntax von Programmiersprachen

Boolean Wertemenge: Wahrheitswerte {FALSE,TRUE}, auch {0,1} Deklaration:

zu große Programme (Bildschirmseite!) zerlegen in (weitgehend) unabhängige Einheiten: Unterprogramme

Imperative Programmierung in Java: Kontrollfluß II

Das diesem Dokument zugrundeliegende Vorhaben wurde mit Mitteln des Bundesministeriums für Bildung und Forschung unter dem Förderkennzeichen

3.4 Struktur von Programmen

Funktionale Programmierung ALP I. λ Kalkül WS 2012/2013. Prof. Dr. Margarita Esponda. Prof. Dr. Margarita Esponda

Java I Vorlesung Imperatives Programmieren

C++ - Einführung in die Programmiersprache Zeiger, Referenzen und Strukturen. Leibniz Universität IT Services Anja Aue

Java 8. Elmar Fuchs Grundlagen Programmierung. 1. Ausgabe, Oktober 2014 JAV8

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.

Java für Anfänger Teil 2: Java-Syntax. Programmierkurs Manfred Jackel

Java - Schleifen. Bedingung. wiederhole. Anweisung Anweisung Anweisung. Leibniz Universität IT Services Anja Aue

Sprachen sind durch folgenden Aufbau gekennzeichnet:

Arrays. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 3. 1 Modulübersicht 3

Programmierkurs Python I

C++ - Einführung in die Programmiersprache Schleifen

Begriffe (Wiederholung)

Programmieren in Java

Kapitel 4. Kontrollstrukturen

7 Funktionen. 7.1 Definition. Prototyp-Syntax: {Speicherklasse} {Typ} Name ({formale Parameter});

Java Anweisungen und Ablaufsteuerung

Sprachkonstrukte. Einführung in Java. Folie 1 von Mai Ivo Kronenberg

3.2 Datentypen und Methoden

Objektorientierte Programmierung. Kapitel 22: Aufzählungstypen (Enumeration Types)

Praxis der Programmierung

4.4 Imperative Algorithmen Prozeduren

Algorithmen und Datenstrukturen II

Vorkurs Informatik WiSe 16/17

Java für Anfänger Teil 2: Java-Syntax. Programmierkurs Manfred Jackel

Wertebereich und Genauigkeit der Zahlendarstellung

Martin Unold INFORMATIK. Geoinformatik und Vermessung

Wenn... dann... if (condition) statement. if (kontostand < 0) System.out.println("Oops..."); false. condition. true. statement

Globale Variablen Diverses. Globale Variablen. Globale Variablen

C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren

Abschnitt 5. Grundlagen der funktionalen & imperativen Programmierung

4.4 Imperative Algorithmen Verzweigung und Iteration

Java Ablaufsteuerung (Beispiele)

Kapitel 3: Variablen

Vorkurs Informatik WiSe 17/18

Modellierung und Programmierung 1

Paritäts-Bit- Generator

Kapitel IV Formale Sprachen und Grammatiken

Programmierkurs Java

Ein Fragment von Pascal

Kapitel 4. Kontrollstrukturen

Einführung in die Programmierung EBNF. Thomas R. Gross. Department Informatik ETH Zürich

Programmierkurs Python I

S. d. I.: Programieren in C Folie 4-1. im Gegensatz zu Pascal gibt es in C kein Schlüsselwort "then"

INP (07) Prof. Dr.-Ing. S. Gössner. University of Applied Sciences Lippe & Höxter

Institut für Programmierung und Reaktive Systeme. Java 2. Markus Reschke

EINI WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure. Vorlesung 2 SWS WS 11/12

Kapitel 2. Methoden zur Beschreibung von Syntax

Imperative Programmierung in Java. Algorithmen und Datenstrukturen II 1

Mehrdeutige Grammatiken

PYTHON. 03 for-schleifen, Funktionen

C-Grundlagen. zur Programmierung des MicroControllersystems MiCoWi

Java: Eine kurze Einführung an Beispielen

Einführung in die Programmierung für NF. Übung

Objektorientierte Programmierung und Modellierung

Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen. Operatoren für elementare Datentypen Bedingte Anweisungen Schleifen

Einführung in die Programmiersprache Julia Vorlesung Computerphysik Sommersemester 2018 Ralf Bulla Universität zu Köln

Korrektheit und Hoare-Kalkül für Imperative Programme

Arbeitsblätter für die Lehrveranstaltung OOP JAVA 1

Klassen als Datenstrukturen

Die for -Schleife HEUTE. Schleifen. Arrays. Schleifen in JAVA. while, do reichen aus, um alle iterativen Algorithmen zu beschreiben

Einführung in die Programmierung für NF. Zuweisungen, main- Methode und Kommentare

Einführung in die Programmierung für NF. Zuweisungen, main- Methode und Kommentare

EINI LW/WiMa. Einführung in die Informatik für Naturwissenschaftler und Ingenieure Vorlesung 2 SWS WS 14/15

Transkript:

Programmierkurs I 11.11.2002 Gliederung: 1. Deklarationsteil als BNF 2. Blöcke in Ada95 (Lebenszeit, Sichtbarkeit von Variablen)

EBNF: Wiederholung Die EBNF (Erweiterte Backus-Naur-Form) wurde in der Vorlesung (Abschnitt 1.1.6) zur Beschreibung der Ada-Syntax eingeführt. Wir verwenden im folgenden die auf Folie 228 eingeführte Schreibweise, d.h. Nichtterminale ohne spitze Klammern Terminalzeichen in Anführungszeichen (... ) Schlüsselwörter in Apostrophen (... ) beliebig wiederholbare Teile in geschweiften Klammern (... ) optionale Teile in eckigen Klammern ([...]) Beispiel: if statement :: condition sequence of statements condition sequence of statements sequence of statements ;

EBNF: Wiederholung II Ein senkrechter Strich bedeutet Alternative: statement :: label simple statement label compound statement Manche Nichtterminale enthalten kursiv geschriebene Teile. Diese sind Hinweise; nur das restliche Nichtterminal tritt als linke Seite einer EBNF-Regel auf. Beispiel: condition :: boolean expression Der Zusatz boolean besagt, dass der Ausdruck in expression ein Wahrheitswert sein soll. Die komplette Syntax von Ada lässt sich in EBNF formulieren. Sie finden eine solche Darstellung z.b. auf!"$#&%' (s.a. Folie 234).

Deklarationsteil Der Teil eines Programms, in dem Variablen vereinbart (deklariert) werden, heißt Deklarationsteil; in den Programmen, die Sie bisher kennengelernt haben, tritt er zwischen xxx und auf. In der Ada-Syntaxbeschreibung heißt er declarative part. Im folgenden wird die Syntax auf die für Sie zunächst wichtigsten Fälle reduziert. Wer mehr wissen will, kann die komplette Syntax nachlesen siehe vorige Folie. 1 declarative part :: declarative item 2 declarative item :: object declaration type declaration subtype declaration 3 object declaration :: defining identifier list : subtype indication : expression ; defining identifier list : array type definition : expression ; 4 defining identifier list :: defining identifier defining identifier In (3) werden Variablen deklariert und mit dem Ergebnis des Ausdrucks in expression initialisiert; der Typ von expression muss mit subtype indication kompatibel sein.

Deklarationsteil II subtype indication gibt den Typ der Variablen an. Einige vordefinierte Typen sind,,, oder. Beispiele für Deklarationen nach (3): " Weitere Typen können definiert werden, etwa als Untertypen oder Aufzählungstypen. Für erstere ist eine subtype declaration zuständig: 5 subtype declaration :: defining identifier subtype indication ; 6 subtype indication :: subtype identifier range 7 range :: expression expression In (6) muss es sich bei subtype identifier um einen bereits bekannten Typen handeln. In (7) müssen die expressions den in (6) angegebenen Typ haben. Beispiel: Hier wird als Untertyp von vereinbart, der die Zahlen von 0 bis 9 enthält.

Deklarationsteil III Aufzählungstypen können in einer type declaration definiert werden: 8 type declaration :: defining identifier type definition ; 9 type definition :: enumeration type definition 10 enumeration type definition :: defining identifier defining identifier Beispiel: Durch ihr Auftreten in dieser Deklaration werden und sogleich als Werte vereinbart, die einer Variablen vom Typ zugewiesen werden können.

Felder In Regel (3) war auch die Deklaration von Feldern zugelassen. Diese werden wie folgt deklariert: 11 array type definition :: index type index type subtype indication 12 index type :: subtype indication range Eine Nebenbedingung bei (12) ist, dass nur diskrete Typen verwendet werden dürfen, etwa Untertypen von Integer oder Aufzählungstypen, nicht aber z.b. Float. Beispiele: Felder können übrigens auch als Typen vereinbart werden; Ergänzung zur Regel (9): 9 type definition :: enumeration type definition array type definition

Blöcke Anweisungen in Ada können einfach oder zusammengesetzt sein. 13 statement :: label simple statement label compound statement Unter einfachen Anweisungen verstehen wir z.b. Zuweisungen an Variablen, unter zusammengesetzten solche wie if, while etc. Eine besondere zusammengesetzte Anweisung ist ein Block, der eigene Deklarationen enthalten kann: 14 compound statement :: block statement 15 block statement :: block identifier : declarative part sequence of statements block identifier Dabei können unter declarative part alle Arten von Vereinbarungen getroffen werden, wie sie laut den Regeln (1) (12) zulässig sind. Diese Vereinbarungen (von Variablen, Typen etc.) gelten dann in dem durch und eingeschlossenen Programmteil.

Blöcke II Wird ein block statement ausgeführt, so werden alle unter aufgezählten Deklarationen elaboriert, wobei u.a. die dort vereinbarten Variablen erschaffen (und ggf. initialisiert) werden. Vereinbarungen in inneren Blöcken überdecken die in äußeren Blöcken. Ist der Block vollständig ausgeführt, so werden seine Variablen wieder zerstört. Beispiel:

Blöcke III Das Beispiel zeigt folgendes: Das Programm hat zwei verschiedene Variablen namens, eine äußere (durch die Prozedurdeklaration) und eine innere (durch die Blockdeklaration). Die Anweisung innerhalb des Blocks bezieht sich auf das innere, da seine Deklaration das äußere überdeckt. Nur die zweite -Anweisung bezieht sich auf das äußere. Man sagt auch, das innere sei innerhalb der Block-Anweisung sichtbar, das äußere in der gesamten Prozedur mit Ausnahme der Block-Anweisung. Genauer: direkt sichtbar, aber dazu irgendwann mehr. Bei jedem Durchlauf der Schleife wird das innere neu erschaffen und am Ende wieder zerstört. Die Ausgabe für das innere ist also jedes Mal. Demgegenüber lebt das äußere für die gesamte Dauer des Programms; seine Ausgabe ist,,,,.

Blöcke IV Da Deklarationen zur Laufzeit elaboriert werden, können die darin enthaltenen Ausdrücke (expressions) auf Variablen Bezug nehmen, die in äußeren Blöcken vereinbart wurden. Es ist z.b. möglich, folgende Dinge zu schreiben: Dabei realisiert die Deklaration von variablen Anzahl von Einträgen. ein Feld mit einer