6.5 Mehrdimensionale Felder

Größe: px
Ab Seite anzeigen:

Download "6.5 Mehrdimensionale Felder"

Transkript

1 6.5 Mehrdimensionale Felder Manchmal ist es sinnvoll, ein Feld mit mehr als einem Index zu indizieren. Beispielsweise, wenn man alle Wechselkurse zwischen bestimmten Währungen speichern möchte. In C++ gibt es keine explizite Konstruktion mehrdimensionaler Felder. Man kann allerdings die Konstruktion einfacher Felder mehrfach anwenden. Man konstruiert ein zweidimensionales Feld, indem man ein Feld von eindimensionalen Feldern konstruiert. Deklaration/Definition: (2dim. Feld) <Datentyp> <Name>[<Anzahl>][<Anzahl>]; Zugriff: <Name>[<Index>][<Index>]; <Index> ist ein Ganzzahlausdruck. Dabei ist der erste Index der Index des Gesamtfeldes. Der zweite Index der Index eines eindimensionalen Feldes. Die Elemente eines Feldes werden hintereinander abgespeichert. Bei einem zweidimensionalen Feld also zeilenweise. WS 2001/02 Programmierkurs C++ Seite 81

2 Ein zweidimensionales Feld kann man sich als Matrix vorstellen. Der erste Index gibt die Zeile an, der zweite die Spalte. Beispiel 5: 1 # i n c l u d e < i o s t r e a m > 2 using namespace s t d ; 3 4 i n t main ( ) 5 { 6 i n t a [ 2 ] [ 3 ] = 7 { 8 { 1, 2, 3 }, { 4, 5, 6 } 9 } ; f o r ( i n t z e i l e = 0 ; z e i l e < 2 ; z e i l e ++){ 12 f o r ( i n t s p a l t e = 0 ; s p a l t e < 3 ; s p a l t e ++) 13 c o u t < < a [ z e i l e ] [ s p a l t e ] < < " " ; 14 c o u t < < e n d l ; 15 } 16 } Programmausgabe: a[0][0] a[0][1] a[0][2] a[1][0] a[1][1] a[1][2] Initialisierung Da ein zweidim. Feld aus einem Feld eindim. Felder besteht, wird es auch entsprechend durch in geschweiften Klammern eingeschlossenen Listen initialisiert (Z. 6-9). WS 2001/02 Programmierkurs C++ Seite 82

3 Die Speicherbelegung der zweidimensionalen Matrix kann man sich mit folgendem Programm verdeutlichen: a[0][0] a[1][0] a[1][2] 1 # i n c l u d e < i o s t r e a m > 2 using namespace s t d ; 3 i n t main ( ) 4 { 5 i n t a [ 2 ] [ 3 ] = { { 1, 2, 3 }, { 4, 5, 6 } } ; 6 i n t c = 0 ; 7 8 / / Z e i g e r a u f den Anfang des F e l d e s 9 i n t p = & a [ 0 ] [ 0 ] ; while ( c + + < 6 ) { 12 c o u t < < p < < " " ; 13 p ++; 14 } 15 c o u t < < e n d l ; 16 } Programmausgabe: Dynamische mehrdimensionale Felder Wie im eindimensionalen Fall lassen sich auch mehrdimensionale Felder dynmaisch anlegen: Jeder Eintrag des äußeren Feldes ist ein Feld, kann also als Zeiger realisiert werden. WS 2001/02 Programmierkurs C++ Seite 83

4 Beispiel: Zweidimensionale m n Matrix Anforderung: int m,n; int **matrix; // Zeiger auf Zeiger // Feld der Groesse m (Zeilen) matrix = new int* [m]; // Jede Zeile ist ein Feld // der Groesse n for (int i=0;i<m;i++) matrix[i] = new int[n]; m-1 Freigabe: // Freigabe erfolgt rueckwaerts for (int i=0;i<m;i++) delete [] matrix[i]; delete [] matrix; n-1 WS 2001/02 Programmierkurs C++ Seite 84

5 Unterscheide: int a[10][20]; zweidimensionales Feld Für a werden 200 int Werte im Speicher bereitgestellt. Über die Rechteckformel 20 zeile + spalte wird auf das Element a[zeile][spalte] zugegriffen. Die Felder jeder Zeile haben die feste Länge von 20 Elementen. int *b[10]; Feld von Zeigern Für b wird nur Speicher für 10 Zeiger reserviert. Die Zeiger werden nicht initialisiert, sondern dies muß explizit erfolgen. Um eine zweidimensionales Feld zu erhalten, muß der Speicher des Feldes jeder Zeile explizit angefordert werden (s. letztes Beispiel). Die Felder jeder Zeile dürfen unterschiedlich lang sein (z.b. Zeichenketten unterschiedlicher Länge). Das Beispiel von S.83 funktioniert dann so nicht mehr. WS 2001/02 Programmierkurs C++ Seite 85

6 6.6 Übergabe an eine Funktion Beispiel 6: Berechnung einer Determinanten 1 # i n c l u d e < i o s t r e a m > 2 using namespace s t d ; 3 i n t det_2x2 ( i n t m[ 2 ] [ 2 ] ) 4 { 5 return m[ 0 ] [ 0 ] m[ 1 ] [ 1 ] m[ 0 ] [ 1 ] m[ 1 ] [ 0 ] ; 6 } 7 8 i n t main ( ) 9 { 10 i n t a [ 2 ] [ 2 ] = { { 4, 2 }, { 3, 1 } } ; 11 c o u t < < a [ 0 ] [ 0 ] < < " " << a [ 0 ] [ 1 ] < < e n d l ; 12 c o u t < < a [ 1 ] [ 0 ] < < " " << a [ 1 ] [ 1 ] < < e n d l ; 13 c o u t < < " D e t e r m i n a n t e = " << det_2x2 ( a ) < < e n d l ; 14 } Programmausgabe: Determinante = -2 Bemerkung: Man hätte auch int m[][2] an die Funktion übergeben können. Bei einem eindimensionalen Feld ist die Längenangabe des Feldes nicht notwendig. Nebenbemerkung: Da hier ein Zeiger auf die Anfangsadresse der Matrix m an die Funktion übergeben wird, ist diese innerhalb der Funktion det_2x2 veränderbar. WS 2001/02 Programmierkurs C++ Seite 86

7 7 Funktionen Folgende Probleme können auftreten, wenn man versucht Programme ohne Funktionen zu schreiben: Übersichtlichkeit: Wie strukturiert man z.b Zeilen Code? Redundanz: Das gleiche Problem muß oft an verschiedene Stellen im Programm gelöst werden. Codegröße: Wiederholen des Sourcecodes bläht die Programme auf. Konsistenz: Wird ein Verfahren geändert, so muß die Änderung an vielen Stellen im Code vorgenommen werden. Datenkapselung: Um versehentliche Änderungen von Daten zu vermeiden, sollten alle Programmteile nur auf Daten zurückgreifen können, die sie auch benötigen. Arbeitsorganisation: Wie erreicht man, daß mehrere Programmierer gleichzeitig arbeiten können, ohne sich gegenseitig die Programmänderungen zu überschreiben? WS 2001/02 Programmierkurs C++ Seite 87

8 Aus diesem Grund wird das Programm in voneinander unabhängige Teile, sogenannte Unterprogramme bzw. Funktionen zerlegt. Eine Funktion soll ein kleines, wohldefiniertes Teilproblem der Hauptaufgabe lösen. Eigenschaften von Funktionen Jedes Programm muß eine Funktion main enthalten, die beim Programmstart automatisch ausgeführt wird. Jede Funktion kann als Teil des Programmablaufs andere Funktionen aufrufen. Jede Funktion kann auch sich selbst aufrufen (Rekursion). Beim Aufruf einer Funktion können dieser Daten (Parameter) übergeben werden. Anschließend gibt die rufende Funktion die Ablaufkontrolle an die aufgerufene Funktion ab. Ist die gerufene Funktion beendet, so übergibt sie der rufenden Funktion einen Rückgabewert, den die rufende Funktion verwenden kann. anschließend macht die rufende Funktion an der Stelle nach Aufruf der Funktion weiter. WS 2001/02 Programmierkurs C++ Seite 88

9 Eine Funktion muß deklariert und definiert werden. Wird die Deklaration weggelassen, gilt die Definition als Deklaration. Syntax Deklaration: <Typ R> <Name> (<Typ P1> <Name P1>,...); Dabei ist <Typ R> der Typ des Rückgabewertes. Wird kein Wert zurückgegeben, so lautet der Typ void. <Name> bezeichnet den Namen unter dem die Funktion im Programm bekannt ist. Es gelten die für Variablen bekannten Regeln. <Typ P1> ist der Typ des ersten Parameters <Name P1>. Weitere Parameter können durch Komma getrennt angegeben werden. Werden keine Parameter übergeben, bleibt die Klammer leer. Die Deklaration einer Funktion bezeichnet man auch als Prototyp bzw. Funktionskopf. WS 2001/02 Programmierkurs C++ Seite 89

10 Syntax Definition: <Typ R> <Name> (<Typ P1> <Name P1>,...) { < Programmcode > } Die Definition muß mit der Deklaration in allen obengenannten Punkten übereinstimmen. Das abschließende Semikolon wird weggelassen. Dafür folgt der Programmcode, den die Funktion ausführen soll, welcher in geschweiften Klammern eingeschlossen wird. Dieser Block wird Funktionsrumpf genannt. Beispiel: 1 i n t max ( i n t a, i n t b ) ; / / D e k l a r a t i o n 2 3 i n t main ( ) 4 { 5 i n t m = max ( 4 2, ) ; 6 } 7 8 i n t max ( i n t a, i n t b ) / / D e f i n i t i o n 9 { 10 i f ( a < b ) return b ; 11 e l s e return a ; 12 } WS 2001/02 Programmierkurs C++ Seite 90

11 7.1 Parameterübergabe Grundsätzlich gibt es zwei Typen von Parametern, die an Funktionen übergeben werden können: Eingabeparameter sind Parameter, die der aufgerufenen Funktion nur zum Lesen übergeben werden. Änderungen an diesen Variablen werden nicht an den aufrufenden Block zurückgeliefert. Ausgabeparameter können von der gerufenen Funktion verändert und zurückgeliefert werden. Diese Unterscheidung macht man, um Daten besser kapseln zu können. Eine Funktion muß ausdrücklich dazu befugt werden, Daten zu ändern. Hinweis: Man sollte die Zahl der Parameter, die Werte geändert zurückliefern können, möglichst gering halten. Hier schleichen sich schnell Fehler ein. WS 2001/02 Programmierkurs C++ Seite 91

12 Call-By-Value (Eingabeparameter) Hierbei erhält die aufgerufene Funktion eine lokale Kopie der Variable, die übergeben wurde. Änderungen wirken sich nur auf die Kopie aus, nicht auf die Daten um rufenden Programm. Die Syntax für Eingabeparameter innerhalb der Funktionsklammern ist identisch mit den Variablendeklarationen: Eigenschaften: <Datentyp> <Variablenname> Aufruf mit Konstanten ist möglich. Aufruf mit Ausdrücken ist möglich. Parameter kann ohne Rücksicht auf die aufrufende Funktion als Variable verwendet werden. WS 2001/02 Programmierkurs C++ Seite 92

13 Call-By-Reference (Ausgabeparameter) Hier erhält die Funktion eine Referenz auf die Variablen im rufenden Programm. Zugriff auf die Referenz bedeutet gleichzeitig einen Zugriff auf die Originaldaten und damit die Möglichkeit der Änderung. Syntax: <Datentyp> &<Variablenname> Dem Variablennamen wird ein &-Zeichen vorangestellt. Dieses Zeichen sagt dem Compiler, daß es sich nicht um eine normale Variable handelt, sondern nur um einen Verweis auf eine andere Variable. Beispiel: 1 void f ( i n t &x ) 2 { 3 x = ; 4 } Eigenschaften: Aufruf mit Konstanten und Ausdrücken ist nicht möglich. Änderungen am Parameter werden an die rufende Funktion weitergegeben. WS 2001/02 Programmierkurs C++ Seite 93

14 Konstante Referenzen Damit Daten bei der Übergabe nicht kopiert werden, ein Ändern der Daten aber dennoch verhindert wird, kann man Parameter wie beim Call-By-Referenz übergeben, aber Schreibzugriffe unterbinden. Dies kann man dadurch erreichen, daß die Referenz mit dem Schlüsselwort const als nicht veränderbar gekennzeichnet wird. Syntax: const <Datentyp> &<Variablenname> Alle Versuche solche Parameter zu ändern werden schon vom Compiler verhindert. Es ist deshalb nicht wie bei normalen Eingabeparametern möglich, die Parameter als normale Variablen zu missbrauchen. Beispiel: 1 void f ( c o n s t i n t &x ) 2 { 3 x = ; / / F e h l e r! 4 } WS 2001/02 Programmierkurs C++ Seite 94

15 Weitere Verwendung von Referenzen Referenzen können nicht nur in Funktionsköpfen verwendet werden, sondern können überall im Programmcode auftauchen. Sie müssen jedoch immer gleichzeitig mit der Deklaration auch definiert werden: Syntax: <Datentyp> &<Name> = <Variable>; Die Angabe einer Variable zur Initialisierung ist nicht optional sondern zwingend notwendig. Jede Änderung der Referenz zieht auch eine Änderung der Variable nach sich und umgekehrt. Beispiel: 1 # i n c l u d e < i o s t r e a m > 2 using namespace s t d ; 3 4 i n t main ( ) 5 { 6 i n t z a h l = 4 2 ; 7 i n t & r e f = z a h l ; 8 9 r e f = ; / / Veraendern d e r R e f e r e n z ; 10 c o u t < < z a h l < < ", " << r e f < < e n d l ; / / , } WS 2001/02 Programmierkurs C++ Seite 95

16 1 # i n c l u d e < i o s t r e a m > 2 using namespace s t d ; 3 4 / / F u n k t i o n s d e k l a r a t i o n e n 5 void f1 ( i n t v a r ) ; / / C a l l by Value 6 void f2 ( i n t & v a r ) ; / / C a l l by R e f e r e n c e 7 void f3 ( c o n s t i n t & v a r ) ; / / K o n s t a n t e r CbR 8 9 i n t main ( ) 10 { 11 i n t z a h l = 4 2 ; c o u t < < z a h l < < e n d l ; / / Ausgabe : f1 ( z a h l ) ; 16 c o u t < < z a h l < < e n d l ; / / Ausgabe : f2 ( z a h l ) ; 19 c o u t < < z a h l < < e n d l ; / / Ausgabe : } / / D e f i n i t i o n e n 23 void f1 ( i n t v a r ) 24 { 25 v a r = ; 26 } void f2 ( i n t & v a r ) 29 { 30 v a r = ; 31 } void f3 ( c o n s t i n t & v a r ) 34 { 35 v a r = ; / / F e h l e r! 36 } WS 2001/02 Programmierkurs C++ Seite 96

17 Eine andere Möglichkeit, Daten des aufrufenden Blockes in einer Funktion zu ändern besteht darin, den Zeiger auf ein Objekt per Call-by-Value zu übergeben. Die Daten auf die der Zeiger zeigt lassen sich dann ändern. Vorteil: Durch die unterschiedliche Syntax beim Zugriff auf die Daten sieht man sofort, ob Originaldaten verändert werden. Nachteil: Durch den komplizierte Umgang mit Zeigern schleichen sich leichter Fehler ein. 1 void minmax ( i n t f e l d [ ], 2 unsigned s i z e, 3 i n t &Min, 4 i n t &Max ) 5 { 6 Min = Max = f e l d [ 0 ] ; 7 8 f o r ( i n t i = 0 ; i < s i z e ; i ++) 9 { 10 i f ( Min > f e l d [ i ] ) 11 Min = f e l d [ i ] ; 12 i f ( Max < f e l d [ i ] ) 13 Max = f e l d [ i ] ; 14 } 15 } i n t main ( ) 18 { 19 i n t min, max ; 20 i n t f e l d [ 1 0 ] ; 21 / / minmax ( f e l d, 1 0, min, max ) ; 23 } 1 void minmax ( i n t f e l d [ ], 2 unsigned s i z e, 3 i n t Min, 4 i n t Max ) 5 { 6 Min = Max = f e l d [ 0 ] ; 7 8 f o r ( i n t i = 0 ; i < s i z e ; i ++) 9 { 10 i f ( Min > f e l d [ i ] ) 11 Min = f e l d [ i ] ; 12 i f ( Max < f e l d [ i ] ) 13 Max = f e l d [ i ] ; 14 } 15 } i n t main ( ) 18 { 19 i n t min, max ; 20 i n t f e l d [ 1 0 ] ; 21 / / minmax ( f e l d, 1 0, & min, & max ) ; 23 } WS 2001/02 Programmierkurs C++ Seite 97

18 7.2 Variable Parameteranzahl und Standardwerte Eine Funktion kann mit weniger Parametern aufgerufen werden, als in ihrer Definition angegeben wurden. Vorraussetzung hierfür ist, daß in der Definition der Funktion Standardwerte für die weggelassenen Parameter definiert werden. Beispiel: 1 void i n c ( i n t & z a h l, i n t add = 1 ) 2 { 3 z a h l + = add ; 4 } 5 6 i n t main ( ) 7 { 8 i n t z a h l = 4 2 ; 9 10 i n c ( z a h l, 1 0 ) ; / / z a h l = = 5 2 ; 11 i n c ( z a h l ) ; / / Zahl = = } WS 2001/02 Programmierkurs C++ Seite 98

19 Bemerkungen Sinn dieses Vorgehens ist nicht eine kürzere Schreibweise, sondern die Möglichkeit Funktionen um Parameter zu erweitern, ohne daß man alle Aufrufe im Programm ändern muß. Werden Deklaration und Definition getrennt, so dürfen die Standardwerte nur im Prototypen angebeben werden. In der Parameterliste einer Funktion müssen die Parameter mit Standardwerten am Ende stehen. Beispiel: 1 / / OK: 2 void f1 ( i n t z a h l 1, i n t z a h l 2, i n t z a h l 3 = 0 ) ; 3 void f2 ( i n t z a h l 1 = 0, i n t z a h l 2 = 0, i n t z a h l 3 = 0 ) ; 4 5 / / F a l s c h. P a r a m e t e r mit S t a n d a r d w e r t e n 6 / / muessen am Ende s t e h e n 7 void f3 ( i n t z a h l 1 = 0, i n t z a h l 2, i n t z a h l 3 ) ; 8 9 / / F a l s c h : Bei Trennung von D e k l a r a t i o n und D e f i n i t i o n 10 / / d u e r f e n d i e S t a n d a r t w e r t e nur i n den P r o t o t y p e n 11 void f4 ( i n t z a h l 1, i n t z a h l 2, i n t z a h l 3 = 0 ) ; 12 / / void f4 ( i n t z a h l 1, i n t z a h l 2, i n t z a h l 3 = 0 ) 14 { 15 / / } WS 2001/02 Programmierkurs C++ Seite 99

20 7.3 Überladen von Funktionen In C++ kann man mehrere Funktionen mit gleichen Namen definieren. Vorraussetzung hierbei ist, daß sie sich in ihrer Parameterliste unterscheiden. Die Reihenfolge und Art der Parameter nennt man auch Signatur der Funktion. Mehrfach vergebene Funktionsnamen darf es nur für unterschiedliche Signaturen geben. Beispiel: 1 i n t max ( i n t x, i n t y ) 2 { 3 i f ( x < y ) return y ; 4 e l s e return x ; 5 } 6 7 i n t max ( double x, double y ) 8 { 9 i f ( x < y ) return y ; 10 e l s e return x ; 11 } i n t main ( ) 14 { 15 i n t imax = max ( 4 2, ) ; / / max ( i n t, i n t ) 16 double dmax = max ( , ) ; / / max ( d o u b l e, d o u b l e ) 17 double dmax = max ( 4 2, ) ; / / max ( d o u b l e, d o u b l e ) 18 } WS 2001/02 Programmierkurs C++ Seite 100

21 7.4 Rekursion Beispiel (Schneeflockenkurve): Eine Schneeflockenkurve ist ein geschlossener Polygonzug, welcher nach folgendem Muster erstellt wird: 1. Starte mit einem gleichseitigem Dreieck 2. Ersetze jedes Geradenstück durch folgende vier Geraden, die jeweils ein Drittel der Länge der Originalkante haben: Die Anzahl der Ersetzungsschritte über alle Geraden wird als Rekursionstiefe bezeichnet. Folgende Bilder zeigen die Schneeflockenkurve nach den Rekursionstiefen eins bis vier. Um eine Kurve zu zeichnen muß die jeweils vorangegangene Kurve berechnet werden ohne gemalt zu werden. WS 2001/02 Programmierkurs C++ Seite 101

22 Definition: Eine Rekursion ist also eine Funktion, die sich selber wieder aufruft. Beispiel (Fakultät): Die Fakultät n! = 1 2 n lässt sich alternativ auch folgendermaßen rekursiv berechnen: n! = n (n 1)! für n > 1 und n! = 1 für n = 1. 1 i n t f a k u l t a e t ( unsigned i n t n ) 2 { 3 i f ( n > 1 ) 4 return n f a k u l t a e t ( n 1 ) ; 5 e l s e 6 return 1 ; 7 } Wichtig bei Rekursionen Es muß eine sogenannte Abbruchbedingung geben, d.h. bei bestimmten Eingabeparametern darf die Funktion sich nicht selbst wieder aufrufen. Diese Abbruchbedingung muß für jeden ursprünglichen Eingabeparameter erreicht werden. Die lokalen Daten der Funktion (Parameter, lokale Variablen) werden für jeden Funktionsaufruf getrennt auf einem sogenannten Stack gespeichert (s. später). WS 2001/02 Programmierkurs C++ Seite 102

23 Man kann rekursiven Funktionen auch nichtrekursiv schreiben. Dies ist jedoch oft mit erhöhtem Programmieraufwand verbunden. Eine Rekursion kann auch indirekt über mehrere Funktionen stattfinden (Funktion f1 ruft Funktion f2 auf, welche wiederum f1 aufruft). Beispiel (Fibonacci-Zahlen): Die Fibonacci-Zahlen lassen sich für n N folgendermaßen berechnen: fib(n) = fib(n 1) + fib(n 2) n > 1 1 sonst Die Funktion lässt sich wie folgt implementieren: 1 unsigned f i b ( unsigned n ) 2 { 3 i f ( n > 1 ) 4 return f i b ( n 1 ) + f i b ( n 2 ) ; 5 e l s e 6 return 1 ; 7 } WS 2001/02 Programmierkurs C++ Seite 103

24 Zur Verdeutlichung ein Diagramm der nötigen Aufrufe der Funktion fib für die Berechnung von fib(5): fib(5) fib(4) fib(3) fib(3) fib(2) fib(2) fib(1) fib(2) fib(1) fib(1) fib(0) fib(1) fib(0) fib(1) fib(0) Anmerkungen: Die hohe Anzahl von Funktionsaufrufen verursacht hohe Kosten (Speicher, Rechenzeit) Viele Werte werden mehrfach berechnet, z.b. fib(2) WS 2001/02 Programmierkurs C++ Seite 104

25 8 Unterschiedliche Speichermodelle Es existieren drei unterschiedliche Speicherbereiche, in denen ein Programm seine Daten ablegen kann: Stack, Heap und einen statischen Speicherbereich. Von diesen dreien haben wir die ersten beiden schon kennengelernt. Stack Der Stack (Stapel) ist ein Speicherbereich, der nach dem LIFO-Prinzip (Last-In-First-Out) funktioniert. Speicher der zuletzt angefordert wurde, wird zuerst freigegeben. Beim Funktionsaufruf werden alle Parameter und lokale Variablen auf dem Stack abgelegt. Beim Verlassen einer Funktion werden die Daten vom Stack gelöscht. Lokale Variablen werden auf dem Stack beim Betreten eines Blocks angelegt. Bei jedem Blockanfang und Funktionsaufruf wird der Stack vergrößert. Bei jedem Verlassen von Blöcken und Funktionen wird er verkleinert. WS 2001/02 Programmierkurs C++ Seite 105

26 Vorteile des Stacks: Der Speicher weist keine Lücken auf (Einfache Verwaltung und daher schnell) Einfache Verwaltung bei Funktionsaufrufen (die Daten liegen immer oben auf dem Stack) Da der Stack jedoch in seiner Größe beschränkt ist und kein dynamisches Erzeugen von Variablen erlaubt, werden andere Speichermodelle benötigt. Heap Der Heap ist ungeordnet. Neue Speicherbereiche werden dort angelegt, die Objekte am Stück hineinpassen. Alle mit dem new-operator angeforderten Variablen liegen im Heap. Durch Löschen mit delete fragmentiert der Heap. Das macht die Speicherverwaltung komplizierter und langsamer als beim Stack. Ständiges Anlegen und Löschen von Speicher ist zeitaufwendig. Der Heap steht vollständig unter Kontrolle des Benutzers. Er wird nicht automatisch aufgeräumt. WS 2001/02 Programmierkurs C++ Seite 106

27 Statischer Speicherbereich Der bisher behandelte Speicher ist dynamisch, d.h. er wird erst zur Laufzeit auf Stack oder Heap angelegt. Im Gegensatz dazu kann man Speicher als statisch deklarieren. Deklaration/Definition: static <Datentyp> &<Name> = <Wert>; oder static <Datentyp> &<Name>; static-variablen werden nicht auf dem Stack angelegt. Von ihnen gibt es nur eine Kopie im Speicher, die während des gesamten Programmdurchlaufs existiert. Statische Variablen sind wie normale Variablen nur in ihrem Block gültig. Die Initialisierung während der Deklaration wird nur einmal durchgeführt. Wird der Block verlassen, so behält die Variable ihren Wert auch bis zum nächsten Betreten bei. WS 2001/02 Programmierkurs C++ Seite 107

28 Beispiel (Zählen der Funktionsaufrufe für die Fibonacci-Funktion): 1 # i n c l u d e < i o s t r e a m > 2 using namespace s t d ; 3 4 unsigned f i b ( unsigned n ) 5 { 6 s t a t i c unsigned c o u n t = 0 ; 7 c o u t < < " A ufruf Nr. " << ++ c o u n t < < e n d l ; 8 i f ( n > 1 ) 9 return f i b ( n 1 ) + f i b ( n 2 ) ; 10 e l s e 11 return 1 ; 12 } i n t main ( ) 15 { 16 unsigned n, f ; 17 c i n > > n ; 18 f = f i b ( n ) ; 19 c o u t < < " f i b (" << n < < " ) = " << f < < e n d l ; 20 } liefert bei Eingabe von 5 die Ausgabe Aufruf Nr. 1 Aufruf Nr Aufruf Nr. 15 fib (5)=8 WS 2001/02 Programmierkurs C++ Seite 108

Unterprogramme, Pointer und die Übergabe von Arrays

Unterprogramme, Pointer und die Übergabe von Arrays Unterprogramme, Pointer und die Übergabe von Arrays Unterprogramme Wie schon im Abschnitt über Funktionen erwähnt, versteht man unter einem Unterprogramm im engeren Sinn eine Prozedur, welche die Werte

Mehr

Objektorientiertes Programmieren für Ingenieure

Objektorientiertes Programmieren für Ingenieure Uwe Probst Objektorientiertes Programmieren für Ingenieure Anwendungen und Beispiele in C++ 18 2 Von C zu C++ 2.2.2 Referenzen und Funktionen Referenzen als Funktionsparameter Liefert eine Funktion einen

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

Grundlagen der Programmiersprache C++

Grundlagen der Programmiersprache C++ / TU Braunschweig Grundlagen der Programmiersprache C++ Um den Studierenden den Einstieg in die FE-Programmierung zu erleichtern werden die wesentlichen Elemente eines C-Programmes beschrieben, soweit

Mehr

Eine Einführung in C-Funktionen

Eine Einführung in C-Funktionen Eine Einführung in C-Funktionen CGK-Proseminar 2014 Philip Gawehn 04.07.2014, Hamburg Inhaltsverzeichnis 1 Einleitung 2 2 Grundlagen 2 2.1 Der Aufbau einer Funktion....................... 2 2.2 Schlüsselwörter.............................

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

Java Kurs für Anfänger Einheit 5 Methoden

Java Kurs für Anfänger Einheit 5 Methoden Java Kurs für Anfänger Einheit 5 Methoden Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 22. Juni 2009 Inhaltsverzeichnis Methoden

Mehr

Übersicht. Einführung in die Programmierung. main. main. main. main. Speicherverwaltung. Definition nach ANSI C:

Übersicht. Einführung in die Programmierung. main. main. main. main. Speicherverwaltung. Definition nach ANSI C: Übersicht Einführung in die Programmierung Bachelor of Science die -Funktion Prof. Dr. Rethmann Fachbereich Elektrotechnik und Informatik Hochschule Niederrhein WS 009/0 Einführung in die Programmierung

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 19. November 2015 Gültigkeitsbereich (Scope) von Variablen { int m; {

Mehr

Dr. Monika Meiler. Inhalt

Dr. Monika Meiler. Inhalt Inhalt 5 Referenzdatentypen - Felder... 5-2 5.1 Eindimensionale Felder - Vektoren... 5-3 5.1.1 Vereinbarung... 5-3 5.1.2 Referenzen sind keine Felder... 5-4 5.1.3 Kopieren eindimensionaler Felder... 5-6

Mehr

Objektorientierte Programmierung. Objektorientierte Programmierung. Klasse. Objekt. Beispiel: Sportfest1. Methode. Eine Einführung mit BlueJ

Objektorientierte Programmierung. Objektorientierte Programmierung. Klasse. Objekt. Beispiel: Sportfest1. Methode. Eine Einführung mit BlueJ Objektorientierte Programmierung Objektorientierte Programmierung Eine Einführung mit BlueJ stellt die Daten, ihre Struktur und ihre Beziehungen zueinander in den Vordergrund. Weniger im Blickpunkt: die

Mehr

Es gibt zwei verschiedene Arten, wie Programme auf dem Rechner ausgeführt werden:

Es gibt zwei verschiedene Arten, wie Programme auf dem Rechner ausgeführt werden: 3 Grundlagen 3.1 Starten eines C++ Programms Es gibt zwei verschiedene Arten, wie Programme auf dem Rechner ausgeführt werden: 1. Programme, die vom Interpreter der Programmiersprache Zeile für Zeile interpretiert

Mehr

Funktionen in PHP 1/7

Funktionen in PHP 1/7 Funktionen in PHP 1/7 Vordefinierte Funktionen in PHP oder vom Entwickler geschriebene Funktionen bringen folgende Vorteile: gleiche Vorgänge müssen nur einmal beschrieben und können beliebig oft ausgeführt

Mehr

Java Einführung Methoden in Klassen

Java Einführung Methoden in Klassen Java Einführung Methoden in Klassen Lehrziel der Einheit Methoden Signatur (=Deklaration) einer Methode Zugriff/Sichtbarkeit Rückgabewerte Parameter Aufruf von Methoden (Nachrichten) Information Hiding

Mehr

Informatik. Studiengang Chemische Technologie. Michael Roth WS 2012/2013. michael.roth@h-da.de. Hochschule Darmstadt -Fachbereich Informatik-

Informatik. Studiengang Chemische Technologie. Michael Roth WS 2012/2013. michael.roth@h-da.de. Hochschule Darmstadt -Fachbereich Informatik- Informatik Studiengang Chemische Technologie Michael Roth michael.roth@h-da.de Hochschule Darmstadt -Fachbereich Informatik- WS 2012/2013 Inhalt Teil VII Einstieg in Java I Michael Roth (h_da) Informatik

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

620.900 Propädeutikum zur Programmierung

620.900 Propädeutikum zur Programmierung 620.900 Propädeutikum zur Programmierung Andreas Bollin Institute für Informatik Systeme Universität Klagenfurt Andreas.Bollin@uni-klu.ac.at Tel: 0463 / 2700-3516 Arrays Wiederholung (1/5) Array = GEORDNETE

Mehr

Java Virtual Machine (JVM) Bytecode

Java Virtual Machine (JVM) Bytecode Java Virtual Machine (JVM) durch Java-Interpreter (java) realisiert abstrakte Maschine = Softwareschicht zwischen Anwendung und Betriebssystem verantwortlich für Laden von Klassen, Ausführen des Bytecodes,

Mehr

Inhaltsverzeichnis. Grundbegriffe der C-Programmierung Für den HI-TECH C-Compiler

Inhaltsverzeichnis. Grundbegriffe der C-Programmierung Für den HI-TECH C-Compiler Inhaltsverzeichnis Grundbegriffe der C-Programmierung 1. Grundsätzliches... 2 1.1 Darstellung von Werten... 2 1.1.1 Dezimale Zahlendarstellung... 2 1.1.2 Binäre Zahlendarstellung... 3 1.1.3 Hexadezimale

Mehr

Dr. Monika Meiler. Inhalt

Dr. Monika Meiler. Inhalt Inhalt 11 Dynamische Feldvereinbarung... 11-2 11.1 Dynamische Vereinbarung von Vektoren... 11-3 11.2 Dynamische Vereinbarung von Matrizen... 11-5 11.3 Die Kommandozeile... 11-8 Propädeutikum 11-1/8 11

Mehr

FHZ. K20 Arrays. Lernziele. Hochschule Technik+Architektur Luzern Abteilung Informatik, Fach Programmieren. Inhalt

FHZ. K20 Arrays. Lernziele. Hochschule Technik+Architektur Luzern Abteilung Informatik, Fach Programmieren. Inhalt Inhalt 1. Einführung 2. Array-Komponenten von elementaren Datentypen 3. Array-Komponenten sind Objekte 4. Array als Parameter 5. Kopieren von Arrays 6. Beispiel 7. Vector versus Array Folie 1 Lernziele

Mehr

Erwin Grüner 15.12.2005

Erwin Grüner 15.12.2005 FB Psychologie Uni Marburg 15.12.2005 Themenübersicht Mit Hilfe der Funktionen runif(), rnorm() usw. kann man (Pseudo-) erzeugen. Darüber hinaus gibt es in R noch zwei weitere interessante Zufallsfunktionen:

Mehr

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny

Grundlagen der Informatik. Prof. Dr. Stefan Enderle NTA Isny Grundlagen der Informatik Prof. Dr. Stefan Enderle NTA Isny 2 Datenstrukturen 2.1 Einführung Syntax: Definition einer formalen Grammatik, um Regeln einer formalen Sprache (Programmiersprache) festzulegen.

Mehr

Software Engineering Klassendiagramme Einführung

Software Engineering Klassendiagramme Einführung Software Engineering Klassendiagramme Einführung Prof. Adrian A. Müller, PMP, PSM 1, CSM Fachbereich Informatik und Mikrosystemtechnik 1 Aufgabe Erstellen Sie eine Klasse Person in Java. Jede Person verfügt

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, Ausdrücke und Anweisungen Kontrollstrukturen (Steuerfluss)

Mehr

Zusammengesetzte Datentypen -- Arrays und Strukturen

Zusammengesetzte Datentypen -- Arrays und Strukturen Zusammengesetzte Datentypen -- und Strukturen Informatik für Elektrotechnik und Informationstechnik Benedict Reuschling benedict.reuschling@h-da.de Hochschule Darmstadt Fachbereich Informatik WS 2013/14

Mehr

Einführung in die Programmiersprache C

Einführung in die Programmiersprache C Einführung in die Programmiersprache C Marcel Arndt arndt@ins.uni-bonn.de Institut für Numerische Simulation Universität Bonn Der Anfang Ein einfaches Programm, das Hello World! ausgibt: #include

Mehr

Die Programmiersprache C

Die Programmiersprache C Die Programmiersprache C höhere Programmiersprache (mit einigen Assembler-ähnlichen Konstrukten) gut verständliche Kommandos muss von Compiler in maschinenlesbaren Code (Binärdatei) übersetzt werden universell,

Mehr

Einführung in die C-Programmierung

Einführung in die C-Programmierung Einführung in die C-Programmierung Warum C? Sehr stark verbreitet (Praxisnähe) Höhere Programmiersprache Objektorientierte Erweiterung: C++ Aber auch hardwarenahe Programmierung möglich (z.b. Mikrokontroller).

Mehr

3 Objektorientierte Konzepte in Java

3 Objektorientierte Konzepte in Java 3 Objektorientierte Konzepte in Java 3.1 Klassendeklarationen Fragen an die Klassendeklaration: Wie heißt die Klasse? Wer darf auf die Klasse und ihre Attribute/Methoden zugreifen? Ist die Klasse eine

Mehr

Einführung in die Java- Programmierung

Einführung in die Java- Programmierung Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags Pommes... Praktikum A 230 C 207 (Madeleine) F 112 F 113 (Kevin) E

Mehr

5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu Daten Makro + VBA effektiv 5 DATEN 5.1. Variablen Variablen können beliebige Werte zugewiesen und im Gegensatz zu Konstanten jederzeit im Programm verändert werden. Als Variablen können beliebige Zeichenketten

Mehr

Fakultät Angewandte Informatik Lehrprofessur für Informatik 23.01.2012

Fakultät Angewandte Informatik Lehrprofessur für Informatik 23.01.2012 WS 2011/2012 Fakultät Angewandte Informatik Lehrprofessur für Informatik 23.01.2012 Prof. Dr. Robert Lorenz Musterlösung zur Vorlesung Informatik I, Extrablatt zu komplexen Datenstrukturen Aufgabe 45 **

Mehr

Programmieren. 10. Tutorium 4./ 5. Übungsblatt Referenzen

Programmieren. 10. Tutorium 4./ 5. Übungsblatt Referenzen Programmieren 10. Tutorium 4./ 5. Übungsblatt Inhalt I. Übungsblatt 4 II. III. - Rückgabe und Besprechung - Vorbereitung auf Wiederholung/ Nachtrag - Operatorpräzedenzen IV. Übungsblatt 5 - Vorstellung

Mehr

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

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java: Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen

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

Probeklausur: Programmierung WS04/05

Probeklausur: Programmierung WS04/05 Probeklausur: Programmierung WS04/05 Name: Hinweise zur Bearbeitung Nimm Dir für diese Klausur ausreichend Zeit, und sorge dafür, dass Du nicht gestört wirst. Die Klausur ist für 90 Minuten angesetzt,

Mehr

Blöcke und Grand Central Dispatch

Blöcke und Grand Central Dispatch Blöcke und Grand Central Dispatch Multithreading ist ein Thema, mit dem sich alle Programmierer bei der modernen Anwendungsentwicklung beschäftigen müssen. Selbst wenn Sie glauben, dass Ihre Anwendung

Mehr

C++ - Funktionen und mehr. Kerstin Gößner und Ralf Wondratschek

C++ - Funktionen und mehr. Kerstin Gößner und Ralf Wondratschek C++ - Funktionen und mehr Kerstin Gößner und Ralf Wondratschek Übersicht Deklaration, Definition und Initialisierung Variablen- und Konstantendeklaration Funktionsaufrufe und rückgabewerte Technische Grundlage

Mehr

ANSI C. Grundlagen der Programmierung. Ricardo Hernández García. 3. Ausgabe, 2. Aktualisierung, Dezember 2013 CANSI2

ANSI C. Grundlagen der Programmierung. Ricardo Hernández García. 3. Ausgabe, 2. Aktualisierung, Dezember 2013 CANSI2 ANSI C Ricardo Hernández García 3. Ausgabe, 2. Aktualisierung, Dezember 2013 Grundlagen der Programmierung CANSI2 2 ANSI C - Grundlagen der Programmierung 2.4 Vom Quellcode zum Maschinenprogramm Das folgende

Mehr

Einheit Variablen in der Programmiersprache C Variablen-Modell, Variablen-Vereinbarungen

Einheit Variablen in der Programmiersprache C Variablen-Modell, Variablen-Vereinbarungen Einheit Variablen in der Programmiersprache C Variablen-Modell, Variablen-Vereinbarungen Kurs C/C++ Programmierung, WS 2008/2009 Dipl.Inform. R. Spurk Arbeitsgruppe Programmierung FR 6.2 Informatik R.

Mehr

Java Kurs für Anfänger Einheit 4 Klassen und Objekte

Java Kurs für Anfänger Einheit 4 Klassen und Objekte Java Kurs für Anfänger Einheit 4 Klassen und Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 13. Juni 2009 Inhaltsverzeichnis klasse

Mehr

Tag 9: Datenstrukturen

Tag 9: Datenstrukturen Tag 9: Datenstrukturen A) Datenstrukturen B) Cell Arrays C) Anwendungsbeispiel: Stimulation in einem psychophysikalischen Experiment A) Datenstrukturen Wenn man komplizierte Datenmengen verwalten möchte,

Mehr

5. Unterprogrammtechnik/Module

5. Unterprogrammtechnik/Module 5. Unterprogrammtechnik/Module Unterprogramm/Modul: separate Programmeinheit, mit Anweisungen, die eine bestimmte Aufgabe erfüllen bekommt i.a. Argumente (Werte, Informationen) vom aufrufenden Programm

Mehr

Programmieren in C++ Arrays, Strings und Zeigerarithmetik

Programmieren in C++ Arrays, Strings und Zeigerarithmetik Programmieren in C++ Arrays, Strings und Zeigerarithmetik Inhalt Eindimensionale C-Arrays C-Strings und Strings (Mehrdimensionale C-Arrays) Arrays und Vektoren (C++) Unique Pointers (C++11) Zeigerarithmetik

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Konstruktor, Statische Methoden Packages Prof. Dr. Stefan Fischer Institut für Telematik, Universität zu Lübeck http://www.itm.uni-luebeck.de/people/fischer Initialisierung von Datenstrukturen

Mehr

PIWIN 1 Übung Blatt 5

PIWIN 1 Übung Blatt 5 Fakultät für Informatik Wintersemester 2008 André Gronemeier, LS 2, OH 14 Raum 307, andre.gronemeier@cs.uni-dortmund.de PIWIN 1 Übung Blatt 5 Ausgabedatum: 19.12.2008 Übungen: 12.1.2009-22.1.2009 Abgabe:

Mehr

Informationsverarbeitung im Bauwesen

Informationsverarbeitung im Bauwesen 4 Informationsverarbeitung im Bauwesen Markus Uhlmann basierend auf Folien von A. Brugger 1 Zusammenfassung der 3. Vorlesung Einführung in Excel/VBA Einführung in die Tabellenkalkulation Erste Schritte

Mehr

Einführung in VisualBasic for Applications. Stefan Mahlitz

Einführung in VisualBasic for Applications. Stefan Mahlitz Einführung in VisualBasic for Applications Stefan Mahlitz Stefan Mahlitz Einführung in VBA 27.08.00 Inhaltsverzeichnis 1. Grundlagen der VisualBasic for Applications (VBA) Programmierung...2 1.1 Variablen,

Mehr

PIWIN I. Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I. Vorlesung 3 SWS WS 2007/2008

PIWIN I. Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I. Vorlesung 3 SWS WS 2007/2008 PIWIN I Kap. 7 Objektorientierte Programmierung - Einführung 1 PIWIN I Praktische Informatik für Wirtschaftsmathematiker, Ingenieure und Naturwissenschaftler I Vorlesung 3 SWS WS 2007/2008 FB Informatik

Mehr

Programmieren in C. Macros, Funktionen und modulare Programmstruktur. Prof. Dr. Nikolaus Wulff

Programmieren in C. Macros, Funktionen und modulare Programmstruktur. Prof. Dr. Nikolaus Wulff Programmieren in C Macros, Funktionen und modulare Programmstruktur Prof. Dr. Nikolaus Wulff Der C Präprozessor Vor einem Compile Lauf werden alle Präprozessor Kommandos/Makros ausgewertet. Diese sind

Mehr

einkonto.zahle(+100); //Transaktion Einzahlung einkonto.zahle(-20); //Transaktion Auszahlung einkonto.zahle(+30); //Transaktion Einzahlung

einkonto.zahle(+100); //Transaktion Einzahlung einkonto.zahle(-20); //Transaktion Auszahlung einkonto.zahle(+30); //Transaktion Einzahlung PIWIN I Kap. 7 Objektorientierte Programmierung - Einführung 28 Testklasse public class TestGirokonto { public static void main(string[] args) { // erzeuge neues Konto Girokonto einkonto = new Girokonto();

Mehr

C++ - Einführung in die Programmiersprache Objektorientierte Programmierung

C++ - Einführung in die Programmiersprache Objektorientierte Programmierung C++ - Einführung in die Programmiersprache Objektorientierte Programmierung hat Kanten hat eine Farbe hat eine Kantenfarbe Rechteck zeichnen Rechteck einfärben Rechteck drehen Modulare Programmierung Projekt

Mehr

Programmieren in C. Operatoren, Variablen und deren Sichtbarkeit. Prof. Dr. Nikolaus Wulff

Programmieren in C. Operatoren, Variablen und deren Sichtbarkeit. Prof. Dr. Nikolaus Wulff Programmieren in C Operatoren, Variablen und deren Sichtbarkeit Prof. Dr. Nikolaus Wulff Auswertung von Ausdrücken Was passiert wenn ein Ausdruck wie z. B. int y,x=2; y = ++x * x++; im Computer abgearbeitet

Mehr

ANSI C. Grundlagen der Programmierung. Ricardo Hernández García. 3. Ausgabe, September 2011 CANSI2

ANSI C. Grundlagen der Programmierung. Ricardo Hernández García. 3. Ausgabe, September 2011 CANSI2 ANSI C Ricardo Hernández García 3. Ausgabe, September 2011 Grundlagen der Programmierung CANSI2 2 ANSI C - Grundlagen der Programmierung 2.4 Vom Quellcode zum Maschinenprogramm Das folgende Beispiel geht

Mehr

Funktionen und Parameter

Funktionen und Parameter Funktionen in C++ Funktionen und Parameter Wie in Java: Parameter sind lokale Variablen Argumente werden bei Aufruf zugewiesen Extras: Zeiger-Parameter für alle Typen: als Rückgabewerte um große Kopien

Mehr

5.5.8 Öffentliche und private Eigenschaften

5.5.8 Öffentliche und private Eigenschaften 5.5.8 Öffentliche und private Eigenschaften Schnittstellen vs. Implementierungen: Schnittstelle einer Klasse beschreibt, was eine Klasse leistet und wie sie benutzt werden kann, ohne dass ihre Implementierung

Mehr

Programmieren in C/C++ und MATLAB

Programmieren in C/C++ und MATLAB Programmieren in C/C++ und MATLAB Sven Willert Christian-Albrechts-Universität zu Kiel CAU 2-1 Datentypen und Formate Mit der Festlegung des Datentyps wird die Art bestimmt, mit der der Computer die Informationen

Mehr

Einführung in die Java- Programmierung

Einführung in die Java- Programmierung Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Rückblick Schleifen while do-while for Methoden Verfahren: Intervallschachtelung 2 Wo

Mehr

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung)

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) Wintersemester 2007/08 Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fakultät für Informatik Lehrstuhl

Mehr

Kapitel 8: Funktionen / Prozeduren

Kapitel 8: Funktionen / Prozeduren 8. Funktionen/Prozeduren 8-1 Objektorientierte Programmierung (Winter 2006/2007) Kapitel 8: Funktionen / Prozeduren Deklaration von Funktionen/Prozeduren Parameter, Übergabemechanismen Referenzen Globale

Mehr

Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2014/2015 Wirtschaftsingenieur Bachelor 4. Aufgabe Datenstruktur, Dateieingabe und -ausgabe

Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2014/2015 Wirtschaftsingenieur Bachelor 4. Aufgabe Datenstruktur, Dateieingabe und -ausgabe Aufgabenstellung Für ein Baumkataster sollen für maximal 500 Bäume Informationen gespeichert werden, die alle nach der gleichen Weise wie folgt strukturiert sind: Nummer Bauminfo Baumart Hoehe Baum Umfang

Mehr

Einführung in die Informatik für Hörer aller Fakultäten II. Andreas Podelski Stephan Diehl Uwe Waldmann

Einführung in die Informatik für Hörer aller Fakultäten II. Andreas Podelski Stephan Diehl Uwe Waldmann Einführung in die Informatik für Hörer aller Fakultäten II Andreas Podelski Stephan Diehl Uwe Waldmann 1 Einführung in die Informatik für Hörer aller Fakultäten II Andreas Podelski Stephan Diehl Uwe Waldmann

Mehr

Programmierung in C. Grundlagen. Stefan Kallerhoff

Programmierung in C. Grundlagen. Stefan Kallerhoff Programmierung in C Grundlagen Stefan Kallerhoff Vorstellungsrunde Name Hobby/Beruf Schon mal was programmiert? Erwartungen an den Kurs Lieblingstier Für zu Hause C-Buch online: http://openbook.rheinwerk-verlag.de/c_von_a_bis_z/

Mehr

Reihungen. Martin Wirsing. in Zusammenarbeit mit Matthias Hölzl und Nora Koch 11/03

Reihungen. Martin Wirsing. in Zusammenarbeit mit Matthias Hölzl und Nora Koch 11/03 Reihungen Martin Wirsing in Zusammenarbeit mit Matthias Hölzl und Nora Koch 11/03 2 Ziele Die Datenstruktur der Reihungen verstehen: mathematisch und im Speicher Grundlegende Algorithmen auf Reihungen

Mehr

Arrays und Methoden. Programmiervorkurs WS 2010 / 11

Arrays und Methoden. Programmiervorkurs WS 2010 / 11 Arrays und Methoden Programmiervorkurs WS 2010 / 11 Einleitung Bisher sind einfach Programme möglich Nun wollen wir Organisation und Stil verbessern Gesamter Code sollte nicht an einer Stelle stehen Nicht

Mehr

Excel VBA Prozeduren und Funktionen

Excel VBA Prozeduren und Funktionen Excel VBA Prozeduren und Funktionen Unterprogramme (Subroutinen)... lösen Teilprobleme der Gesamtaufgabe.... fassen Anweisungen, die ein bestimmtes Thema bearbeiten, zu einem Block zusammen.... sind eine

Mehr

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2 Java Einführung VARIABLEN und DATENTYPEN Kapitel 2 Inhalt dieser Einheit Variablen (Sinn und Aufgabe) Bezeichner Datentypen, Deklaration und Operationen Typenumwandlung (implizit/explizit) 2 Variablen

Mehr

Objektorientierte Programmierung mit C++ Zusammenfassung der wichtigsten Topics rund um die objektorientierte Programmierung mit C++11

Objektorientierte Programmierung mit C++ Zusammenfassung der wichtigsten Topics rund um die objektorientierte Programmierung mit C++11 Objektorientierte Programmierung mit C++ Zusammenfassung der wichtigsten Topics rund um die objektorientierte Programmierung mit C++11 Wozu objektorientiertes Programmieren? Die Welt besteht für den Menschen

Mehr

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein (kmk@informatik.uni-kiel.

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein (kmk@informatik.uni-kiel. Java Crashkurs Kim-Manuel Klein (kmk@informatik.uni-kiel.de) May 7, 2015 Quellen und Editoren Internet Tutorial: z.b. http://www.java-tutorial.org Editoren Normaler Texteditor (Gedit, Scite oder ähnliche)

Mehr

PHP 5.4 ISBN 978-3-86249-327-2. Stephan Heller, Andreas Dittfurth 1. Ausgabe, September 2012. Grundlagen zur Erstellung dynamischer Webseiten GPHP54

PHP 5.4 ISBN 978-3-86249-327-2. Stephan Heller, Andreas Dittfurth 1. Ausgabe, September 2012. Grundlagen zur Erstellung dynamischer Webseiten GPHP54 PHP 5.4 Stephan Heller, Andreas Dittfurth 1. Ausgabe, September 2012 Grundlagen zur Erstellung dynamischer Webseiten ISBN 978-3-86249-327-2 GPHP54 5 PHP 5.4 - Grundlagen zur Erstellung dynamischer Webseiten

Mehr

C++ - Einführung in die Programmiersprache Polymorphismus und Vererbung. Eltern

C++ - Einführung in die Programmiersprache Polymorphismus und Vererbung. Eltern C++ - Einführung in die Programmiersprache Polymorphismus und Vererbung Eltern Kind Kind Vererbung Definition von Klassen auf Basis von bestehenden Klassen. Implementierung von ist ein. bildet ein hierarchisches

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können

Mehr

5.4 Klassen und Objekte

5.4 Klassen und Objekte 5.4 Klassen und Objekte Zusammenfassung: Projekt Figuren und Zeichner Figuren stellt Basisklassen für geometrische Figuren zur Verfügung Zeichner bietet eine übergeordnete Klasse Zeichner, welche die Dienstleistungen

Mehr

C++ Programmierung. Uwe Naumann. LuFG Informatik 12, RWTH Aachen University, Germany

C++ Programmierung. Uwe Naumann. LuFG Informatik 12, RWTH Aachen University, Germany C++ Programmierung Uwe Naumann LuFG Informatik 12, RWTH Aachen University, Germany Leave me alone world... Hauptprogramm int main(); return 0; Ausgabe auf Bildschrim #include std :: cout

Mehr

Javakurs für Anfänger

Javakurs für Anfänger Javakurs für Anfänger Einheit 02: Klassen & Objekte Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Heutige Agenda 1. Teil: Klassen Grundstruktur einer Java-Klasse Eigenschaften (Attribute) Variablen

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

VisualBasic - Variablen

VisualBasic - Variablen Typisch für alle Basic-Dialekte ist die Eigenschaft, dass Variablen eigentlich nicht deklariert werden müssen. Sobald Sie einen Bezeichner schreiben, der bisher nicht bekannt war, wird er automatisch angelegt

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum

Mehr

PROGRAMMIEREN MIT C. }, wird kompiliert mit dem Befehl. (-o steht für output) und ausgeführt mit dem Befehl

PROGRAMMIEREN MIT C. }, wird kompiliert mit dem Befehl. (-o steht für output) und ausgeführt mit dem Befehl PROGRAMMIEREN MIT C Allgemeine hinweise Alles was hier beschrieben wird, soll auch ausprobiert werden. Warum C? Weil die coolen Dinge mit C am einfachsten gehen. Das werden wir in den folgenden Übungen

Mehr

Einführung in die C++ Programmierung für Ingenieure

Einführung in die C++ Programmierung für Ingenieure Einführung in die C++ Programmierung für Ingenieure MATTHIAS WALTER / JENS KLUNKER Universität Rostock, Lehrstuhl für Modellierung und Simulation 14. November 2012 c 2012 UNIVERSITÄT ROSTOCK FACULTY OF

Mehr

Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2015/2016 Wirtschaftsingenieur Bachelor 5. Aufgabe Datenstruktur, Dateieingabe und -ausgabe

Hochschule Darmstadt Informatik-Praktikum (INF 1) WS 2015/2016 Wirtschaftsingenieur Bachelor 5. Aufgabe Datenstruktur, Dateieingabe und -ausgabe Aufgabenstellung Für eine Hausverwaltung sollen für maximal 500 Wohnungen Informationen gespeichert werden, die alle nach der gleichen Weise wie folgt strukturiert sind: Art Baujahr Wohnung Whnginfo Nebenkosten

Mehr

Programmieren Tutorium

Programmieren Tutorium Programmieren Tutorium Tom Schildhauer Tutorium 12 Universität Karlsruhe (TH) Institut für Programmstrukturen und Datenorganisation (IPD) Lehrstuhl Programmierparadigmen WS 2008/2009 c 2008 by Tom Schildhauer,

Mehr

Karlsruher Institut für Technologie

Karlsruher Institut für Technologie Karlsruher Institut für Technologie Lehrstuhl für Programmierparadigmen Sprachtechnologie und Compiler WS 2010/2011 Dozent: Prof. Dr.-Ing. G. Snelting Übungsleiter: Matthias Braun Lösung zu Übungsblatt

Mehr

1 Polymorphie (Vielgestaltigkeit)

1 Polymorphie (Vielgestaltigkeit) 1 Polymorphie (Vielgestaltigkeit) Problem: Unsere Datenstrukturen List, Stack und Queue können einzig und allein int-werte aufnehmen. Wollen wir String-Objekte, andere Arten von Zahlen oder andere Objekttypen

Mehr

Nachklausur Programmieren / Algorithmen und Datenstrukturen 1

Nachklausur Programmieren / Algorithmen und Datenstrukturen 1 Programmieren / Algorithmen und Datenstrukturen Autor: Prof. Dr. Bernhard Humm, FB Informatik, Hochschule Darmstadt Datum: 7. Oktober 200 Nachklausur Programmieren / Algorithmen und Datenstrukturen Spielregeln

Mehr

Übungspaket 19 Programmieren eigener Funktionen

Übungspaket 19 Programmieren eigener Funktionen Übungspaket 19 Programmieren eigener Funktionen Übungsziele: Skript: 1. Implementierung und Kodierung eigener Funktionen 2. Rekapitulation des Stack-Frames 3. Parameterübergabe mittels Stack und Stack-Frame

Mehr

C++ Grundlagen. ++ bedeutet Erweiterung zum Ansi C Standard. Hier wird eine Funktion eingeleitet

C++ Grundlagen. ++ bedeutet Erweiterung zum Ansi C Standard. Hier wird eine Funktion eingeleitet C++ Grundlagen ++ bedeutet Erweiterung zum Ansi C Standard Hier wird eine Funktion eingeleitet Aufbau: In dieser Datei stehen die Befehle, die gestartet werden, wenn das Programm gestartet wird Int main()

Mehr

Institut fu r Informatik

Institut fu r Informatik Technische Universita t Mu nchen Institut fu r Informatik Lehrstuhl fu r Bioinformatik Einfu hrung in die Programmierung fu r Bioinformatiker Prof. B. Rost, L. Richter WS 2013 Aufgabenblatt 3 18. November

Mehr

Test zu Grundlagen der Programmierung Leitung: Michael Hahsler. 21. November 2003

Test zu Grundlagen der Programmierung Leitung: Michael Hahsler. 21. November 2003 Test zu Grundlagen der Programmierung Leitung: Michael Hahsler 1. November 00 Name Martrikelnummer Unterschrift Bitte kreuzen Sie das Studium an, für das Sie diese Prüfung ablegen: O Bakkalaureat Wirtschaftsinformatik

Mehr

Lösungsvorschlag zur 9. Übung

Lösungsvorschlag zur 9. Übung Prof. Frederik Armknecht Sascha Müller Daniel Mäurer Grundlagen der Informatik 3 Wintersemester 09/10 Lösungsvorschlag zur 9. Übung 1 Präsenzübungen 1.1 Schnelltest a) Welche der folgenden Aussagen über

Mehr

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung Übersicht 3.1 Modell Konto 3.2 Modell Konto - Erläuterungen 3.3 Benutzer Ein- und Ausgabe mit Dialogfenster I 3.4 Benutzer Ein- und Ausgabe mit Dialogfenster II 3.5 Klassen- und Objekteigenschaften des

Mehr

Modellierung und Programmierung

Modellierung und Programmierung Modellierung und Programmierung Dr. Martin Riplinger 19.12.2012 IAM Institut für Angewandte Mathematik Funktionszeiger: Vorüberlegungen Funktionsaufrufe sind bis jetzt im Code mit Name explizit angegeben

Mehr

Excel Funktionen durch eigene Funktionen erweitern.

Excel Funktionen durch eigene Funktionen erweitern. Excel Funktionen durch eigene Funktionen erweitern. Excel bietet eine große Anzahl an Funktionen für viele Anwendungsbereiche an. Doch es kommt hin und wieder vor, dass man die eine oder andere Funktion

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen Tafelübung 04 Referenzen, Overloading, Klassen(hierarchien) Clemens Lang T2 18. Mai 2010 14:00 16:00, 00.152 Tafelübung zu AuD 1/13 Organisatorisches Nächster Übungstermin

Mehr

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden. Grundwissen Informatik Objekt Attribut Methoden Als Objekte bezeichnet man alle Gegenstände, Dinge, Lebewesen, Begriffe oder Strukturen unserer Welt ( Autos, Räume, Bakterien, Lehrer, Schüler, Kunden,

Mehr

CORBA Implementierung von Client und Server

CORBA Implementierung von Client und Server CORBA Implementierung von Client und Server J. Heinzelreiter WS 2003/04 Implementierung des Clients Initialisierung und Freigabe des ORBs. Mapping von Interfaces. Behandlung von Objektreferenzen. Verwaltung

Mehr

Access [basics] Programmieren mit Arrays. Beispieldatenbank. Arrays. Eindimensionale Arrays. VBA-Grundlagen Programmieren mit Arrays

Access [basics] Programmieren mit Arrays. Beispieldatenbank. Arrays. Eindimensionale Arrays. VBA-Grundlagen Programmieren mit Arrays Dass Sie unter Access Daten in Tabellen speichern und gezielt darauf zugreifen können, wissen Sie als Access [basics]-leser schon längst. Aber was, wenn Sie nur ein paar gleichartige Daten zwischenspeichern

Mehr

C/C++ Programmierung

C/C++ Programmierung 1 C/C++ Programmierung Verbunde, Reihungen, Zeiger Sebastian Hack Christoph Mallon (hack mallon)@cs.uni-sb.de Fachbereich Informatik Universität des Saarlandes Wintersemester 2009/2010 2 Typen 6.2.5 Primitive

Mehr

3 Objektorientierte Konzepte in Java

3 Objektorientierte Konzepte in Java 3 Objektorientierte Konzepte in Java Bisherige Beobachtungen zu Objekten: werden in Klassen zusammengefasst besitzen Eigenschaften und Verhalten verbergen private Informationen werden geboren, leben und

Mehr