Informatik 1 Übung 7.

Slides:



Advertisements
Ähnliche Präsentationen
Agenda Sitzung 2 für den Programmaufbau
Advertisements

Zusammenfassung des Kapitels 8
Prof. Dr.-Ing. habil. B. Steinbach - Informatik / Softwaretechnologie und Programmierungstechnik - Institut für Informatik Verteilte Software - Java -
Funktionen.
WHILE - Anweisung.
FOR Anweisung.
FOR Anweisung. Aufgabe : Ausgabe aller ganzen Zahlen von 0 bis 100 auf dem Bildschirm.
DO...WHILE Anweisung.
DO...WHILE Anweisung.
EINI-I Einführung in die Informatik für Naturwissenschaftler und Ingenieure I Kapitel 3 Claudio Moraga, Gisbert Dittrich FBI Unido
Diskrete Mathe II Übung
Der C-Präprozessor EDV1 - 04Präprozessor.
Gaußscher Algorithmus
Thema: Fibonacci-Zahlen
Bestimmung des ggT zweier Zahlen
Inhalt danach. inhalt danach inhalt danach inhalt danach inhalt danach inhalt danach.
Seite 1 Interface - Konzept Ein Interface führt einen neuen Datentyp ein: interface Frau {... } Das Interface enthält Deklarationen ( keine Definitionen.
Informatik I for D-MAVT
© Alexander Schwing, 2010Institute of Visual Computing Informatik I for D-MAVT Exercise Session 2.
Applets Java für’s Web.
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.
A RBEITEN MIT T HREADS. P ROZESSE UND T HREADS Prozess Eine einzelne CPU kann immer nur einen einzelnen Prozess bearbeiten. Rechenzeit wird an Prozesse.
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 Programmierung
Einführung in die Programmierung
Die Zählschleife int s = 0 for (int k=1; k
Parallel Programming Parallel Matrix Multiplication
Informatik 1 Übung 4.
Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik Dr. Wieland Schwinger
University of Applied Sciences Übung Objektorientierte Programmierung II Dipl.-Inf. (FH) Markus Vogler.
Ganze Zahlen Die Typen int, unsigned int; Auswertung arithmetischer Aus-drücke, arithmetische Operatoren.
Informatik I for D-MAVT
DAS C ++ PROGRAMM Emine Birol. Erste Version: C with classes In 1985, in 1990 und in 1994 hatte C++ Versionen, die weiterzuentwickeln. Der Standart ist.
Arrays / Felder Themen: Arrays / Felder / Vektoren Was soll das eigentlich? Erstellen von Arrays Arrays auslesen. Wie sie verwaltet werden.
Vorlesung 3. if else Anweisung if (Ausdruck) Anweisung1 else Anweisung2 Ausdruck hat einen von 0 verschiedenen Wert, so wird Anweisung 1 ausgeführt. Bei.
Vorlesung 5. #include double fv(double x) { return sin(x); } int main(){ int i,N=10; double a=1,b=2,del,x,sum,f,integral; for(i=1,sum=0.0,del = (b-a)/N;i
OOP Übung 6 Gruppe 4 | Anja Voeske Peter Isaak Christian Mader
Venelina Jordanova Uwe Habermann LL-DIET Weniger essen - mehr Informationen.
Programmiervorkurs WS 2014/15 Methoden
Programmiervorkurs WS 2014/15 Schleifen
Java-Kurs - 8. Übung Besprechung der Hausaufgabe.
Selection-Sort Insertion-Sort Bubble-Sort.
Übung Informatik I exercise01. 2 Inhaltsübersicht Nachbesprechung Übung 1 Individuelle Fragen/Bemerkungen.
Java-Kurs - 3. Übung Hausaufgabe Arrays For-Schleifen.
Softwaretechnologie für Fortgeschrittene Teil Thaller Stunde III: Bildverarbeitung III Köln 8. Januar 2015.
CONTOH-CONTOH SOAL BESERTA PROGRAMNYA. Buat Pyramid Angka 2 baris, seperti gambar di bawah: #include int main() { clrscr(); int x, y, z, bil=5; for( x.
© 2004 Pohlig Informatik Kurse © 2004 Pohlig Informatik Kurse Der Tramp tanzt die Rekursion zünderUntersuchen(…) Basisfall Rückmeldung:
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Sammlungsklassen Array.
Parallel Programming Linearizability
Inhalt Was ist elSitos? Sicht des Schülers Sicht des Lehrers Mögliche Kommunikationsformen Wahl des Contents.
Java-Kurs - 4. Übung Hausaufgabe Weitere Kontrollstrukturen
Lenz, M; Buhse, S; Kasper, J; Kupfer, R; Richter, T; Mühlhauser, I Decision Aids for Patients Dtsch Arztebl Int 2012; 109(22-23): 401-8; DOI: /arztebl
Berking, C; Hauschild, A; Kölbl, O; Mast, G; Gutzmer, R Basal Cell Carcinoma—Treatments for the Commonest Skin Cancer Dtsch Arztebl Int 2014; 111(22):
Java-Kurs - 4. Übung weitere Kontrollstrukturen
Wiederholungen mit Zähler
Arguments to main() int main(int argc, char *argv[]) { int i;
Einführung in die Programmierung
Mit der Turtle Java Programmieren
Syntax: while ( BEDINGUNG ) { // Anweisungen die so lange immer wieder ausgeführt // werden, wie die Bedingung zutrifft } for (INITIALISIERUNG; BEDINGUNG;
Cäsar-Verschlüsselung
Grundkurs Informatik mit Java
Übungen: Mustererzeugen Januar 19 Grundkurs Informatik.
Cäsar-Verschlüsselung
ТАРИХ, ФИЛОЛОГИЯ ЖӘНЕ ХАЛЫҚАРАЛЫҚ ҚАТЫНАСТАР ФАКУЛЬТЕТІ
Arrays of Objects, a 3 part process
Heapsort-Algorithmus
 Präsentation transkript:

Informatik 1 Übung 7

Übung 6 Nachbesprechung

Scope

Variablen Lebensdauer/Sichtbarkeit (Scope) bis zur schliessenden Klammer int g; int main() { int x = 0; for(int i = 0; i<10; i++) int y = i*2; x += y; }

Variablen Lebensdauer/Sichtbarkeit (Scope) bis zur schliessenden Klammer int g; int main() { int x = 0; for(int i = 0; i<10; i++) int y = i*2; x += y; } g g, x g, x, i g, x, i, y

Variablen Gleicher Variablenname, anderer Scope nur bei Zählvariablen verwenden int main() { int i = 0; }

Variablen Gleicher Variablenname, geschachtelter Scope nie verwenden int main() { int i = 0; }

Referenzen

lvalue vs. rvalue lvalue rvalue Alles was links von einer Zuweisung stehen kann Alles was eine Adresse im Speicher hat Variablen rvalue Ausdrücke int i; i = 100; i+1 = 100; int a[10]; a[1] = 100; 1*a[1] = 100;

Referenzen Referenzen sind wie Synonyme int i; int& r = i; // r und i sind jetzt "die selbe Variable" i = 100; r = 100;

Referenzen Vergleich mit Zeigern Referenzen Zeiger Ziel änderbar Nein Ja Wert vom Ziel änderbar Variablen typ& name = ziel; typ* name; Beispiel int x,y; int& z = x; z = 2; // z = y; nicht erlaubt int* z = &x; *z = 2; z = &y;

Funktionen

Funktionen Parameter sind neue Variablen nur innerhalb der Funktion sichtbar Vor dem Aufruf werden die Werte kopiert

Funktionen int summe(int a, int b) { return a + b; } int main() int i = summe(1,2);

Funktionen int summe(int a, int b) { return a + b; } int main() int i = summe(1,2); int main() { // summe – anfang int param_a; int param_b; param_a = 1; param_b = 2; int result = param_a + param_b; // summe – ende int i = result; }

Funktionen Referenzen für Call by Reference void increase(int& a) { a = a + 1; } int main() { int x = 1; increase(x); int increase(int a) { return a + 1; } int main() { int x = 1; x = increase(x);

Funktionen Referenzen für Call by Reference float intersect(ray strahl, Vector3f& normale) { normale = Vector3f(0,0,0); return 0; } int main() { Vector3f normale; float distance; ray strahl; distance = intersect(strahl, normale);

Funktionen Array ausgeben Zeiger = Array Referenz, um den Zeiger zu ändern void createArray(int*& result, int size) { result = new int[size]; } int main() int* array; createArray(array, 10);

Speicher

Speicher Stack Heap lokale Variablen klein automatische Reservierung und Freigabe Heap mit new erstellte Objekte gross Reservierung und Freigabe mit new bzw delete

Stack Name Addresse Inhalt 0000 0001 0002 0003 0004 0005 0006 01: int main() 02: { 03: int x = 0; 04: for(int i = 0; i<10; i++) 05: { 06: int y = i*2; 07: x += y; 08: } 09: }

Stack Name Addresse Inhalt x 0000 0001 0002 0003 0004 0005 0006 0001 0002 0003 0004 0005 0006 01: int main() 02: { 03: int x = 0; 04: for(int i = 0; i<10; i++) 05: { 06: int y = i*2; 07: x += y; 08: } 09: }

Stack Name Addresse Inhalt x 0000 i 0001 0002 0003 0004 0005 0006 i 0001 0002 0003 0004 0005 0006 01: int main() 02: { 03: int x = 0; 04: for(int i = 0; i<10; i++) 05: { 06: int y = i*2; 07: x += y; 08: } 09: }

Stack Name Addresse Inhalt x 0000 i 0001 y 0002 0003 0004 0005 0006 i 0001 y 0002 0003 0004 0005 0006 01: int main() 02: { 03: int x = 0; 04: for(int i = 0; i<10; i++) 05: { 06: int y = i*2; 07: x += y; 08: } 09: }

Stack Name Addresse Inhalt x 0000 0001 0002 0003 0004 0005 0006 0001 0002 0003 0004 0005 0006 01: int main() 02: { 03: int x = 0; 04: for(int i = 0; i<10; i++) 05: { 06: int y = i*2; 07: x += y; 08: } 09: }

Stack und Funktionen

Stack und Funktionen Name Addresse Inhalt i 0000 ??? 0001 0002 0003 0004 0005 0006 01: int summe(int a, int b) 02: { 03: int s = a + b; 03: return s; 04: } 05: 06: int main() 07: { 08: int i = summe(1,2); 09: }

Stack und Funktionen Name Addresse Inhalt i 0000 ??? return address 0001 08 result 0002 a 0003 1 b 0004 2 0005 0006 01: int summe(int a, int b) 02: { 03: int s = a + b; 03: return s; 04: } 05: 06: int main() 07: { 08: int i = summe(1,2); 09: }

Stack und Funktionen Name Addresse Inhalt i 0000 ??? return address 0001 08 result 0002 a 0003 1 b 0004 2 0005 0006 01: int summe(int a, int b) 02: { 03: int s = a + b; 03: return s; 04: } 05: 06: int main() 07: { 08: int i = summe(1,2); 09: }

Stack und Funktionen Name Addresse Inhalt i 0000 ??? return address 0001 08 result 0002 a 0003 1 b 0004 2 s 0005 3 0006 01: int summe(int a, int b) 02: { 03: int s = a + b; 03: return s; 04: } 05: 06: int main() 07: { 08: int i = summe(1,2); 09: }

Stack und Funktionen Name Addresse Inhalt i 0000 ??? return address 0001 08 result 0002 3 a 0003 1 b 0004 2 s 0005 0006 01: int summe(int a, int b) 02: { 03: int s = a + b; 03: return s; 04: } 05: 06: int main() 07: { 08: int i = summe(1,2); 09: }

Stack und Funktionen Name Addresse Inhalt i 0000 ??? return address 0001 08 result 0002 3 0003 0004 0005 0006 01: int summe(int a, int b) 02: { 03: int s = a + b; 03: return s; 04: } 05: 06: int main() 07: { 08: int i = summe(1,2); 09: }

Stack und Funktionen Name Addresse Inhalt i 0000 3 return address 0001 08 result 0002 0003 0004 0005 0006 01: int summe(int a, int b) 02: { 03: int s = a + b; 03: return s; 04: } 05: 06: int main() 07: { 08: int i = summe(1,2); 09: }

Stack und Funktionen Name Addresse Inhalt i 0000 3 0001 0002 0003 0004 0005 0006 01: int summe(int a, int b) 02: { 03: int s = a + b; 03: return s; 04: } 05: 06: int main() 07: { 08: int i = summe(1,2); 09: }

Vorlesung 6 wiederholung

Überladen von Funktionen Erlaubt: selber Funktionsname andere Parameter-Typen "function overloading" Auswahl der verwendeten Version Bestimmt der Compiler Die Version wo alle Typen übereinstimmen

Überladen von Funktionen float summe(float a, float b) { return a + b; } // Version 1 int summe(int a, int b) { return a + b; } // Version 2 int main() { cout << summe(1, 2); // Version 2 aufgerufen cout << summe(1.0f, 2.0f); // Version 1 aufgerufen }

Klassen Wie stuct, zusätzlich Zugriffsart Member-Funktionen* Konstruktoren/Destruktoren* * theoretisch auch für structs verfügbar

Klassen Struct // Neuen Typ definieren struct Vektor { int x; int y; }; // Ein Objekt (Instanz) vom neuen Typ erstellen Vektor v;

Klassen Class // Neuen Typ definieren class Vektor { private: int x; int y; }; // Ein Objekt (Instanz) vom neuen Typ erstellen Vektor v;

Methoden Wie Funktionen Deklaration in der Klasse arbeiten auf einem Objekt this: Zeiger auf bearbeitetes Objekt Deklaration in der Klasse Definition innerhalb oder ausserhalb

Methoden class Vektor { public: float get_norm() { return x + y }; private: int x; int y; }; int main() { Vektor v; float f = v.get_norm(); }

Methoden class Vektor { public: float get_norm(); private: int x; int y; }; float Vektor::get_norm() { return x + y} int main() { Vektor v; float f = v.get_norm(); }

Methoden class Vektor { public: float get_norm(); private: int x; int y; }; float Vektor::get_norm() { return this->x + this->y} int main() { Vektor v; float f = v.get_norm(); }

Konstruktoren Konstruktor Destruktor spezielle Methode wird automatisch aufgerufen, wenn Objekt erstellt wird Destruktor wird automatisch aufgerufen, wenn Objekt gelöscht wird

Konstruktoren Syntax Konstruktor Syntax Destruktor Wie Funktion kein Rückgabewert Name gleich wie Klasse Syntax Destruktor Tilde (~) vor dem Namen

Konstruktoren class Vektor { public: Vektor(); ~Vektor(); private: int x, y; };

Konstruktoren class Vektor { public: Vektor(); private: int x, y; }; float Vektor::Vektor() { x = 0; y = 0; } int main() { Vektor v;

Konstruktoren class Vektor { public: Vektor(int a, int b); private: int x, y; }; float Vektor::Vektor(int a, int b) { x = a; y = b; } int main() { Vektor v(1, 2);

Zugriffsrechte public private protected jeder kann die Daten benutzen nur die eigene Klasse z.B. in Methoden protected kommt später

Zugriffsrechte class Vektor { public: int x; private: int y; }; int main() { Vektor v; v.x = 1; // v.y = 2; nicht erlaubt }

Serie 7 Übung