Repetitorium PG1 05.09. - 09.09.2005 3: Gültigkeit, Sichtbarkeit & Operatorüberladung FH-Darmstadt, FB Informatik.

Slides:



Advertisements
Ähnliche Präsentationen
Einführung in die Programmiersprache C/C++
Advertisements

Objektorientierte Programmierung
Funktionen und Module Einführung anhand des Beispiels Wörter sortieren Timm Grams Fachhochschule Fulda Fachbereich Elektrotechnik und Informationstechnik.
der Universität Oldenburg
der Universität Oldenburg
der Universität Oldenburg
Sequentielle Liste - Array
Indirekte Adressierung
FH-Hof Indirekte Adressierung Richard Göbel. FH-Hof Einfache Speicherung von Daten Eine "einfache" Deklaration definiert direkt eine Speicherplatz für.
Java: Referenzen und Zeichenketten
FH-Hof Java Packages Richard Göbel. FH-Hof Das Modulkonzept für Java Packages dienen zur Strukturierung größerer Java- Programme Ein Package kann: eigene.
Java: Grundlagen der Objektorientierung
Klassenvariable (auch Klassendaten bzw. statische Attribute genannt) und statische Methoden.
Strukturen. In einer Struktur kann eine beliebige Anzahl von Komponenten (Daten) mit unterschiedlichen Datentypen (im Gegensatz zu Feldern) zusammengefaßt.
Objekte werden als Adressen (Referenzen) übergeben. Dies führt manchmal zu unerwarteten Ergebnissen...
Polymorphie (Vielgestaltigkeit)
Objekte und Arbeitsspeicher
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 5 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 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
PKJ 2005/1 Stefan Dissmann Zusammenfassung Vorwoche Programm besteht aus mehreren Bestandteilen: Schlüsselwörter Sonderzeichen Bezeichner Kommentare Texte.
Zusammenfassung Vorwoche
Das erste Programm (Folie 16)
DVG Klassen und Objekte
Grundkonzepte Java - Klassendefinition
Informatik 1 Übung 2.
IT2 – WS 2005/20061Oct 10, 2005 Externes Verhalten – Quelltext (source code) Durch Aufrufe der Konstruktoren und Methoden kann das externe Verhalten (=die.
Repetitorium PG : Pointer FH-Darmstadt, FB Informatik.
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 Programmiersprache C 3.Tag Institut für Mathematische Optimierung - Technische Universität Braunschweig.
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 Programmierung Wintersemester 2012/13 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 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 Fachbereich.
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
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.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
Vom Umgang mit Daten. public void myProgram() { int[] saeulenWerte = new int[world.getSizeX()]; for (int i = 0; i < saeulenWerte.length; i++) { saeulenWerte[i]
Informatik I for D-MAVT
Die Grundidee Funktionsaufruf Funktionsname (Kopf) Code der Funktion
Variablenkonzept Klassisch, in Java Basistyp
Programmbereich, zu dem eine Deklaration gehört Arten von Gültigkeitsbereichen -Namespace : Deklarationen von Klassen, Interfaces, Structs, Enums, Delegates.
Prof. Dr.-Ing. Franz-Josef Behr
Arrays / Felder Themen: Arrays / Felder / Vektoren Was soll das eigentlich? Erstellen von Arrays Arrays auslesen. Wie sie verwaltet werden.
Programmieren in C Grundlagen C 5
Repetitorium PG : Erste Schritte FH-Darmstadt, FB Informatik.
Agenda für heute, 12. Mai, 2005 ProzedurenProzeduren Funktionsprozeduren Prozedurparameter Lokale und globale Variablen Datentypen: Ordinaltypen.
Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich.
Paul, Morten, Yannick Blue J. Entwicklungsumgebung  versteht Java Programmcode  Für die Entwicklung eigener Software  Durch die Programmierung.
Repetitorium PG : Standard Template Library FH-Darmstadt, FB Informatik.
Institut für Wirtschaftsinformatik – Software Engineering, JKU Linz 1 Algorithmen und Datenstrukturen SS 2005 Mag.Th. Hilpold u. Dr. A.Stritzinger Institut.
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Einführung in die Programmierung mit Java
Funktionen. Aufgabe : Eingabe zweier Zahlen ---> Minimum bestimmen Dann nochmals Eingabe zweier Zahlen ---> Minimum bestimmen.
Variablen und Operatoren. C++ Teil 2: Grundstrukturen Variablen Operatoren Kontrollstrukturen Funktionen Header-Dateien Pointer und Referenzen.
C++ FÜR cOMPUTERSPIELENTWICKLER
Einführung in die Programmierung
Arrays in Java Ein Array ist eine Variable, die aus einer An-zahl von Elementen des gleichen Datentyps besteht, die aufeinanderfolgend im Speicher liegen.
Einführung in die Programmierung
Arrays in C Ein Array ist eine Variable, die aus einer Anzahl von Elementen des gleichen Datentyps besteht, die aufeinanderfolgend im Speicher liegen.
Implementieren von Klassen
Einführung in die Programmierung
 Präsentation transkript:

Repetitorium PG : Gültigkeit, Sichtbarkeit & Operatorüberladung FH-Darmstadt, FB Informatik

Rep. PG1 – Kap. 3: G,S & OUDipl. Inf. (FH) Michael Krauß2/25 Übersicht Gültigkeit / Sichtbarkeit Globale Variablen Operatorüberladung Aliasnamen ADT Arrays

Rep. PG1 – Kap. 3: G,S & OUDipl. Inf. (FH) Michael Krauß3/25 Gültigkeit- & Sichtbarkeitsbereich Sichtbarkeitsbereich (SB) einer Variablen: Der Bereich eines Programms, in dem auf die Variable über ihren Namen zugegriffen werden kann. Gültigkeitsbereich (GB) einer Variablen: Der Programmbereich, in dem für die Variable ein Speicherplatz reserviert ist, der ihren aktuellen Wert hält.

Rep. PG1 – Kap. 3: G,S & OUDipl. Inf. (FH) Michael Krauß4/25 Gültigkeit- & Sichtbarkeitsbereich R1: Variable, die außerhalb von Blöcken definiert sind, bezeichnet man als globale oder externe Variablen. Ihr Sichtbarkeitsbereich ist die Datei bzw. das Programm (Wenn gesamtes Programm in dieser Datei enthalten ist!). Ihr Gültigkeitsbereich ist das gesamte Programm. R2: Anweisungsblöcke können verschachtelt werden ({…{…}…}). Variablennamen sind auch gültig für innerhalb des Blocks neu angelegte Blöcke (Subblöcke).

Rep. PG1 – Kap. 3: G,S & OUDipl. Inf. (FH) Michael Krauß5/25 Gültigkeit- & Sichtbarkeitsbereich R3: Innerhalb eines Anweisungsblocks definierte Variablen werden lokale oder automatische Variable genannt. Ihr Gültigkeits-bereich beginnt nach der Deklaration und endet mit dem Block, in dem sie eingebettet sind. R4: Die Sichtbarkeit (visibility) einer Variablen (global oder lokal) ist eingeschränkt, wenn in einem Block/Subblock eine Variable gleichen Namens definiert wird. Im Sichtbarkeitsbereich der inneren Variablen ist die äußere Variable unsichtbar (d.h. sie kann nicht mehr über ihren Namen angesprochen werden) aber immer noch gültig (d.h. ihr Speicherplatz ist noch reserviert und enthält den aktuellen Wert).

Rep. PG1 – Kap. 3: G,S & OUDipl. Inf. (FH) Michael Krauß6/25 Globale Variablen (GVs) GBs genießen keinen Zugriffsschutz. Jeder kann überall im Programm auf sie zugreifen Globale Variable sollten nur für read-only (const) Variable verwendet werden.

Rep. PG1 – Kap. 3: G,S & OUDipl. Inf. (FH) Michael Krauß7/25 Beispiel int a=3, b=10; int gib_a() { return a;} int gib_c() { return c; } void main () { cout << a << endl; int a = 10;// lokales a cout << a << endl;// Ausgabe 10; lokales a cout << ::a << endl; // Ausgabe 3; globales a // |-> Gültigkeitsbereich-Auswahloperator

Rep. PG1 – Kap. 3: G,S & OUDipl. Inf. (FH) Michael Krauß8/25 Erweiterung Sichtbarkeit G.V. // Datei1.cpp (Anwendung)... int gFaktor = 2, gv;... // Datei2.cpp... int gFaktor; // Fehler: Redefinition extern int gFaktor //ok: Redeklaration...

Rep. PG1 – Kap. 3: G,S & OUDipl. Inf. (FH) Michael Krauß9/25 Übersicht Gültigkeit / Sichtbarkeit Globale Variablen Operatorüberladung Aliasnamen ADT Arrays

Rep. PG1 – Kap. 3: G,S & OUDipl. Inf. (FH) Michael Krauß10/25 Operatorenüberladung übliche Operatoren: +, -, /, *, %, (), [], >, =, =, ==, …

Rep. PG1 – Kap. 3: G,S & OUDipl. Inf. (FH) Michael Krauß11/25 Operatorenüberladung Es können keine neuen Operatoren erfunden werden Linker Operand ist immer ein Objekt der Klasse Die Operanden-Anzahl kann nicht geändert werden; ? unär bleibt unär, binär bleibt binär Der Vorrang eines Operators bleibt erhalten Die Operatoren., ::,.*, ?: und sizeof() sind nicht überladbar Soll der linke Operand kein Objekt einer Klasse sein, dann muss eine Globale Operatorfunktion definiert werden. aber: der rechte Operand muss dann ein Klassenobjekt sein. Grund: für Standardtypen können die Operatoren nicht umdefiniert werden.

Rep. PG1 – Kap. 3: G,S & OUDipl. Inf. (FH) Michael Krauß12/25 Aliasnamen (Syntax zur Def.) #define clock_t long //Preproz. ersetzt clock_t durch long im S-code wird häufig in Bibliotheken verwendet. //oder besser typedef long clock_t; // |Typ| Aliasname für Typ #include void wait(double seconds) {

Rep. PG1 – Kap. 3: G,S & OUDipl. Inf. (FH) Michael Krauß13/25 Der Kommaoperator, meist in for-Anweisung verwendet –Bsp.: for (int i = 0, j= 1; i<10; i++, j--){…} erlaubt dort mehrere Ausdrücke, wo syntaktisch nur ein Ausdruck stehen darf hat den niedrigsten Vorrang wertet von links nach rechts aus Gesamtausdruck hat den Wert des ganz rechts stehenden Ausdrucks

Rep. PG1 – Kap. 3: G,S & OUDipl. Inf. (FH) Michael Krauß14/25 Übersicht Gültigkeit / Sichtbarkeit Globale Variablen Operatorüberladung Aliasnamen ADT Arrays

Rep. PG1 – Kap. 3: G,S & OUDipl. Inf. (FH) Michael Krauß15/25 Abstract Data Types - ADT Eine Datenstruktur ist nur durch ihre Wertemenge definiert Ein ADT –ist definiert durch seine Wertemenge und die Operationen, die auf dieser Wertemenge ausführbar sind. –verwaltet interne Datenstruktur mittels schreibender und lesender Zugriffsoperationen (Akzessormethoden) –stellt dem Benutzer lediglich vorgegebene Operationen und lesende Akzessormethoden, beschrieben z.B. durch die Schnittstelle, zur Verfügung.

Rep. PG1 – Kap. 3: G,S & OUDipl. Inf. (FH) Michael Krauß16/25 Abstract Data Types - ADT Ein ADT –verbirgt die Implementierung der Operationen und die interne Datenstruktur vor dem Benutzer (Geheimnisprinzip). –Diese sind, je nach Standpunkt, nicht wichtig, nicht sichtbar oder nicht beeinflussbar. –können die Anwendbarkeit der Operationen an Vorbedingungen knüpfen. –können in objektorientierten Programmen durch Klassen realisiert werden.

Rep. PG1 – Kap. 3: G,S & OUDipl. Inf. (FH) Michael Krauß17/25 Vorteil des ADTs Bei Änderung der internen Datenstruktur müssen nur die Zugriffsfunktionen angepasst werden.

Rep. PG1 – Kap. 3: G,S & OUDipl. Inf. (FH) Michael Krauß18/25 Arrays Zusammenfassung von Objekten desselben Typs Größe wird zur Compile-Zeit festgelegt und ist zur Laufzeit nicht veränderbar. Definition von C-Arrays: – [ ]; Beispiel int intArray[5]; oder besser const int MAX_I = 5; int intArray[MAX_I];

Rep. PG1 – Kap. 3: G,S & OUDipl. Inf. (FH) Michael Krauß19/25 Dekl. v. C-Arrays in Klassen const int MAX_M=5; //globale Konstante ;-( class ExamResult { int markRoster[5]; //oder besser int markRoster[MAX_M]; … };

Rep. PG1 – Kap. 3: G,S & OUDipl. Inf. (FH) Michael Krauß20/25 bessere Variante… class ExamResult{ public: enum { MAX_M=5 }; private: int markRoster[MAX_M]; }; Aufzählungstyp definiert symbolische Konstante 'MAX_M' mit Gültigkeitsbereich 'ExamResult (Andere Möglichkeit gibt es nicht!) Zugriff auf Konstante 'MAX_M' im Namensbereich 'ExamResult' von aussen void main(){ ExamResult math; if (ExamResult::MAX_M …) }

Rep. PG1 – Kap. 3: G,S & OUDipl. Inf. (FH) Michael Krauß21/25 Array-Schutzfunktionen Schutzfunktionen müssen die Zugriffsfunktionen übernehmen. Dazu wird die benannte Konstante 'MAX_M' benötigt: if ( i>=0 && i<MAX_M ) intArray[i] = 6;

Rep. PG1 – Kap. 3: G,S & OUDipl. Inf. (FH) Michael Krauß22/25 Arrays Kopieren/Größe Zuweisung elementweises Kopieren for( int i=0 ; i<MAX_I ; i++ ) intArray1[i] = intArray2[i]; Bestimmung der Array-Größe in Bytes double priceRoster[MAX_I]; //Ausgabe cout << (sizeArray = sizeof(priceRoster)); //40 cout << (sizeDouble = sizeof(double)); //8

Rep. PG1 – Kap. 3: G,S & OUDipl. Inf. (FH) Michael Krauß23/25 Array als Funktionsparameter void main(){ const int MAX_N = 1000; int randomNumber[Anzahl]; for (int i=0; i< MAX_N; i++) randomNumber[i] = rand(); cout << mean(randomNumber, MAX_N) << endl; } double mean( int array[], int MAX_N){ double sum(0); for( int n=0; i<MAX_N ; n++) sum += array[n]; return sum/MAX_N; }

Rep. PG1 – Kap. 3: G,S & OUDipl. Inf. (FH) Michael Krauß24/25 Array als Funktionsparameter Merke: –Für Arrays gibt es kein "call by value". –Arrays können nicht Ergebnistyp einer Funktion/Methode sein (in Java schon!) Problem: –Wie schützt man Array-Elemente vor unbeabsichtigter Modifikation durch eine Funktion?

Rep. PG1 – Kap. 3: G,S & OUDipl. Inf. (FH) Michael Krauß25/25 Funktionen: Zufall und Zeit srand() –initialisiert Zufallszahlengenerator; sonst erzeugt rand() –nach jedem Programmstart die gleiche Zufallsfolge time(0) –liefert Sekunden seit