Repetitorium Programmieren I + II

Größe: px
Ab Seite anzeigen:

Download "Repetitorium Programmieren I + II"

Transkript

1 Repetitorium Programmieren I + II Stephan Gimbel Johanna Mensik Michael Roth 24. September 2012

2 Agenda 1 Funktionen Aufbau und Anwendung Call by Value Call by Reference Überladen von Funktionen Default Parameter 2 Pointer Zeigervariable 3 Klassen 4 Funktionszeiger

3 Funktionen Aufbau der Funktion Anwendung i n t summe ( i n t a, i n t b ) r e t u r n a+b ; Datentyp : erwarteter Rückgabewert (z.b. int = Ganzzahl, void = nix) Funktionsname: damit wird im Programm die Funktion aufgerufen Parameter in (): werden in der Funktion verwendet

4 Funktionen Anwendung i n t summe ( i n t a, i n t b ) i n t c ; c=a+b ; r e t u r n ( c ) ; i n t main ( )... cout << summe ( 2 5, 1 0 ) ; // A u f r u f d e r F u n k t i o n...

5 Funktionen Call By Value i n t main ( ) i n t a = 10, b = 20 cout << summe( a, b ) ; // A u f r u f d e r F u n k t i o n... // a und b s i n d u n v e r ä n d e r t i n t summe( i n t x, i n t y ) // Beginn d e r F u n k t i o n x++; y++; r e t u r n x+y ; Es werden Kopien der Übergabeparameter angefertigt. Somit wird sichergestellt das die Variablen der aufrufenden Funktion nicht verändert werden können.

6 Funktionen Call By Reference v o i d swap ( i n t &a, i n t &b ) i n t tmp=a ; a=b ; b=tmp ; ; Die übergeben Variablen werden direkt übergeben. Es ist nicht möglich Konstanten als Parameter anzugeben (z.b. swap(1, 2);)

7 Funktionen Call By Reference i n t main ( ) i n t a = 10, b = 20 cout << summe( a, b ) ; // A u f r u f d e r F u n k t i o n... // a und b s i n d v e r ä n d e r t!!! i n t summe( i n t &x, i n t &y ) // Beginn d e r F u n k t i o n x++; y++; r e t u r n x+y ; Achtung!!! Variablen die als Referenz übergeben werden, werden verändert!!!

8 Funktionen Call By Reference (ohne Veränderung) i n t main ( ) i n t a = 10, b = 20 cout << summe( a, b ) ; // A u f r u f d e r F u n k t i o n i n t summe( c o n s t i n t &x, c o n s t i n t &y ) // Beginn d e r F u n k t i o n x++; // C o m p i l e r f e h l e r y++; // C o m p i l e r f e h l e r r e t u r n x+y ;

9 Funktionen Inline Funktionen i n l i n e i n t summe( i n t x, i n t y ) r e t u r n x+y ; i n t main ( ) cout << summe ( 4 2, 23) << e n d l ; Compiler ersetzt Inline Funktionen an passender Stelle. Dies kann u.u. schneller sein als der Funktionsaufruf inkl. Parameterübergabe.

10 Funktionen Funktionen mit statischen Variablen i n t s t a t i c F u n c t i o n ( i n t x ) s t a t i c i n t a = 5 ; r e t u r n a++ + x ; i n t main ( ) cout << s t a t i c F u n c t i o n ( 1 ) << e n d l ; // Ausgabe : 6 cout << s t a t i c F u n c t i o n ( 1 ) << e n d l ; // Ausgabe :? cout << s t a t i c F u n c t i o n ( 1 ) << e n d l ; // Ausgabe :? Statische Variablen haben einen festen Platz im Speicher und werden nur beim ersten Aufruf initialisiert. Falls kein Wert angegeben ist, erfolgt die Initialisierung mit 0.

11 Funktionen Funktionen mit gleichem Namen können überladen werden. Dazu müssen sich die Funktionen ausreichend unterscheiden Überladene Funktionen v o i d somefunction ( ) ; // B a s i s i n t somefunction ( ) ; // E r r o r v o i d somefunction ( i n t ) ; // ok v o i d somefunction ( i n t, double ) ; // ok v o i d somefunction ( c o n s t i n t ) ; // E r r o r v o i d somefunction ( i n t &) ; // E r r o r v o i d somefunction ( c o n s t i n t &) ; // E r r o r

12 Funktionen Funktionen können Default-Parameter übergeben werden, sofern beim Aufruf keine Parameter spezifiziert werden Default Parameter i n t g e t V a l u e ( i n t x = 42) r e t u r n x ; i n t main ( ) cout << g e t V a l u e ( ) << e n d l ; // Ausgabe : 42 cout << g e t V a l u e ( 1 0 ) << e n d l ; // Ausgabe : 10 r e t u r n 0 ;

13 Funktionen Default Parameter v o i d a n o t h e r F u n c t i o n ( i n t x =42, double y =10.5, f l o a t z =17.3) cout << x << e n d l ; cout << y << e n d l ; cout << z << e n d l ; i n t main ( ) a n o t h e r F u n c t i o n ( ) ; a n o t h e r F u n c t i o n ( 1 0, 9. 5 ) ; r e t u r n 0 ;

14 Pointer Pointer (Zeiger) werden zur indirekten Adressierung benutzt Anwendung i n t i = 5 ; i n t p i ; p i = &i ; i n t p i 1 = &i ;

15 Pointer Anwendung i n t i = 5 ; cout << &i << e n d l ; cout << i << e n d l ; i n t p i ; p i = &i ; cout << &p i << e n d l ; cout << p i << e n d l ; cout << p i << e n d l ; i n t p i 1 = p i ; cout << &p i 1 << e n d l ; cout << p i 1 << e n d l ; cout << p i 1 << e n d l ; i n t p i 2 = &p i ; cout << &p i 2 << e n d l ; cout << p i 2 << e n d l ; cout << p i 2 << e n d l ; cout << p i 2 << e n d l ;

16 Pointer Können den Wert des Objekts, auf das sie zeigen, lesen Anwendung i = p i + 2 ; // i = 7 cout << p i ; // Ausgabe : p i = 7 können den Wert des Objekts, auf das sie zeigen, ändern Anwendung p i = i + 2 ; // Ausgabe : p i = 9 p i += p i ; // Ausgabe : p i = 18 können zur Laufzeit neue Adressen zugewiesen bekommen, um auf andere Objekte zu zeigen Anwendung p i 1 = p i ;

17 Pointer Anwendung // V e r g l e i c h d e r Objekt Werte : cout << ( p i == p i 1 ) ; // t r u e // V e r g l e i c h d e r Z e i g e r Werte : cout << ( p i == p i 1 ) ; // t r u e // V e r g l e i c h d e r Z e i g e r A d r e s s e n : cout << (& p i == &p i 1 ) ; // f a l s e

18 Pointer können zur Laufzeit Adressen von Objekten zugewiesen bekommen, die erst zur Laufzeit erzeugt werden Anwendung p i 1 = new i n t ; p i 1 = 2 0 ; cout << p i 1 ; // Ausgabe : 20 d e l e t e p i 1 ; // g i b t S p e i c h e r f r e i, l ö s c h t a b e r n i c h t p i 1 p i 1 = p i ;

19 Pointer bekommen zur Compile-Zeit nur Speicher für eine Objektadresse, aber nicht den Speicher für das Objekt selbst zugewiesen. Sie werden vom C++ Compiler nicht initialisiert. Falsch double pd ; pd = 2. 0 ; Richtig double pd = 0 ; Absturz zur Laufzeit vorprogrammiert und evtl. nicht reproduzierbar Fehler schwer zu finden

20 Pointer unterliegen der Typkontrolle durch den Compiler Anwendung i n t p i = 0 ; i n t i = 7 ; double pd = 0 ; p i = &i ; // Geht, b e i d e vom Typ i n t Absturz pd = &i ; // Absturz, da pd d o u b l e und i i n t i s t pd = 0xB001 ; // Absturz, da pd d o u b l e und Wert vom Typ l o n g pd = p i ; // Absturz, da pd d o u b l e und p i i n t i s t Typkontrolle aushebeln mit explizitem cast Anwendung pd = r e i n t e r p r e t c a s t < double > ( pv ) ;

21 Pointer Pointer Adressen i n t i = 4 2 ; // i l i e g t b e i 0xB000 i n t p i = &i ; // p i z e i g t a u f 0xB000 ( p i )++; // i = 4 3 ; p i ++; // z ä h l t A d r e s s e hoch, p i z e i g t nun a u f 0xB004 const Pointer (Zeiger auf Konstante) c o n s t i n t i = 4 2 ; c o n s t i n t j = 2 3 ; i n t p i = &i ; // C o m p i l e r f e h l e r c o n s t i n t p i = &i ; // geht p i = &j ; // geht Der Pointer zeigt auf eine Konstante. Wohin der Pointer zeigt kann verändert werden, nicht aber der Inhalt.

22 Pointer const Pointer (konstante Zeiger auf Variablen) i n t a = 42, b=23; i n t c o n s t pa = &a ; pa = &b ; // C o m p i l e r f e h l e r pa = 1 0 ; // geht, I n h a l t von a=10 Der Pointer zeigt auf eine Variable deren Inhalt sich ändern lässt, allerdings kann der Pointer nicht auf andere Speicherstellen zeigen.

23 Pointer const Pointer (konstante Zeiger auf Variablen / Konstanten) i n t a = 4 2 ; c o n s t i n t b=23; c o n s t i n t c o n s t p=&a ; // geht cout << p << e n d l ; // Ausgabe : 42 p = 1 7 ; // geht n i c h t a = 1 7 ; // geht b = 1 7 ; // geht n i c h t Der Pointer zeigt auf eine Variable oder Konstante deren Inhalt sich nicht über den Pointer ändern lässt. Der Pointer kann nicht auf andere Speicherstellen zeigen.

24 Pointer Anwendung i n t main ( ) Konto pkonto1 = 0, pkonto2 = 0, pkonto3 = 0 ; // Dynamisch O b j e k t e e r z e u g e n pkonto1 = new Konto ; pkonto1 >setname ( Max ) ; // K o n s t r u k t o r mit 3 Parametern a u f r u f e n pkonto2 = new Konto ( M o r i t z, 38923, ) ; // Kopie von Konto2 e r z e u g e n pkonto3 = new Konto ( pkonto2 ) ; // S p e i c h e r w i e d e r f r e i g e b e n d e l e t e pkonto1 ; d e l e t e pkonto2 ; d e l e t e pkonto3 ;

25 Klasse EineKlasse.h c l a s s E i n e K l a s s e p u b l i c : E i n e K l a s s e ( ) ; // d e r D e f a u l t K o n s t r u k t o r E i n e K l a s s e ( i n t ) ; // w e i t e r e r K o n s t r u k t o r mit Parameter E i n e K l a s s e ( E i n e K l a s s e& a ) ; // Copy K o n s t r u k t o r E i n e K l a s s e ( ) ; // d e r D e s t r u k t o r ; i n t einemethode ( i n t ) ; i n t nocheinemethode ( i n t x=42) ; // Methode mit ( D e f a u l t ) // Parameter p r i v a t e : i n t m e i n A t t r i b u t ;

26 Klasse EineKlasse.cpp #i n c l u d e E i n e K l a s s e. h E i n e K l a s s e : : E i n e K l a s s e ( ) E i n e K l a s s e : : E i n e K l a s s e ( i n t param ) m e i n A t t r i b u t = param ; E i n e K l a s s e : : E i n e K l a s s e ( ) i n t E i n e K l a s s e : : einemethode ( i n t x ) //.. do something i n t E i n e K l a s s e : : nocheinemethode ( i n t x ) //.. do something

27 Klasse - Initialisierungsliste EineKlasse.h c l a s s E i n e K l a s s e p u b l i c : E i n e K l a s s e ( i n t einx =0, i n t einy =0) : x ( einx ), y ( einy ) // some code p r i v a t e : i n t x, y ; ; Main.cpp #i n c l u d e E i n e K l a s s e. h i n t main ( ) E i n e K l a s s e meinobjekt ; E i n e K l a s s e meinobjekt1 ( 2 3, 42) ;

28 Klasse - statische Members EineKlasse.h c l a s s E i n e K l a s s e p u b l i c : E i n e K l a s s e ( i n t ) ; E i n e K l a s s e ( ) ; s t a t i c i n t count ; p r i v a t e : i n t member ; ; EineKlasse.cpp i n t E i n e K l a s s e : : count = 0 ; E i n e K l a s s e : : E i n e K l a s s e ( i n t x = 0) : member ( x ) E i n e K l a s s e : : count++; E i n e K l a s s e : : E i n e K l a s s e ( ) E i n e K l a s s e : : count ;

29 Klasse - statische Members Main.cpp - Zugriff auf public static Members #i n c l u d e E i n e K l a s s e. h i n t main ( ) cout << E i n e K l a s s e : : count << e n d l ; // Ausgabe : 0 E i n e K l a s s e meinobjekt1 ; E i n e K l a s s e meinobjekt2 ; cout << E i n e K l a s s e : : count << e n d l ; // Ausgabe : 2 r e t u r n 0 ; Achtung!!! Klappt aber nur für public Members, nicht für private!

30 Klasse - statische Methoden EineKlasse.h - private static Members c l a s s E i n e K l a s s e p u b l i c : s t a t i c i n t getcount ( ) ;... p r i v a t e : i n t member ; s t a t i c i n t count ; ; Main.cpp i n t main ( ) cout << E i n e K l a s s e : : getcount ( ) << e n d l ; // Ausgabe : 0 E i n e K l a s s e meinobjekt ; cout << E i n e K l a s s e : : getcount ( ) << e n d l ; // Ausgabe : 1

31 Klasse - statische Methoden EineKlasse.h - private static Members c l a s s E i n e K l a s s e p u b l i c : s t a t i c i n t getcount ( ) ;... p r i v a t e : i n t member ; s t a t i c i n t count ; ; EineKlasse.cpp... i n t E i n e K l a s s e : : getcount ( ) member = 4 2 ; // C o m p i l e r f e h l e r r e t u r n E i n e K l a s s e : : count ;...

32 Klasse - Mehrfacheinbindung (#include guard) EineKlasse.h #i f n d e f EINEKLASSE H #d e f i n e EINEKLASSE H c l a s s E i n e K l a s s e p u b l i c : ;... #e n d i f EineKlasse.h - Alternative #pragma once // non s t a n d a r d

33 Funktionen Function Pointer - Pointer auf Funktionen // F u n c t i o n P o i n t e r a l s Parameter v o i d p r i n t ( s t r i n g a, s t r i n g b, s t r i n g ( f u n c ) ( s t r i n g, s t r i n g ) ) // A u f r u f d e r übergebenen F u n k t i o n cout << ( f u n c ) ( a, b ) << e n d l ; Diese print-funktion bekommt einen Function Pointer auf eine andere Funktion (Platzhaltername func) übergeben, die zwei Strings als Parameter erhält und einen String zurückliefert.

34 Funktionen Function Pointer s t r i n g f u n k t i o n 1 ( s t r i n g e i n s, s t r i n g z w e i ) r e t u r n e i n s + + z w e i ; s t r i n g f u n k t i o n 2 ( s t r i n g e i n s, s t r i n g z w e i ) r e t u r n z w e i + + e i n s ; Diese Funktionen erfüllen die Voraussetzungen, um von der gezeigten print-funktion genutzt zu werden.

35 Funktionen Function Pointer - Anwendung i n t main ( ) s t r i n g wort1 = H a l l o, wort2 = Welt ; // A d r e s s e d e r gewünschten F u n k t i o n d i r e k t übergeben... p r i n t ( wort1, wort2, &f u n k t i o n 1 ) ; // Ausgabe : H a l l o Welt p r i n t ( wort1, wort2, &f u n k t i o n 2 ) ; // Ausgabe : Welt H a l l o //... o d e r w i e d e r e i n e n F u n c t i o n P o i n t e r e r s t e l l e n. s t r i n g ( f u n c t i o n P t r ) ( s t r i n g, s t r i n g ) = &f u n k t i o n 1 ; p r i n t ( wort1, wort2, f u n c t i o n P t r ) ; // Ausgabe : H a l l o Welt f u n c t i o n P t r = &f u n k t i o n 2 ; p r i n t ( wort1, wort2, f u n c t i o n P t r ) ; // Ausgabe : Welt H a l l o

36 Funktionen Achtung! Function Pointer können nur dann wie beschrieben verwendet werden, wenn die Funktion, auf die der Pointer zeigt, keine Methode einer Klasse oder statische Methode einer Klasse ist. Wenn die verwendeten Funktionen nicht-statische Medthoden einer Klasse sind, mess angegeben werden, zu welcher Klasse und welchem Objekt die Methode gehört.

37 Funktionen Function Pointer bei nicht-statischen Methoden c l a s s K l a s s e p u b l i c : s t r i n g f u n k t i o n 1 ( s t r i n g e i n s, s t r i n g z w e i )... s t r i n g f u n k t i o n 1 ( s t r i n g e i n s, s t r i n g z w e i )... // Angabe des Klassennamens b e i d e r D e f i n i t i o n des FuncPtr v o i d p r i n t ( s t r i n g a, s t r i n g b, s t r i n g ( K l a s s e : : f u n c ) ( s t r i n g, s t r i n g ) ) cout << ( t h i s > f u n c ) ( a, b ) << e n d l ; ; i n t main ( ) K l a s s e neu ; s t r i n g wort1 = H a l l o, wort2 = Welt ; // Angabe des Klassennamen f ü r d i e F u n c t i o n P o i n t e r neu. p r i n t ( wort1, wort2,& K l a s s e : : f u n k t i o n 1 ) ; // H a l l o Welt s t r i n g ( K l a s s e : : f P t r ) ( s t r i n g, s t r i n g ) = &K l a s s e : : f u n k t i o n 2 ; neu. p r i n t ( wort1, wort2, f P t r ) ; // Welt H a l l o

Repetitorium Programmieren I + II

Repetitorium Programmieren I + II Repetitorium Programmieren I + II Stephan Gimbel Johanna Mensik Michael Roth 6. März 2012 Agenda 1 Operatorüberladung 2 Pointer Zeigervariable 3 CopyConstructor 4 Listen 5 Array String 6 STL Container

Mehr

C++ Klassen weitere Funktionen

C++ Klassen weitere Funktionen C++ Klassen weitere Funktionen Übersicht static Elemente const Elemente Zusätzliches zu Konstruktoren Kopier-Konstruktor Konvertierung-Konstruktor Initialisierungslisten Friend Funktionen 2 Statische Klassenkomponenten

Mehr

Programmiertechnik. Teil 4. C++ Funktionen: Prototypen Overloading Parameter. C++ Funktionen: Eigenschaften

Programmiertechnik. Teil 4. C++ Funktionen: Prototypen Overloading Parameter. C++ Funktionen: Eigenschaften Programmiertechnik Teil 4 C++ Funktionen: Prototypen Overloading Parameter C++ Funktionen: Eigenschaften Funktionen (Unterprogramme, Prozeduren) fassen Folgen von Anweisungen zusammen, die immer wieder

Mehr

Programmierung und Angewandte Mathematik

Programmierung und Angewandte Mathematik Programmierung und Angewandte Mathematik C++ /Scilab Programmierung und Einführung in das Konzept der objektorientierten Anwendungen zu wissenschaftlichen Rechnens SS 2012 Ablauf Was sind Funktionen/Methoden

Mehr

C++ - Objektorientierte Programmierung Konstante und statische Elemente

C++ - Objektorientierte Programmierung Konstante und statische Elemente C++ - Objektorientierte Programmierung Konstante und statische Elemente hat eine Kantenlänge hat eine Füllfarbe Kantenlänge setzen Füllfarbe lesen Volumen berechnen Leibniz Universität IT Services Anja

Mehr

8. Referenzen und Zeiger

8. Referenzen und Zeiger 8. Referenzen und Zeiger Motivation Variable werden in C++ an speziellen Positionen im Speicher abgelegt. An jeder Position befindet sich 1 Byte. Sie sind durchnummeriert beginnend bei 0. Diese Positionen

Mehr

C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren

C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren C++ - Objektorientierte Programmierung Konstruktoren und Destruktoren hat eine Kantenlänge hat eine Füllfarbe Kantenlänge setzen Füllfarbe lesen Volumen berechnen Leibniz Universität IT Services Anja Aue

Mehr

Methoden. von Objekten definiert werden, Methoden,, Zugriffsmethoden und Read-Only

Methoden. von Objekten definiert werden, Methoden,, Zugriffsmethoden und Read-Only Methoden Wie Konstruktoren und Destruktoren zum Auf- und Abbau von Objekten definiert werden, Wie inline-methoden Methoden,, Zugriffsmethoden und Read-Only Only- Methoden einzusetzen sind, Der this-pointer

Mehr

Grundlagen der Objektorientierten Programmierung - Methoden -

Grundlagen der Objektorientierten Programmierung - Methoden - Methoden In ihrem formalen Aufbau entsprechen Java-Methoden den Funktionen in C und C++. Eine Methode dient dazu, eine häufig benötigte Folge von Anweisungen unter einem Namen zusammenzufassen und zum

Mehr

Methoden (fortgeschritten) in C# - 1

Methoden (fortgeschritten) in C# - 1 Methoden (fortgeschritten) in C# - 1 Marc Satkowski 20. November 2016 C# Kurs Gliederung 1. Opertatoren Überladung 2. delegate 3. Anonyme Methoden delegate Lamda Ausdruck-Lamdas Anweisung-Lamdas Variablenbereich

Mehr

Prof. W. Henrich Seite 1

Prof. W. Henrich Seite 1 Klasse - ist ein benutzerdefinierter Datentyp (Referenztyp) - hat Datenelemente - hat Methoden - Konstruktor ist spezielle Methode zum Erstellen eines Objektes vom Typ der Klasse (Instanz) - jede Klasse

Mehr

Konstruktor/Destruktor

Konstruktor/Destruktor 1/23 Konstruktor/Destruktor Florian Adamsky, B. Sc. (PhD cand.) florian.adamsky@iem.thm.de http://florian.adamsky.it/ cbd Softwareentwicklung im WS 2014/15 2/23 Outline 1 2 3/23 Inhaltsverzeichnis 1 2

Mehr

Vorkurs Informatik: Erste Schritte der Programmierung mit C++

Vorkurs Informatik: Erste Schritte der Programmierung mit C++ Vorkurs Informatik WS 14/15 Vorkurs Informatik: Erste Schritte der Programmierung mit C++ Arne Nägel, Andreas Vogel, Gabriel Wittum Lehrstuhl Modellierung und Simulation Goethe-Center for Scientific Computing

Mehr

Implementieren von Klassen

Implementieren von Klassen Implementieren von Klassen Felder, Methoden, Konstanten Dr. Beatrice Amrhein Überblick Felder/Mitglieder (Field, Member, Member-Variable) o Modifizierer Konstanten Methoden o Modifizierer 2 Felder und

Mehr

Überblick. 6. Konstruktor und Destruktor - obligatorische Elementfunktionen einer Klasse

Überblick. 6. Konstruktor und Destruktor - obligatorische Elementfunktionen einer Klasse Überblick 1. Einführung C++ / Entwicklung/ Sprachfamilie 2. Nicht objektorientierte Erweiterungen von C 2.1 Das Ein-/Ausgabekonzept von C++ 2.2 Referenzen in C++ 2.3 Heap-Allokatoren in C++ 3. Grundlagen

Mehr

F Zeiger, Felder und Strukturen in C

F Zeiger, Felder und Strukturen in C F Zeiger, Felder und Strukturen in C F Zeiger, Felder und Strukturen in C F.1 Zeiger(-Variablen) 1 Einordnung Konstante: Bezeichnung für einen Wert a 0110 0001 Variable: Bezeichnung eines Datenobjekts

Mehr

C++ Teil 12. Sven Groß. 18. Jan Sven Groß (IGPM, RWTH Aachen) C++ Teil Jan / 11

C++ Teil 12. Sven Groß. 18. Jan Sven Groß (IGPM, RWTH Aachen) C++ Teil Jan / 11 C++ Teil 12 Sven Groß 18. Jan 2016 Sven Groß (IGPM, RWTH Aachen) C++ Teil 12 18. Jan 2016 1 / 11 Themen der letzten Vorlesung Wiederholung aller bisherigen Themen: Datentypen und Variablen Operatoren Kontrollstrukturen

Mehr

Informatik I (D-MAVT)

Informatik I (D-MAVT) Informatik I (D-MAVT) Übungsstunde 9 simon.mayer@inf.ethz.ch Distributed Systems Group, ETH Zürich Ablauf Nachbesprechung Übung 7 Besprechung/Vertiefung der Vorlesung Vorbesprechung Übung 9 Aufgabe 1:

Mehr

Arrays. Einleitung. Deklarieren einer Array Variablen

Arrays. Einleitung. Deklarieren einer Array Variablen Arrays Einleitung bisher jede Variable einzeln deklariert: 12 3 14 12 32 32 3 32 5 3 double sum; int count; ÿ Sie können Zweck und Aufbau von Array-Datentypen erklären ÿ Sie können einen Array korrekt

Mehr

Informatik II Übung 05. Benjamin Hepp 3 April 2017

Informatik II Übung 05. Benjamin Hepp 3 April 2017 Informatik II Übung 05 Benjamin Hepp benjamin.hepp@inf.ethz.ch 3 April 2017 Java package Hierarchie import.. nur noetig um Klassen aus anderen Packeten zu importieren Es kann auch immer der vollstaendige

Mehr

Programmierstarthilfe SS 2008 Fakultät für Ingenieurwissenschaften und Informatik 8. Blatt Für den 16. und

Programmierstarthilfe SS 2008 Fakultät für Ingenieurwissenschaften und Informatik 8. Blatt Für den 16. und Programmierstarthilfe SS 2008 Fakultät für Ingenieurwissenschaften und Informatik 8. Blatt Für den 16. und 17.6.2008 Organisatorisches Um auf die Mailingliste aufgenommen zu werden schicke einfach eine

Mehr

DAP2-Programmierpraktikum Einführung in C++ (Teil 2)

DAP2-Programmierpraktikum Einführung in C++ (Teil 2) DAP2-Programmierpraktikum Einführung in C++ (Teil 2) Carsten Gutwenger 18. April 2008 Lehrstuhl 11 Algorithm Engineering Fakultät für Informatik, TU Dortmund Überblick Dynamischer Speicher Klassen und

Mehr

Einführung in den Einsatz von Objekt-Orientierung mit C++ I

Einführung in den Einsatz von Objekt-Orientierung mit C++ I Einführung in den Einsatz von Objekt-Orientierung mit C++ I ADV-Seminar Leiter: Mag. Michael Hahsler Syntax von C++ Grundlagen Übersetzung Formale Syntaxüberprüfung Ausgabe/Eingabe Funktion main() Variablen

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 35 Einstieg in die Informatik mit Java Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 35 1 Grundlagen 2 Verdeckte Variablen 3 Verdeckte Methoden 4 Konstruktoren

Mehr

6 ZEIGER UND REFERENZEN - ALLGEMEINES

6 ZEIGER UND REFERENZEN - ALLGEMEINES 6 ZEIGER UND REFERENZEN - ALLGEMEINES Leitideen: Zeiger sind Adressen mit zusätzlicher Typinformation über das dort gespeicherte Objekt. Die Vereinbarungssyntax soll der Ausdruckssyntax entsprechen und

Mehr

Teil 5: Zeiger, Felder, Zeichenketten Gliederung

Teil 5: Zeiger, Felder, Zeichenketten Gliederung Teil 5: Zeiger, Felder, Zeichenketten Gliederung Zeiger und Adressen Felder (Arrays) Zeichenketten (Strings) Zeigerarithmetik Mehrdimensionale Felder Zeiger und Adressen Felder Zeichenketten Zeigerarithmetik

Mehr

Objektorientierung (OO)

Objektorientierung (OO) Objektorientierung (OO) Objekte haben Zustände (oder Eigenschaften, Attribute) und Verhalten Zustände: Objektvariablen (in Java auch fields) Verhalten (oder Aktionen): Methoden (methods, Funktionen) members

Mehr

C++ - Einführung in die Programmiersprache Funktionen. Leibniz Universität IT Services Anja Aue

C++ - Einführung in die Programmiersprache Funktionen. Leibniz Universität IT Services Anja Aue C++ - Einführung in die Programmiersprache Funktionen Leibniz Universität IT Services Anja Aue Subroutine (Unterprogramm) Lösung von Teilen einer Gesamtaufgabe. Kapselung von Anweisungen, die zu einer

Mehr

Grundlagen der Informatik 9. Funktionen II

Grundlagen der Informatik 9. Funktionen II 9. Funktionen II Wiederholung Parameterübergabe Funktionsparameter Statische Variablen Inline Funktionen Überladen von Funktionen Templates in Funktionen Rekursion in Funktionen Testen von Funktionen Grundlagen

Mehr

Grundlagen der Informatik 11. Zeiger

Grundlagen der Informatik 11. Zeiger 11. Zeiger Motivation Zeiger und Adressen Zeiger und Funktionen Zeiger und Arrays Dynamische Objekte Grundlagen der Informatik (Alex Rempel) 1 Motivation Dynamische Speicherverwaltung Oft müssen große

Mehr

Typ : void* aktuelle Parameter Pointer von beliebigem Typ

Typ : void* aktuelle Parameter Pointer von beliebigem Typ 2. Funktionen - Prototypvereinbarung typangabe funktionsname(parameterliste); - Funktionsdefinition typ funktionsname(parameterliste){ Anweisung - Funktionstyp -> Typ der Funktionswertes zulaessige Typangaben

Mehr

2. Unterprogramme und Methoden

2. Unterprogramme und Methoden 2. Unterprogramme und Methoden Durch Methoden wird ausführbarer Code unter einem Namen zusammengefasst. Dieser Code kann unter Verwendung von sogenannten Parametern formuliert sein, denen später beim Aufruf

Mehr

C# - Einführung in die Programmiersprache Methoden. Leibniz Universität IT Services

C# - Einführung in die Programmiersprache Methoden. Leibniz Universität IT Services C# - Einführung in die Programmiersprache Methoden Leibniz Universität IT Services 02.07.12 Methoden... sind Subroutinen in einer Klasse. können einen Wert an den Aufrufer zurückgeben. verändern die Eigenschaften

Mehr

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

Institut für Programmierung und Reaktive Systeme. Java 6. Markus Reschke Institut für Programmierung und Reaktive Systeme Java 6 Markus Reschke 13.10.2014 OOP Objekte = Verhalten (durch Methoden) + Daten (durch Attribute) Klassen = Baupläne für Objekte Kapselung von Programmteilen

Mehr

Vererbung. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 23.5.

Vererbung. Gerd Bohlender. Institut für Angewandte und Numerische Mathematik. Vorlesung: Einstieg in die Informatik mit Java 23.5. Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 23.5.07 G. Bohlender (IANM UNI Karlsruhe) Vererbung 23.5.07 1 / 22 Übersicht 1

Mehr

Allgemeines - Prinzipien

Allgemeines - Prinzipien OOP - Prinzipien Allgemeines - Prinzipien OO modelliert die reale Welt als System interagierender Objekte Objekt = gedankliche oder reale Einheit in der Umwelt und/oder in Software Klar definierte Schnittstellen

Mehr

C++ Notnagel. Ziel, Inhalt. Programmieren in C++

C++ Notnagel. Ziel, Inhalt. Programmieren in C++ C++ Notnagel Ziel, Inhalt Ich versuche in diesem Dokument noch einmal die Dinge zu erwähnen, die mir als absolut notwendig für den C++ Unterricht und die Prüfungen erscheinen. C++ Notnagel 1 Ziel, Inhalt

Mehr

Vorlesung Programmieren

Vorlesung Programmieren Vorlesung Programmieren Speicherverwaltung und Parameterübergabe Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Gültigkeitsbereich von

Mehr

1.4. Funktionen. Objektorientierte Programmierung mit C++

1.4. Funktionen. Objektorientierte Programmierung mit C++ mehrfache Deklarationen sind erlaubt für jede Funktion muss es (GENAU) eine Definition geben, ansonsten linker error [the one definition rule ODR] Deklarationen in *.h - Files, Definitionen in *.cpp -

Mehr

Vorlesungsprüfung Programmiersprache 1

Vorlesungsprüfung Programmiersprache 1 Vorlesungsprüfung Programmiersprache 1 Termin der Prüfung: 1) Di 20.03.2018 16:15 17:00 HSB 3 2) Di 15.05.2018 16:15 17:00 HSB 3 3) Di 12.06.2018 16:15 17:00 HSB 3 Stoffgebiete: 1) Ganzzahltypen: char,

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Tafelübung 03 Vererbung, Polymorphie, Sichtbarkeit, Interfaces Clemens Lang T2 11. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/26 Klassen und Objekte Klassen und Objekte

Mehr

Java Einführung Methoden. Kapitel 6

Java Einführung Methoden. Kapitel 6 Java Einführung Methoden Kapitel 6 Inhalt Deklaration und Aufruf von Methoden Lokale und globale Namen (Bezeichner) Sichtbarkeit und Lebensdauer von Variablen in Methoden Überladen von Methoden 2 Methoden

Mehr

Vererbung, Polymorphie

Vererbung, Polymorphie Vererbung, Polymorphie Gerd Bohlender Institut für Angewandte und Numerische Mathematik Vorlesung: Einstieg in die Informatik mit Java 21.1.08 G. Bohlender (IANM UNI Karlsruhe) Vererbung, Polymorphie 21.1.08

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 27 Einstieg in die Informatik mit Java Klassen als Datenstrukturen Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 27 1 Überblick: Klassen als Datenstruktur 2 Vereinbarung

Mehr

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden

Kapitel 8. Programmierkurs. Methoden. 8.1 Methoden Kapitel 8 Programmierkurs Birgit Engels Anna Schulze Zentrum für Angewandte Informatik Köln Objektorientierte Programmierung Methoden Überladen von Methoden Der this-zeiger Konstruktoren Vererbung WS 07/08

Mehr

C++ Teil 4. Sven Groß. 30. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 16

C++ Teil 4. Sven Groß. 30. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 16 C++ Teil 4 Sven Groß IGPM, RWTH Aachen 30. Apr 2015 Sven Groß (IGPM, RWTH Aachen) C++ Teil 4 30. Apr 2015 1 / 16 Themen der letzten Vorlesung Funktionen: Definition und Aufruf Wert- und Referenzparameter,

Mehr

Vorkurs C++ Programmierung

Vorkurs C++ Programmierung Vorkurs C++ Programmierung Klassen Letzte Stunde Speicherverwaltung automatische Speicherverwaltung auf dem Stack dynamische Speicherverwaltung auf dem Heap new/new[] und delete/delete[] Speicherklassen:

Mehr

Wichtige Prinzipien von C#

Wichtige Prinzipien von C# Wichtige Prinzipien von C# Marc Satkowski 20. November 2016 C# Kurs Gliederung 1. Dokumentationskommentare 2. Gültigkeit (Scope) 3. namespace & using 4. Methodenüberladung 5. Wert- & Referenztyp 6. null

Mehr

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

7 Funktionen. 7.1 Definition. Prototyp-Syntax: {Speicherklasse} {Typ} Name ({formale Parameter}); S. d. I.: Programieren in C Folie 7-1 7 Funktionen 7.1 Definition Prototyp-Syntax: Speicherklasse Typ Name (formale Parameter); der Funktions-Prototyp deklariert eine Funktion, d.h. er enthält noch nicht

Mehr

Inhalt. 4.5 Arbeit mit Zeigern (engl. Pointer)

Inhalt. 4.5 Arbeit mit Zeigern (engl. Pointer) Inhalt Inhalt: 4. Programmiersprache C 4.1 Programmaufbau in C 4.2 Basisdatentypen und einfache Anweisungen 4.3 Steuerfluss-Konstrukte 4.4 Arbeit mit indizierten Größen (Felder) 4.5 Arbeit mit Zeigern

Mehr

Programmieren in C++ Klassen

Programmieren in C++ Klassen Programmieren in C++ Klassen Inhalt Klassen (vertieft) Destruktor Konstruktoren Move-Semantik und Rechtswert-Referenzen (C++11) C++11 Features Prof. Dr. C. Stamm Programmieren in C++, FS 13 4-2 Implementierung

Mehr

C++ Teil 5. Sven Groß. 13. Mai Sven Groß (IGPM, RWTH Aachen) C++ Teil Mai / 18

C++ Teil 5. Sven Groß. 13. Mai Sven Groß (IGPM, RWTH Aachen) C++ Teil Mai / 18 C++ Teil 5 Sven Groß 13. Mai 2016 Sven Groß (IGPM, RWTH Aachen) C++ Teil 5 13. Mai 2016 1 / 18 Themen der letzten Vorlesung Funktionen Funktionsüberladung, Signatur Rekursion const-deklaration Referenzen

Mehr

Zeiger (engl. Pointer)

Zeiger (engl. Pointer) Zeiger (engl. Pointer) Zeiger Ein Zeiger (engl. Pointer) speichert eine Adresse, unter der ein Wert im Speicher des Computers gespeichert werden kann. Eine Variable im Gegensatz speichert einen Wert. Der

Mehr

2. Programmierung in C

2. Programmierung in C 2. Programmierung in C Inhalt: Überblick über Programmiersprachen, Allgemeines zur Sprache C C: Basisdatentypen, Variablen, Konstanten, Operatoren und Ausdrücke Anweisungen und Kontrollstrukturen (Steuerfluss)

Mehr

Vererbung und Polymorphie

Vererbung und Polymorphie Vererbung und Polymorphie Marc Satkowski, Sascha Peukert 29. September 2016 C# Kurs Gliederung 1. Methodenüberladung 2. Vererbung Polymorphie Methoden- & Eigenschaftsüberschreibung Weitere Schlüsselwörter

Mehr

Modellierung und Programmierung 1

Modellierung und Programmierung 1 Modellierung und Programmierung 1 Prof. Dr. Sonja Prohaska Computational EvoDevo Group Institut für Informatik Universität Leipzig 9. Dezember 2015 Wiederholung Referenzdatentypen reference [0] M datatype

Mehr

Crashkurs C++ Wiederholung

Crashkurs C++ Wiederholung Crashkurs C++ Wiederholung #include int main(void) { int i, j; bool is_prime; for (j = 1; j < 1000; j += 2) { is_prime = true; for (i = 3; i

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Dynamische Datenobjekte Pointer/Zeiger, Verkettete Liste Eigene Typdefinitionen 1 Zeigeroperatoren & und * Ein Zeiger ist die Speicheradresse irgendeines Objektes. Eine

Mehr

Java I Vorlesung 6 Referenz-Datentypen

Java I Vorlesung 6 Referenz-Datentypen Java I Vorlesung 6 Referenz-Datentypen 7.6.2004 Referenzen this, super und null Typkonvertierung von Referenztypen Finale Methoden und Klassen Datentypen in Java In Java gibt es zwei Arten von Datentypen:

Mehr

Informatik I (D-MAVT)

Informatik I (D-MAVT) Informatik I (D-MAVT) Übungsstunde 7 simon.mayer@inf.ethz.ch Distributed Systems Group, ETH Zürich Ablauf Nachbesprechung Übung 5 Besprechung/Vertiefung der Vorlesung Vorbesprechung Übung 7 Aufgabe 1:

Mehr

PVK Informatik I 1.Teil. Grundlagen Variablen Operatoren Fallunterscheidung Schleifen Kurzschreibweise Pointer Array Dynamische Strukturen Funktionen

PVK Informatik I 1.Teil. Grundlagen Variablen Operatoren Fallunterscheidung Schleifen Kurzschreibweise Pointer Array Dynamische Strukturen Funktionen PVK Informatik I 1.Teil Grundlagen Variablen Operatoren Fallunterscheidung Schleifen Kurzschreibweise Pointer Array Dynamische Strukturen Funktionen 1 Grundlagen #include #include using

Mehr

Tag 8 Repetitorium Informatik (Java)

Tag 8 Repetitorium Informatik (Java) Tag 8 Repetitorium Informatik (Java) Dozent: Michael Baer Lehrstuhl für Informatik 2 (Programmiersysteme) Friedrich-Alexander-Universität Erlangen-Nürnberg Wintersemester 2017/2018 Informatik-Repetitorium

Mehr

Programmierkurs C++ Datenstrukturen Seite 1

Programmierkurs C++ Datenstrukturen Seite 1 Programmierkurs C++ Datenstrukturen Seite 1 3 Datenstrukturen 3.1 Arrays Zur Wiederholung als Strukturelement der Programmierung gehört auf der Seite der Datenstrukturen die Liste. Eine Liste kann auf

Mehr

Statische und Nichtstatische Methoden Properties/ Eigenschaften

Statische und Nichtstatische Methoden Properties/ Eigenschaften Statische und Nichtstatische Methoden Properties/ Eigenschaften Statische Methoden Definition und Merkmale von Properties Modifizierer Beispiele Nebeneffekte Dr. Beatrice Amrhein Statische / Nichtstatische

Mehr

Vorkurs C++ Programmierung

Vorkurs C++ Programmierung Vorkurs C++ Programmierung Funktionen Rückblick Operatoren logische Verknüpfungen Zusammengesetzte Operatoren ( Zuweisungsoperatoren ) Kontrollstrukturen Bedingte Anweisungen (if-abfrage, switch-konstrukt)

Mehr

Informatik II Übung 5

Informatik II Übung 5 Informatik II Übung 5 Florian Scheidegger florsche@student.ethz.ch Folien mit freundlicher Genehmigung adaptiert von Gábor Sörös und Simon Mayer gabor.soros@inf.ethz.ch, simon.mayer@inf.ethz.ch 27.03.2013

Mehr

Deklarationen in C. Prof. Dr. Margarita Esponda

Deklarationen in C. Prof. Dr. Margarita Esponda Deklarationen in C 1 Deklarationen Deklarationen spielen eine zentrale Rolle in der C-Programmiersprache. Deklarationen Variablen Funktionen Die Deklarationen von Variablen und Funktionen haben viele Gemeinsamkeiten.

Mehr

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny 9. Zeiger Arbeitsspeicher / Adressen Der Arbeitsspeicher des Computers (RAM) besteht aus einem Feld von Speicherzellen, beginnend bei Adresse

Mehr

Crashkurs C++ - Teil 1

Crashkurs C++ - Teil 1 Crashkurs C++ - Teil 1 Intro Speicherverwaltung Variablen, Pointer, Referenzen Felder statische & dynamische Allozierung Birgit Möller & Denis Williams AG Bioinformatik & Mustererkennung Institut für Informatik

Mehr

Betriebssysteme, Rechnernetze und verteilte Systeme 1. Crashkurs C (2)

Betriebssysteme, Rechnernetze und verteilte Systeme 1. Crashkurs C (2) Betriebssysteme, Rechnernetze und verteilte Systeme 1 Crashkurs C (2) Olaf Spinczyk Arbeitsgruppe Eingebettete Systemsoftware Lehrstuhl für Informatik 12 TU Dortmund olaf.spinczyk@tu-dortmund.de http://ess.cs.uni-dortmund.de/teaching/ss2008/bsrvs1/

Mehr

Exceptions und Vererbung

Exceptions und Vererbung Exceptions und Vererbung Marc Satkowski 20. November 2016 C# Kurs Gliederung 1. Vererbung Polymorphie Methoden- & Eigenschaftsüberschreibung Weitere Schlüsselwörter 2. Exceptions Eigene Exceptions Handling

Mehr

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny 7. Funktionen Einleitung Nach dem Prinzip Divide and Conquer bietet es sich an, größere Aufgaben in kleinere Teile zu unterteilen. Anweisungsblöcke,

Mehr

2. Methoden. n Generelles zum Aufruf von Methoden. n Parameterübergabemechanismen (call by value, call by reference)

2. Methoden. n Generelles zum Aufruf von Methoden. n Parameterübergabemechanismen (call by value, call by reference) 2. Methoden n Generelles zum Aufruf von Methoden n Parameterübergabemechanismen (call by value, call by reference) n Speicherorganisation bei Methodenaufruf und Parameterübergabe (Laufzeitkeller) n vararg

Mehr

Einleitung Typsystem Typisierung Zusammenfassung Literatur. Typisierung. Effiziente Programmierung. Thomas Schnieders

Einleitung Typsystem Typisierung Zusammenfassung Literatur. Typisierung. Effiziente Programmierung. Thomas Schnieders Typisierung Effiziente Programmierung Thomas Schnieders Fachbereich Informatik Fakultät für Mathematik, Informatik und Naturwissenschaften Universität Hamburg 2018-04-26 Thomas Schnieders Typisierung 1

Mehr

HSR Rapperswil 2001 Markus Rigling. Programmieren: Templates Auflage

HSR Rapperswil 2001 Markus Rigling. Programmieren: Templates Auflage HSR Rapperswil 2001 Markus Rigling Programmieren: Templates 1 1. Auflage Inhaltsverzeichnis: Templates.1 1. Verwendung 3 2. Erstellen einer Templateklasse. 3 3. Faustregel zum Erstellen eines Klassentemplates..

Mehr

pue13 January 28, 2017

pue13 January 28, 2017 pue13 January 28, 2017 1 Aufgabe 1 (Klammern und Anweisungsblöcke) Wie Sie in der Vorlesung gelernt haben, werden Anweisungsblöcke in Java nicht durch Einrückung, sondern mithilfe von geschweiften Klammern

Mehr

Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Gute Lösung:

Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Gute Lösung: Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Der Sourcecode wird an den entsprechenden Stellen im Programm wiederholt Programm wird lang

Mehr

7. Übung Informatik II - Objektorientierte Programmierung

7. Übung Informatik II - Objektorientierte Programmierung 7. Übung Informatik II - Objektorientierte Programmierung 29. Mai 2015 Inhalt 1 2 3 Übersicht 1 2 3 Idee Menschen nehmen die Welt in Form von Objekten wahr manche Objekte haben gleiche Eigenschaften, hierüber

Mehr

Zeiger, Arrays und Strings in C und C++

Zeiger, Arrays und Strings in C und C++ Zeiger, Arrays und Strings in C und C++ 1 Zeiger in Java und C/C++ Zeigervariable (kurz: Zeiger, engl.: pointer): eine Variable, die als Wert eine Speicheradresse enthält Java: Zeiger werden implizit für

Mehr

Variablen. int Flugzeug. float. I write code Hund. String. long. Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel

Variablen. int Flugzeug. float. I write code Hund. String. long. Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel 4213 Variablen 17.834 float Flugzeug 36812736294 I write code Hund long String Borchers: Programmierung für Alle (Java), WS 06/07 Kapitel 3 + 4 1 Variablen sind wie Becher. Sie speichern etwas. // Variablen

Mehr

Variablen in C++ Einfache Variablen Strukturen Arrays und Zeichenketten Zeiger und Referenzen Parameter Dynamische Speicherverwaltung

Variablen in C++ Einfache Variablen Strukturen Arrays und Zeichenketten Zeiger und Referenzen Parameter Dynamische Speicherverwaltung Variablen in C++ Einfache Variablen Strukturen Arrays und Zeichenketten Zeiger und Referenzen Parameter Dynamische Speicherverwaltung Einfache Variablen Typen int, long, short, unsigned bool char float,

Mehr

Programmieren - C++ Templates

Programmieren - C++ Templates Programmieren - C++ Templates Reiner Nitsch r.nitsch@fbi.h-da.de Was sind Templates? C++ Templates ermöglichen generische Programmierung. Das ist Programmierung unabhängig vom speziellen Objekt-Typ Templates

Mehr

Heap vs. Stack vs. statisch. 6 Speicherorganisation. Beispiel Statische Variablen. Statische Variablen

Heap vs. Stack vs. statisch. 6 Speicherorganisation. Beispiel Statische Variablen. Statische Variablen Heap vs. vs. statisch Der Speicher des Programms ist in verschiedene Speicherbereiche untergliedert Speicherbereiche, die den eigentlichen Programmcode und den Code der Laufzeitbibliothek enthalten; einen

Mehr

Programmieren in Java

Programmieren in Java Ein Projekt 2 Wiederholung: new-operator Werte nicht-primitiver Datentypen müssen mit new erzeugt werden Es gibt keine Möglichkeit primitive Daten mit new zu erzeugen Beispiele int[] myarray = new int[]

Mehr

Hydroinformatik I: Referenzen und Zeiger

Hydroinformatik I: Referenzen und Zeiger Hydroinformatik I: Referenzen und Zeiger Prof. Dr.-Ing. habil. Olaf Kolditz 1 Helmholtz Centre for Environmental Research UFZ, Leipzig 2 Technische Universität Dresden TUD, Dresden Dresden, 06. Januar

Mehr

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Referenzen. Referenzen

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Referenzen. Referenzen 5 Objektorientierte Programmierung in Java Prof. Dr. Ing. André Stuhlsatz Referenzen Beispiel an der einfachen Klasse Walze: public class Walze { int id; public Walze(int id) { this.id = id; Verwenden

Mehr

6. Funktionen, Parameterübergabe

6. Funktionen, Parameterübergabe 6. Funktionen, Parameterübergabe GPS-6-1 Themen dieses Kapitels: Begriffe zu Funktionen und Aufrufen Parameterübergabearten call-by-value, call-by-reference, call-by-value-and-result in verschiedenen Sprachen

Mehr

Klausur in Programmieren

Klausur in Programmieren Studiengang Sensorik/Sensorsystemtechnik Note / normierte Punkte Klausur in Programmieren Sommer 2014, 16. Juli 2014 Dauer: 1,5h Hilfsmittel: Keine (Wörterbücher sind auf Nachfrage erlaubt) Name: Matrikelnr.:

Mehr

Aufbau von Klassen. class punkt {...

Aufbau von Klassen. class punkt {... Einführung in C++ Aufbau von Klassen Eine wird mit dem Schlüsselwort class eingeleitet, und endet mit einem Semikolon. Der Inhalt wird zwischen geschweiften Klammern geschrieben. class punkt {... ; Im

Mehr

Klassen. Kapitel Klassendeklaration

Klassen. Kapitel Klassendeklaration Kapitel 4 Klassen Wir kommen nun zu einem sehr wichtigen Aspekt der OOT: zu den Klassen. Eine Klasse ist eine vom Benutzer definierte Datenstruktur, eine Sammlung von Variablen (unterschiedlichen Typs)

Mehr

Kapitel 10 Delegationsvariablen

Kapitel 10 Delegationsvariablen Kapitel 10 Delegationsvariablen Korbinian Molitorisz IPD Tichy Lehrstuhl für Programmiersysteme KIT die Kooperation von Forschungszentrum Karlsruhe GmbH und Universität Karlsruhe (TH) Agenda Wie werden

Mehr

C++ Teil 5. Sven Groß. 8. Mai IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil 5 8. Mai / 16

C++ Teil 5. Sven Groß. 8. Mai IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil 5 8. Mai / 16 C++ Teil 5 Sven Groß IGPM, RWTH Aachen 8. Mai 2015 Sven Groß (IGPM, RWTH Aachen) C++ Teil 5 8. Mai 2015 1 / 16 Themen der letzten Vorlesung Live Programming zu A2 Gleitkommazahlen Rundungsfehler Auswirkung

Mehr

Programmierung mit C Zeiger

Programmierung mit C Zeiger Programmierung mit C Zeiger Zeiger (Pointer)... ist eine Variable, die die Adresse eines Speicherbereichs enthält. Der Speicherbereich kann... kann den Wert einer Variablen enthalten oder... dynamisch

Mehr

Heap vs. Stack vs. statisch. 6 Speicherorganisation. Beispiel Statische Variablen. Statische Variablen

Heap vs. Stack vs. statisch. 6 Speicherorganisation. Beispiel Statische Variablen. Statische Variablen Heap vs. vs. statisch Der Speicher des Programms ist in verschiedene Speicherbereiche untergliedert Speicherbereiche, die den eigentlichen Programmcode und den Code der Laufzeitbibliothek enthalten; einen

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 41 Einstieg in die Informatik mit Java Vererbung Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 41 1 Überblick: Vererbung 2 Grundidee Vererbung 3 Verdeckte Variablen

Mehr

Einführung in die Programmierung zusammengesetzte Datentypen, dynamischer Speicher

Einführung in die Programmierung zusammengesetzte Datentypen, dynamischer Speicher Einführung in die Programmierung zusammengesetzte Datentypen, dynamischer Speicher Arvid Terzibaschian 1 Zusammengesetzte Datentypen 2 Wozu zusammengesetzte Datentypen? Anforderung: Sie sollen ein Kundenverzeichnis

Mehr

Programmieren in C++

Programmieren in C++ Programmieren in C++ SS 2012 Vorlesung 5, Dienstag 5. Juni 2012 (Klassen, Objekte, Methoden, new & delete) Prof. Dr. Hannah Bast Lehrstuhl für Algorithmen und Datenstrukturen Institut für Informatik Universität

Mehr

C++ - Objektorientierte Programmierung Vererbung

C++ - Objektorientierte Programmierung Vererbung C++ - Objektorientierte Programmierung Vererbung Personen Kunden Mitarbeiter Verwaltung Verkäufer Leibniz Universität IT Services Anja Aue Vererbung Definition von Klassen auf Basis von bestehenden Klassen.

Mehr

C++ - Operatoren. Eigene Klassen mit neuen Funktionen

C++ - Operatoren. Eigene Klassen mit neuen Funktionen C++ - Operatoren Eigene Klassen mit neuen Funktionen Übersicht Klassen bisher Eigene Operatoren definieren 2 Bisher Durch Kapselung, Vererbung und Polymorphy können nun eigene Klassen definiert werden,

Mehr

Java Einführung Klassendefinitionen

Java Einführung Klassendefinitionen Java Einführung Klassendefinitionen Inhalt dieser Einheit Java-Syntax Klassen definieren Objekte instanziieren Instanzvariable deklarieren Klassenvariable deklarieren 2 Klassen definieren In der Problemanalyse

Mehr