3. Gültigkeit von Definitionen

Ähnliche Dokumente
c dl SPiC (Teil C, SS 11) 13 Zeiger und Felder 13.1 Zeiger Einführung 13 1 Zeigervariable := Behälter für Verweise ( Adresse) Beispiel int x = 5;

3 Module in C. 4 Gültigkeit von Namen. 5 Globale Variablen (2) Gültig im gesamten Programm

Vorlesung. Einführung in die mathematische Sprache und naive Mengenlehre

Präfixcodes und der Huffman Algorithmus

KV Software Engineering Übungsaufgaben SS 2005

Mathematik PM Rechenarten

Objektorientierte Programmierung

Thema 13 Integrale, die von einem Parameter abhängen, Integrale von Funktionen auf Teilmengen von R n

Karlsruher Institut für Technologie

E Mikrocontroller-Programmierung. E.2 Beispiel: AVR-Mikrocontroller (ATmega-Serie) 1 Mikrocontroller-Umgebung. E.1 Überblick.

Exportmodul Artikel-Nr.: 20208

Def.: Sei Σ eine Menge von Zeichen. Die Menge Σ* aller Zeichenketten (Wörter) über Σ ist die kleinste Menge, für die gilt:

Versuchsplanung. Grundlagen. Extrapolieren unzulässig! Beobachtungsbereich!

Dein Trainingsplan. sportmannschaft. ... und was sonst noch wichtig ist. Deine Zähne sind wie deine. und du bist der Trainer!

13 Rekonfigurierende binäre Suchbäume

Numerische Mathematik I

Digitaltechnik. 3 Sequenzielle. Schaltungen. Revision 1.1

Programmieren in C/C++ und Matlab

HUMAN-CENTRIC WORKFLOW SOLUTION FOR SHAREPOINT

Interaktionen zwischen Objekten durch Senden von Nachrichten und Reagieren auf empfangene Nachrichten

Automaten und Formale Sprachen alias Theoretische Informatik. Sommersemester Sprachen. Grammatiken (Einführung)

Informatik ist viel mehr als Delphi-Programmierung!

Einführung in Mathcad H.

Seminar Quantum Computation - Finite Quanten-Automaten und Quanten-Turingmaschinen

McAfee Firewall Enterprise

Einführung in die C-Programmierung

Entwurf und Realisierung analoger und digitaler Filter

In diesem Handbuch für den Schnellstart finden Sie allgemeine Anweisungen zum Einrichten der McAfee Web Gateway-Appliance.

Lösung: a) b)

solche mit Textzeichen (z.b. A, a, B, b,!) solche mit binären Zeichen (0, 1)

onlinecomponents.com

EasyMP Multi PC Projection Bedienungsanleitung

Monte Carlo Methoden. Kapitel Simple Sampling

Java Schulung (Java 2 Java Development Kit 5 / 6)

Wirtschaftsmathematik für International Management (BA) und Betriebswirtschaft (BA)

XING Events. Kurzanleitung

Installation und Einsatz von ImageShare

13. Tutorium zu Programmieren

Rekursion. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Version 3. Installation. Konfiguration. Bedienung. Referenz. SYNCING.NET Technologies GmbH Weipertstr Heilbronn

Typumwandlungen bei Referenztypen

C allgemein. C wurde unter und für Unix entwickelt. Vorläufer sind BCPL und B.

Algorithmen und Datenstrukturen

EasyMP Slide Converter Bedienungsanleitung

Hochschule Ravensburg-Weingarten Schriftliche Prüfung Programmieren Prof. Dr. M. Zeller

Unterrichts- und Prüfungsplanung M306 Modulverantwortlicher: Beat Kündig Modulpartner: R. Rubin

Teil V: Formale Sprachen

Schieberegler und analoge Anzeigen

BÜrO HYPER aufgebautes BÜrOsYsteM

16.3 Unterrichtsmaterialien

Klausur zur Einführung in die objektorientierte Programmierung mit Java

1 Polymorphie (Vielgestaltigkeit)

1KOhm + - y = x LED leuchtet wenn Schalter x gedrückt ist

11 Perfekt organisiert: icloud, Erinnerungen, Termine und Adressen

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

Proseminar Funktionales Programmieren. Stephan Kreutzer

Prozeßalgebren. Prof. Dr. Ursula Goltz

Warmluft-Thermostate. Typenreihe WTHc. Besonderheiten. Kurzbeschreibung. Schaltfunktion. Zulassungen/Prüfzeichen (siehe technische Daten)

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Elemente der Analysis II: Zusammenfassung der wichtigsten Definitionen und Ergebnisse

Vorbereitungen Download. AVO-Übung 6. Beispiel. Slice. Varianten u.a. für Linux, Windows, OS X ICE-Dokumentation ICE-Binaries (inkl.

Beispiele: (Funktionen auf Listen) (3) Bemerkungen: Die Datenstrukturen der Paare (2) Die Datenstrukturen der Paare

Version 5. Installation. Konfiguration. Bedienung. Referenz. ASBYTE GmbH Weipertstr Heilbronn Rev SNT

8 Zugriffstypen ( Zeiger )

pdftoolbox Server Handbuch

7. Objektorientierte Softwareentwicklung/3. Informatik II für Verkehrsingenieure

C/C++ Programmierung

Nutzung der Abwärme aus Erneuerbare-Energie-Anlagen

Mathematik: Vorwissen und Selbststudium

5.5.8 Öffentliche und private Eigenschaften

C# 2000 Expression Beispielcodes für Konsolen- und Formularanwendung

Moderne C-Programmierung

Objektorientierte Programmierung

VIII: Vererbung. Unterklassen einer Klasse. Vererbung von Methoden und Instanzvariablen. Überschreiben von Methoden

Vererbung. Vererbung von Methoden und Instanzvariablen. Vererbung als Realisierung einer is-a Beziehung.

Objektorientierte Programmierung

Gedanken stoppen und entschleunigen

Grundlagen der Programmierung Prof. H. Mössenböck. 14. Schrittweise Verfeinerung

Grundlagen der Programmierung Prof. H. Mössenböck. 10. Klassen

Java - Webapplikationen

Verbrauchswerte. 1. Umgang mit Verbrauchswerten

Gegenstand und Zweck

Methodische Grundlagen des Software Engineering - Übung 9

1.2 Der goldene Schnitt

Matrizen und Determinanten

Rollladen-Systeme für Altbau Neubau Sanierung/Renovierung

Ausbildung zum Passagement-Consultant

Stand: 01/08 Version 1.1

Analysis I im SS 2011 Kurzskript

Vererbung & Schnittstellen in C#

Praktikum zu Einführung in die Informatik für LogWiIngs und WiMas Wintersemester 2015/16. Vorbereitende Aufgaben

Pragmatik von Programmiersprachen

DAS JUGENDKONTO, das NICHT NUR AUF

Transportvorgänge im Vakuum, ± kein thermodynamisches Gleichgewicht d.h. Druck-, Temperatur- und/oder Konzentrationsgradienten.

Der beste Umzug, den wir je hatten. Privatumzüge Überseeumzüge Senioenumzüge Kunsttransporte Lagerung ERWIN WEDMANN

Definition Suffixbaum

Boole'sche Algebra. Inhaltsübersicht. Binäre Funktionen, Boole'sche Algebren, Schaltalgebra. Verknüpfungen der mathematischen Logik

6. Kapitel. Wohnen. spiritus rector 2001

1 Kurvendiskussion /40

Grundlagen. Die Komponenten eines C Programms. Das erste Programm

Transkript:

3. Gültigkeit von Definitionen GPS-3-1 Themen dieses Kpitels: Definition und Bindung von Bezeichnern Verdeckungsregeln für die Gültigkeit von Definitionen Gültigkeitsregeln in Progrmmiersprchen 2005 bei Prof. Dr. Uwe Kstens

Definition und Bindung GPS-3-2 Eine Definition ist ein Progrmmkonstrukt, ds die Beschreibung eines Progrmmgegenstndes n einen Bezeichner bindet. Progrmmkonstrukt: zusmmengehöriger Teil (Teilbum) eines Progrmms z. B. eine Deklrtion int i;, eine Anweisung i = 42; Ausdruck i+1 Progrmmgegenstnd: wird im Progrmm beschrieben und benutzt z. B. die Methode min, der Typ String, eine Vrible i, ein Prmeter rgs Meist legt die Definition Eigenschften des Progrmmgegenstndes fest, z. B. den Typ: public sttic void min (String[] rgs) 2010 bei Prof. Dr. Uwe Kstens

Sttische und dynmische Bindung Ein Bezeichner, der in einer Definition gebunden wird, tritt dort definierend uf; n nderen Stellen tritt er ngewndt uf. Definierendes und ngewndtes Auftreten von Bezeichnern knn mn meist syntktisch unterscheiden, z. B. GPS-3-2 sttic int ggt (int, int b) { return ggt( % b, b); Regeln der Sprche entscheiden, in welcher Definition ein ngewndtes Auftreten eines Bezeichners gebunden ist. 2010 bei Prof. Dr. Uwe Kstens Sttische Bindung: Gültigkeitsregeln entscheiden die Bindung m Progrmmtext, z. B. { flot = 1.0; { int = 2; printf ("%d",); sttische Bindung im Rest dieses Kpitels und in den meisten Sprchen, ußer Dynmische Bindung: Wird bei der Ausführung des Progrmms entschieden: Für einen ngewndten Bezeichner gilt die zuletzt für usgeführte Definition. dynmische Bindung in Lisp und einigen Skriptsprchen

Gültigkeitsbereich GPS-3-3 Der Gültigkeitsbereich (scope) einer Definition D für einen Bezeichner b ist der Progrmmbschnitt, in dem ngewndte Auftreten von b n den in D definierten Progrmmgegenstnd gebunden sind. { def ; def b; { def ; def c; use ; use ; äußeres inneres äußeres Gültigkeitsbereiche 2005 bei Prof. Dr. Uwe Kstens In qulifizierten Nmen, können Bezeichner uch ußerhlb des Gültigkeitsbereiches ihrer Definition ngewndt werden: Thred.sleep(1000); mx = super.max_things; sleep ist in der Klsse Thred definiert, MAX_THINGS in einer Oberklsse.

Verdeckung von Definitionen In Sprchen mit geschchtelten Progrmmstrukturen knn eine Definition eine ndere für den gleichen Bezeichner verdecken (hiding). Es gibt 2 unterschiedliche Grundregeln dfür: Algol-Verdeckungsregel (in Algol-60, Algol-68, Pscl, Modul-2, Ad, Jv s. u.): Eine Definition gilt im kleinsten sie umfssenden Abschnitt überll, usgenommen drin enthltene Abschnitte mit einer Definition für denselben Bezeichner. oder opertionl formuliert: Suche vom ngewndten Auftreten eines Bezeichners b usgehend nch ußen den kleinsten umfssenden Abschnitt mit einer Definition für b. GPS-3-4 C-Verdeckungsregel (in C, C++, Jv): Die Definition eines Bezeichners b gilt von der Definitionsstelle bis zum Ende des kleinsten sie umfssenden Abschnitts, usgenommen die Gültigkeitsbereiche von Definitionen für b in drin enthltenen Abschnitten. 2010 bei Prof. Dr. Uwe Kstens Die C-Regel erzwingt definierendes vor ngewndtem Auftreten. Die Algol-Regel ist einfcher, tolernter und vermeidet Sonderregeln für notwendige Vorwärtsreferenzen.

Beispiele für Gültigkeitsbereiche GPS-3-5 Algol-Regel 1 2 3 Symbole: Abschnitt Definition Anwendung p Algol-Regel C-Regel p 1 p 2 p 1 p 2 2014 bei Prof. Dr. Uwe Kstens p p p hier gilt noch ds äußere p!

Getrennte Nmensräume GPS-3-6 In mnchen Sprchen werden die Bezeichner für Progrmmgegenstände bestimmter Art jeweils einem Nmensrum zugeordnet z. B. in Jv jeweils ein Nmensrum für Pckges, Typen (Klssen und Interfces), Vrible (lokle Vrible, Prmeter, Objekt- und Klssenvrible), Methoden, Anweisungsmrken Gültigkeits- und Verdeckungsregeln werden nur innerhb eines Nmensrumes ngewndt - nicht zwischen verschiedenen Nmensräumen. Zu welchem Nmensrum ein Bezeichner gehört, knn m syntktischen Kontext erknnt werden. (In Jv mit einigen zusätzlichen Regeln) 2005 bei Prof. Dr. Uwe Kstens Eine Klssendeklrtion nur für Zwecke der Demonstrtion: clss Multi { Multi () { Multi = 5; privte int Multi; Multi Multi (Multi Multi) { if (Multi == null) return new Multi(); else return Multi (new Multi ()); Typ Vrible Methode

Gültigkeitsbereiche in Jv GPS-3-6 Pckge-Nmen: sichtbre Übersetzungseinheiten Typnmen: in der gnzen Übersetzungseinheit, Algol-60-Verdeckungsregel Methodennmen: umgebende Klsse, Algol-60-Verdeckungsregel, ber Objektmethoden der Oberklssen werden überschrieben oder überlden - nicht verdeckt Nmen von Objekt- und Klssenvriblen: umgebende Klsse, Algol-60-Verdeckungsregel, Objekt- und Klssenvrible können Vrible der Oberklssen verdecken Prmeter: Methodenrumpf, (dürfen nur durch innere Klssen verdeckt werden) 2005 bei Prof. Dr. Uwe Kstens Lokle Vrible: Rest des Blockes (bzw. bei Lufvrible in for-schleife: Rest der for-schleife), C-Verdeckungsregel (dürfen nur durch innere Klssen verdeckt werden) Terminologie in Jv: shdowing für verdecken bei Schchtelung, hiding für verdecken beim Erben

Beispiele für Gültigkeitsbereiche in Jv GPS-3.6 2005 bei Prof. Dr. Uwe Kstens clss A { void m (int p) { cnt += 1; flot f; B mm () { return new B(); int cnt = 42; clss B { A B m mm cnt p f clss Ober { int k; clss Unter extends Ober { int k; void m () { k = 5; void g (int p) { int k = 7; k = 42; for ( int i = 0; i<10; i++) { int k; // verboten

GPS-3.6b Innere Klssen in Jv: Verdeckung von loklen Vriblen clss A { chr x; chr int flot x x x void m () { int x; 2011 bei Prof. Dr. Uwe Kstens clss B { void h () { flot x; Innere Klsse B: Lokle Vrible flot x in h verdeckt lokle Vrible int x in m der äußeren Klsse

Gültigkeitsregeln in nderen Progrmmiersprchen C, C++: grundsätzlich gilt die C-Regel; für Sprungmrken gilt die Algol-Regel. Pscl, Ad, Modul-2: grundsätzlich gilt die Algol-Regel. Aber eine Zustzregel fordert: void f () { goto finish; finish: printf (); GPS-3-6b Ein ngewndtes Auftreten eines Bezeichners drf nicht vor seiner Definition stehen. Dvon gibt es dnn in den Sprchen unterschiedliche Ausnhmen, um wechselweise rekursive Definitionen von Funktionen und Typen zu ermöglichen. 2012 bei Prof. Dr. Uwe Kstens Pscl: type ListPtr = ^ List; List = record i: integer; n: ListPtr end; C: typedef struct _el *ListPtr; typedef struct _el { int i; ListPtr n; Elem; Pscl: procedure f (:rel) forwrd; procedure g (b:rel) begin f(3.5); end; procedure f (:rel) begin g(7.5); end;

Zusmmenfssung zum Kpitel 3 GPS-3-7 Mit den Vorlesungen und Übungen zu Kpitel 3 sollen Sie nun Folgendes können: Bindung von Bezeichnern verstehen Verdeckungsregeln für die Gültigkeit von Definitionen nwenden Grundbegriffe in den Gültigkeitsregeln von Progrmmiersprchen erkennen 2005 bei Prof. Dr. Uwe Kstens