Bereits behandelt: Einfache Datentypen / Variablen. Schleifen und Verzweigungen. Funktionen. Heute: Felder, Zeiger, Referenzen. Freispeicherverwaltung

Größe: px
Ab Seite anzeigen:

Download "Bereits behandelt: Einfache Datentypen / Variablen. Schleifen und Verzweigungen. Funktionen. Heute: Felder, Zeiger, Referenzen. Freispeicherverwaltung"

Transkript

1 Kompaktkurs C++ Themen C 1 Bereits behandelt: Einfache Datentypen / Variablen Schleifen und Verzweigungen Funktionen Heute: Felder, Zeiger, Referenzen Freispeicherverwaltung Zeichenketten Kommandozeilenargumente

2 Kompaktkurs C++ Felder (Arrays) C 2 Ein Feld fasst mehrere Elemente gleichen Typs zusammen: #include <iostream> int main() int a[10]; // Feld mit 10 Integer-Elementen a[0]... a[9] for (int i=0; i<10; ++i) a[i] = i*i; for (int i=0; i<10; ++i) std::cout << i << \t << a[i] << std::endl; return 0;

3 Kompaktkurs C++ Definition und Initialisierung von Feldern C 3 Typ name[n]; legt ein Feld mit n Elementen an. Genau wie bei normalen Variablen ist der Inhalt von Feldern ohne Initialisierung unbestimmt. Der Zugriff auf Elemente ausserhalb des Feldes (z. B. a[10] oder a[-1]) wird nicht vom Compiler abgefangen! Zur Laufzeit können aber Fehler wie Segmentation fault oder Änderung irgendwelcher Speicherinhalte (schwer zu finden!) auftreten! int a[10]; // Array aus 10 Integern double b[20], c[3], d; // 2 Arrays und 1 Gleitkommazahl int e[0]; // Fehler, ungueltige Groesse! int f[3] = 5, 0, 7 ; // mit Initialisierung int g[] = 5, 0, 7 ; // Groesse automatisch int h[]; // Fehler, Groesse unbekannt! int i[3] = 5 ; // Rest wird mit Nullen gefuellt int j[3] = ; // Alles wird mit Nullen gefuellt int k[3] = 5, 0, 7, 8 ; // Fehler, zu viele Elemente! int l[3]; l = 1, 1, 1 ; // Fehler!

4 Kompaktkurs C++ Feldgröße C 4 Die Feldgröße muss eine sogenannte Compile-Time-Konstante sein. void func(int n) int a[3]; // OK int b[n]; // Fehler, variable Feldgroesse! const int dim = 3; const int len = n; int c[dim]; // OK int d[len]; // Fehler, variable Feldgroesse! int main() func(4); return 0; Einige Compiler erlauben aber auch solche Ausdrücke, die erst zur Laufzeit feststehen (z. B. g++ ohne -pedantic).

5 Kompaktkurs C++ Mehrdimensionale Felder C 5 Man kann auch mehrdimensionale Felder anlegen: #include<iostream> int main() int a[2][3] = 0, 1, 2, 3, 4, 5 ; for (int i=0; i<2; ++i) for (int j=0; j<3; ++j) std::cout << a[i][j] << std::endl; return 0; Die Initialisierer sollten entsprechend geklammert werden. Vorsicht: int a[2,3] kein zweidimensionales, sondern ein eindimensionales Feld der Länge 3! Das Komma ist der Sequenzoperator!

6 Kompaktkurs C++ Zeiger (Pointer) C 6 Ein Zeiger speichert die Adresse eines Objekts: int *p; deklariert einen Zeiger auf einen Integer. Die Adresse eines Objekts kann man mit dem Adress-Operator & ermitteln: int i; p = &i; Auf das Objekt, auf das der Zeiger zeigt, kann mit dem Dereferenzierungs-Operator * zugegriffen werden: std::cout << *p << std::endl; *p = 3; Der Wert 0 kann jedem Zeiger zugewiesen werden. Dieser besondere Wert signalisiert, dass der Zeiger auf nichts zeigt. Den Null-Zeiger darf man nicht dereferenzieren.

7 Kompaktkurs C++ Zeiger (Pointer) C 7 #include <iostream> int main() int a = 2, b = 7, *p = 0; // p zeigt nirgendwo hin p = &a; // p zeigt jetzt auf a *p = 4; // a hat jetzt den Wert 4 std::cout << p << \t << *p << std::endl; p = &b; ++(*p); // p zeigt jetzt auf b // b wird um 1 erhoeht std::cout << p << \t << *p << std::endl; std::cout << a << \n << b << std::endl; return 0; 0xbfe93f5c 4 0xbfe93f

8 Kompaktkurs C++ Zeiger und Felder C 8 Die Elemente eines Feldes liegen hintereinander im Speicher. Erhöht man einen Zeiger, der auf ein Feldelement zeigt, um 1, so zeigt er auf das nächste Element: int a[10], *p = &a[4]; ++p; // p zeigt jetzt auf a[5] p+=3; // p zeigt jetzt auf a[8] Die Differenz zweier Zeiger liefert den Abstand der Feldelemente: int a[10], *p = &a[3], *q = &a[7]; q-p hat den Wert 4. Der Name eines Feldes ist ein (konstanter) Zeiger auf den Feldanfang. Die folgenden Schreibweisen sind daher äquivalent: p = &a[0]; p = a; *p p[0] *(p+5) p[5] Weil der Feldname ein konstanter Zeiger ist, gibt ++a; einen Fehler. Dagegen ist ++p; für den nicht-konstanten Zeiger p erlaubt.

9 Kompaktkurs C++ Zeiger und Felder C 9 #include <iostream> int main() int a[10] = ; // Feld mit Nullen gefuellt int *p = a; // p zeigt auf den Feldanfang, p = &a[0] *p = 1; // a[0] = 1 ++p; // p zeigt auf a[1] *p = 2; // a[1] = 2 *(p+1) = 3; // a[2] = 3 *(a+5) = 4; // a[5] = 4 for (int i = 0; i < 10; ++i) std::cout << a[i] << " "; std::cout << std::endl; for (int *q = a; q < a+10; ++q) std::cout << *q << " "; std::cout << std::endl; return 0;

10 Kompaktkurs C++ Dynamische Speicherverwaltung mit new und delete C 10 Mit dem Operator new kann man neuen Speicher allozieren. Ist genügend Speicher vorhanden, so gibt new einen Zeiger auf den neuen Speicherbereich zurück: int *p = new int; Konnte kein Speicher alloziert werden, dann wird die Ausnahme std::bad_alloc geworfen. Benutzt man new (std::nothrow) int, so wird stattdessen ein Null-Zeiger zurückgegeben. Mit dem Operator delete wird der Speicher wieder freigegeben (dealloziert): delete p; Der Zeiger sollte dann nicht mehr dereferenziert werden. Man sollte auch nicht ein zweites Mal delete für diesen Zeiger aufrufen. Wendet man delete auf einen Null-Zeiger an, so passiert nichts.

11 Kompaktkurs C++ new[] und delete[] C 11 Mit dem Operator new[] kann man ganze Felder allozieren: int *p = new int[10]; Die Feldgröße muss dabei erst zur Laufzeit feststehen: void func(int n) int a[n]; // Fehler int *p = new int[n]; // OK Der Speicher kann mit delete[] p; freigegeben werden.

12 Kompaktkurs C++ Fehlerbehandlung beim Allozieren C 12 #include <iostream> #include <new> // fuer std::bad_alloc und std::nothrow int main() int Laenge = ; double *p, *q; try p = new double[laenge]; catch (std::bad_alloc) std::cerr << "Kein Speicher fuer p!" << std::endl; return 1; q = new (std::nothrow) double[laenge]; if (!q) std::cerr << "Kein Speicher fuer q!" << std::endl; return 1; return 0;

13 Kompaktkurs C++ Zeiger und allozierter Speicher C 13 Der Programmierer ist dafür verantwortlich, dass allozierter Speicher wieder freigegeben wird! Vergisst man die Adresse des allozierten Speicherplatzes, dann kann er nicht mehr freigegeben werden: int *p = new int[100]; Nach dem Verlassen des Blocks existiert der Zeiger p zwar nicht mehr, aber die 100 Integers liegen immer noch im Speicher herum.

14 Kompaktkurs C++ Zeiger, Felder und Funktionen C 14 Ein Feld verhält sich beim Funktionsaufruf wie ein Zeiger. Es wird nicht das Feld kopiert, sondern nur seine Adresse: #include <iostream> void Erhoehe (int n, int a[]) // void Erhoehe (int n, int *a) for (int i = 0; i < n; ++i) ++a[i]; int main() int x[5] = 3, 1, 4, 1, 5 ; Erhoehe(5,x); for (int i = 0; i < 5; ++i) std::cout << x[i] << ; std::cout << std::endl; return 0; Ausgabe:

15 Kompaktkurs C++ Zeiger und const C 15 Analog zu Referenzen gilt: Will man verhindern, dass die ursprünglichen Variablen über die Zeiger modifiziert werden, dann benutzt man Zeiger auf const-variablen: void func (const int *p) ++*p; // Fehler, Wert, auf den der Zeiger zeigt ist konstant! ++p; // OK Ein const-zeiger ist dagegen ein Zeiger, der selbst nicht verändert werden darf. Das Objekt, auf das er zeigt, kann jedoch verändert werden: void func (int* const p) // void func (int p[]) ++*p; // OK ++p; // Fehler, Adresse darf nicht geaendert werden. Man kann auch beides konstant machen: void func (const int* const p) void func (const int p[])

16 Kompaktkurs C++ const-zeiger und Referenzen C 16 Referenzen sind eng verwandt mit const-zeigern. Man kann Referenzen nicht ändern. Man muss Referenzen nicht dereferenzieren. Daher sieht es so aus, als ob Referenzen nur neue Namen für alte Variablen sind:

17 Kompaktkurs C++ Zeiger und Referenzen C 17 void PtrFunc (int *p) int j = *p; // Wert der Variable int *q = p; // Adresse der Variable ++*p; ++p; // aendere den Wert // aendere die Adresse (zeige auf ein anderes Objekt) void RefFunc (int &r) int j = r; // Wert der Variable int *q = &r; // Adresse der Variable ++r; ++&r; // aendere den Wert // Fehler, Adresse kann nicht geaendert werden! int main() int i; PtrFunc(&i); RefFunc(i); return 0;

18 Kompaktkurs C++ Zeiger, Referenzen und Felder C 18 void func() int i; int* p1; p1 = &i; // Zeiger auf int const int* p2; p2 = &i; // Zeiger auf const int int* const p3 = &i; // const-zeiger auf int const int* const p4 = &i; // const-zeiger auf const int int& r1 = i; // Referenz auf int const int& r2 = i; // Referenz auf const int int** p5; p5 = &p1; // Zeiger auf einen Zeiger auf int int a[5]; a[0] = 1; // Feld von ints int* b[5]; b[0] = &i; // Feld von Zeigern p5 = b; int (*c)[5]; c = &a; // Zeiger auf ein Feld int (&d)[5] = a; // Referenz auf ein Feld int m[3][5]; // mehrdimensionales Feld p1 = m[0]; c = m;

19 Kompaktkurs C++ Beispiel: Skalarprodukt C 19 #include <iostream> double SkalarProdukt (const double a[], const double b[], int n) double sum = 0.0; for (int i = 0; i < n; ++i) sum += a[i] * b[i]; return sum; int main() double a[5] = 1, 2, 3, 4, 5, b[5] = 5, 4, 3, 2, 1 ; std::cout << "Skalarprodukt: " << SkalarProdukt(a, b, 5) << std::endl; return 0; Ausgabe: Skalarprodukt: 35

20 Kompaktkurs C++ Beispiel: std::sort C 20 #include <iostream> #include <algorithm> // fuer std::sort int main() int a[10] = 3, 4, 5, 8, 2, 4, 7, 9, 4, 5 ; std::sort(a,a+10); for (int i = 0; i < 10; ++i) std::cout << a[i] << ; std::cout << std::endl; return 0; Ausgabe:

21 Kompaktkurs C++ Zeichenketten C 21 Zeichenketten (Strings) sind Felder von chars. Zur einfacheren Schreibweise gibt es String-Literale: "Text" ist ein Feld aus fünf Zeichen, nämlich T, e, x, t und einem abschließenden Null-Zeichen \0. Dieses dient dazu, das Ende eines Strings zu bestimmen. Bei der Ausgabe wird nicht der Zeiger (wie sonst bei Feldern üblich) ausgegeben, sondern der Inhalt des Feldes. Das abschließende Null- Zeichen wird nicht ausgegeben. #include <iostream> int main() char str[5] = "Text"; std::cout << str << std::endl; return 0;

22 Kompaktkurs C++ Beispiel: strcpy C 22 Es gibt viele C-Bibliotheksfunktionen, die mit Strings operieren (z. B. Strings kopieren, vergleichen, suchen, zusammenfügen etc.). Ein Beispiel ist die Funktion strcpy, die einen String kopiert: #include <iostream> #include <cstring> // fuer String-Operationen int main() char str1[5] = "Text"; char str2[5]; std::strcpy(str2,str1); std::cout << str2 << std::endl; return 0;

23 Kompaktkurs C++ Implementierung von strcpy C 23 void strcpy1 (char *s, const char *t) // String t nach String s kopieren int i = 0; while ( (s[i] = t[i])!= \0 ) ++i; void strcpy2 (char *s, const char *t) int i = 0; while ( (s[i] = t[i]) ) ++i; void strcpy3 (char *s, const char *t) // Zeigerarithmetik while ( (*s = *t) ) ++s; ++t; void strcpy4 (char *s, const char *t) while ( (*s++ = *t++) ) ;

24 Kompaktkurs C++ Kommandozeilenparameter C 24 Die Kommandozeilenparameter werden der Funktion als Feld von Strings übergeben. Das erste Argument liefert die Anzahl der Parameter, das zweite das String-Feld. Der nullte String ist der Name des Programms, das aufgerufen wurde. #include <iostream> #include <string> int main (int argc, char* argv[]) std::cout << "Das sind insgesamt " << argc << " Argumente\n"; for (int i = 0; i < argc; ++i) std::cout << "Das " << i << "-te Argument lautet \"" << argv[i] << "\"\n"; if (!strcoll(argv[i],"paul")) std::cout << "Paul gefunden!\n"; return 0;

25 Kompaktkurs C++ Kommandozeilenparameter C 25 Der Aufruf von kommando a b c,d Paul "geht das?" in der Kommandozeile führt zur Ausgabe Das sind insgesamt 6 Argumente Das 0-te Argument lautet "kommando" Das 1-te Argument lautet "a" Das 2-te Argument lautet "b" Das 3-te Argument lautet "c,d" Das 4-te Argument lautet "Paul" Paul gefunden! Das 5-te Argument lautet "geht das?"

26 Kompaktkurs C++ Funktionszeiger C 26 #include <iostream> #include <cmath> // Integriere f von a bis b mit n Schritten der Trapezregel double Integral (double (*f)(double), double a, double b, int n = 10) double h = (b-a)/n, Summe = (f(a)+f(b))/2; for (int i=1; i<n; ++i) Summe += f(a+i*h); return h*summe; double Identitaet (double x) return x; double Quadrat (double x) return x*x; double Sinus (double x) return std::sin(x); int main() std::cout << Integral(Identitaet,2,3) << \n << Integral(Quadrat,-1,2,20) << \n << Integral(Sinus,0,M_PI/2,100) << std::endl; return 0;

27 Kompaktkurs C++ Funktionszeiger und -referenzen C 27 Eine Funktion hat eine Adresse im Speicher, welche man in einem Zeiger oder einer Referenz speichern kann. Über diesen Zeiger bzw. diese Referenz kann man die Funktion dann aufrufen. Funktionszeiger/-referenzen haben die Form Rueckgabetyp (*NameZeiger) (Argumente) Rueckgabetyp (&NameReferenz) (Argumente) Der Name einer Funktion void f() liefert ihre Adresse: void (*fptr)() = f; void (*fptr)() = &f; // aequivalent void (&fref)() = f; Die Funktion kann man über den Zeiger bzw. die Referenz aufrufen: fptr(); fref(); Die Adresse einer Funktion kann man nur in einem passenden Zeiger bzw. einer passenden Referenz speichern. Man kann die Funktion auch nur über einen passenden Typ aufrufen.

28 Kompaktkurs C++ Funktionszeiger C 28 void f1 (int); int f2 (int); void f3 (); void f4 (char); void f5 (int=0); void f6 (int,int=0); void func() void (*f)(int); void (*g)(int=0); // Fehler, Default-Werte nicht erlaubt f = &f1; // OK f = &f2; // Fehler, falscher Rueckgabetyp! f = &f3; // Fehler, falsche Anzahl Argumente! f = &f4; // Fehler, falscher Argumenttyp! f = &f5; // OK, nur ohne Default-Werte einsetzbar! f = &f6; // Fehler, falsche Anzahl Argumente!

Bereits behandelt: Einfache Datentypen / Variablen. Schleifen und Verzweigungen. Funktionen. Heute: Felder, Zeiger, Referenzen. Freispeicherverwaltung

Bereits behandelt: Einfache Datentypen / Variablen. Schleifen und Verzweigungen. Funktionen. Heute: Felder, Zeiger, Referenzen. Freispeicherverwaltung Kompaktkurs C++ Themen C 1 Bereits behandelt: Einfache Datentypen / Variablen Schleifen und Verzweigungen Funktionen Heute: Felder, Zeiger, Referenzen Freispeicherverwaltung Zeichenketten Kommandozeilenargumente

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

Kompaktkurs C++ Volker Reichelt. Herbst Institut für Geometrie und Praktische Mathematik RWTH Aachen

Kompaktkurs C++ Volker Reichelt. Herbst Institut für Geometrie und Praktische Mathematik RWTH Aachen Kompaktkurs C++ Herbst 2005 Volker Reichelt Institut für Geometrie und Praktische Mathematik Kompaktkurs C++ Organisatorisches A 2 Vorlesung: 9:30-11:00, Hörsaal IV Diskussion: im Anschluss an die Vorlesung

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 6. Sven Groß. 23. Nov Sven Groß (IGPM, RWTH Aachen) C++ Teil Nov / 15

C++ Teil 6. Sven Groß. 23. Nov Sven Groß (IGPM, RWTH Aachen) C++ Teil Nov / 15 C++ Teil 6 Sven Groß 23. Nov 2015 Sven Groß (IGPM, RWTH Aachen) C++ Teil 6 23. Nov 2015 1 / 15 Themen der letzten Vorlesung const-deklaration Referenzen Zeiger Felder Sven Groß (IGPM, RWTH Aachen) C++

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

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

Zeiger: Der Adressoperator &

Zeiger: Der Adressoperator & Zeiger: Der Adressoperator & Variablen werden im Computer im Speicher abgelegt. Nach der Deklaration int a,b,c; double x,y,z; Sieht die Speicherbelegung etwa wie folgt aus: a b c x y z Jede Variable hat

Mehr

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

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

Mehr

Arrays (Felder/Vektoren)

Arrays (Felder/Vektoren) Arrays (Felder/Vektoren) Zusammenfassung mehrerer Variablen des gleichen Typs unter einem Namen im Speicher direkt hintereinander abgelegt Definition: Typname Arrayname [Größe]; Beispiel: int ar [5]; Zugriff

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

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

C++ Teil 5. Sven Groß. 12. Nov IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Nov / 16 C++ Teil 5 Sven Groß IGPM, RWTH Aachen 12. Nov 2014 Sven Groß (IGPM, RWTH Aachen) C++ Teil 5 12. Nov 2014 1 / 16 Themen der letzten Vorlesung Eingabestrom, Verhalten von cin Namensräume Live Programming

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

Praxis der Programmierung

Praxis der Programmierung Arrays, Pointer, Parameterbergabe Institut für Informatik und Computational Science Henning Bordihn Einige Folien gehen auf A. Terzibaschian zurück. 1 Arrays (Felder/Vectoren) 2 Arrays: Motivation Gegeben:

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

Teil 5: Felder, Zeiger, Zeigerarithmetik Gliederung

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

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

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

5.4 Arrays. Oft müssen viele Werte gleichen Typs gespeichert werden. Idee: Lege sie konsekutiv ab! Greife auf einzelne Werte über ihren Index zu!

5.4 Arrays. Oft müssen viele Werte gleichen Typs gespeichert werden. Idee: Lege sie konsekutiv ab! Greife auf einzelne Werte über ihren Index zu! 5.4 Arrays Oft müssen viele Werte gleichen Typs gespeichert werden. Idee: Lege sie konsekutiv ab! Greife auf einzelne Werte über ihren Index zu! Feld: Index: 17 3-2 9 0 1 0 1 2 3 4 5 Harald Räcke 114/656

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

9. Vektoren. (auch Felder/array)

9. Vektoren. (auch Felder/array) 9. Vektoren (auch Felder/array) Motivation Hat man mehrere Objekte gleichen Datentyps, so kann man sie explizit deklarieren, wenn die Anzahl bekannt ist double x1,x2,x3,x4; Nachteile: versagt, -wenn die

Mehr

C++ - Einführung in die Programmiersprache Zeiger, Referenzen und Strukturen. Leibniz Universität IT Services Anja Aue

C++ - Einführung in die Programmiersprache Zeiger, Referenzen und Strukturen. Leibniz Universität IT Services Anja Aue C++ - Einführung in die Programmiersprache Zeiger, Referenzen und Strukturen Leibniz Universität IT Services Anja Aue Zeiger (Pointer) Verweis auf eine Speicherstelle. Speicherung einer Speicheradresse.

Mehr

Zeiger (1) Allgemeines

Zeiger (1) Allgemeines Zeiger (1) Allgemeines In C häufig verwendet zur Realisierung mancher Programmierkonzepte Sehr enge Verknüpfung von Zeigern und Feldern Vielseitiges Hilfsmittel, birgt allerdings auch Gefahren für Programmierfehler

Mehr

INE1 Arrays, Zeiger, Datenstrukturen

INE1 Arrays, Zeiger, Datenstrukturen INE1 Arrays, Zeiger, Datenstrukturen Arrays Felder von Elementen gleichen Typs Verwenden von Adressen: Zeiger Datenstrukturen mit struct Zeiger auf Datenstrukturen Spezielle Zeiger und komplexe Deklarationen

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

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

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

DAP2 Praktikum Blatt 1

DAP2 Praktikum Blatt 1 Fakultät für Informatik Lehrstuhl 11 / Algorithm Engineering Prof. Dr. Petra Mutzel, Carsten Gutwenger Sommersemester 2009 DAP2 Praktikum Blatt 1 Ausgabe: 21. April Abgabe: 22. 24. April Kurzaufgabe 1.1

Mehr

Grundlagen der Programmiersprache C für Studierende der Naturwissenschaften

Grundlagen der Programmiersprache C für Studierende der Naturwissenschaften Grundlagen der Programmiersprache C für Studierende der Naturwissenschaften Teil 7: Matrizen, Vektoren und dynamische Speicherverwaltung Martin Nolte Abteilung für Angewandte Mathematik Universität Freiburg

Mehr

Funktionen: Rückgabewert

Funktionen: Rückgabewert Funktionen: Rückgabewert Jede Funktion in C++ (außer Konstruktoren und Destruktoren siehe später) MUSS einen Rückgabewert-Typ vereinbaren. Gibt sie nichts zurück, muss der Rückgabetyp void sein. Jede return-anweisung

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

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

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

Praxis der Programmierung

Praxis der Programmierung Funktionen, Header-Dateien, Pointer Institut für Informatik und Computational Science Universität Potsdam Henning Bordihn 1 Organisatorische Bemerkungen 2 Modul Programmierung Pflichtmodul für BSc INF

Mehr

K Ergänzungen zur Einführung in C

K Ergänzungen zur Einführung in C K Ergänzungen zur Einführung in C K Ergänzungen zur Einführung in C K.1 Zeiger, Felder und Zeichenketten Zeichenketten sind Felder von Einzelzeichen (char), die in der internen Darstellung durch ein \0

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 2005/06 Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich Informatik Lehrstuhl

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

Repetitorium Programmieren I + II

Repetitorium Programmieren I + II Repetitorium Programmieren I + II Stephan Gimbel Johanna Mensik Michael Roth 6. März 2012 Agenda 1 Operatoren 2 Datentypen Gleitpunkt Zahl Typkonvertierung 3 Strommanipulatoren 4 Bedingungen if-else switch-case

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

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

Vektoren 105. array-qualifier static restrict const volatile array-size-expression assignment-expression * simple-declarator identifier

Vektoren 105. array-qualifier static restrict const volatile array-size-expression assignment-expression * simple-declarator identifier Vektoren 105 direct-declarator simple-declarator ( simple-declarator ) function-declarator array-declarator array-declarator direct-declarator [ [ array-qualifier-list ] [ array-size-expression ] ] array-qualifier-list

Mehr

Einführung in die Programmierung

Einführung in die Programmierung : Inhalt Einführung in die Programmierung Wintersemester 2008/09 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund - mit / ohne Parameter - mit / ohne Rückgabewerte

Mehr

Probeklausur Name: (c)

Probeklausur Name: (c) Einführung in die Praktische Informatik 30.1.2013 Probeklausur Name: Teil I: Datentypen (20 Punkte) Lösen sie die Probleme, indem sie die korrekten Lösungen ankreuzen bzw. in die vorgesehenen Freiräume

Mehr

Praxisorientierte Einführung in C++ Lektion: "Das Schlüsselwort explicit"

Praxisorientierte Einführung in C++ Lektion: Das Schlüsselwort explicit Praxisorientierte Einführung in C++ Lektion: "Das Schlüsselwort explicit" Christof Elbrechter Neuroinformatics Group, CITEC April 24, 2014 Christof Elbrechter Praxisorientierte Einführung in C++ April

Mehr

RO-Tutorien 3 / 6 / 12

RO-Tutorien 3 / 6 / 12 RO-Tutorien 3 / 6 / 12 Tutorien zur Vorlesung Rechnerorganisation Christian A. Mandery WOCHE 2 AM 06./07.05.2013 KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der Helmholtz-Gemeinschaft

Mehr

Programmieren in C++

Programmieren in C++ Fakultät Elektronik und Infor matik Studiengang Infor matik Programmieren in C++ Vorlesung im Sommersemester 2018 Prof. Dr. habil. Christian Heinlein 2. Übungsblatt (22. März 2018) Aufgabe 2: Lange vorzeichenlose

Mehr

Kapitel 5: Funktionen. Inhalt

Kapitel 5: Funktionen. Inhalt 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 Fachbereich Informatik Lehrstuhl

Mehr

Polymorphismus 44. Function.hpp. #include <string>

Polymorphismus 44. Function.hpp. #include <string> Polymorphismus 44 #include Function.hpp class Function { public: virtual ~Function() {}; virtual const std::string& get_name() const = 0; virtual double execute(double x) const = 0; }; // class

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

Felder (Arrays) und Zeiger (Pointers) - Teil I

Felder (Arrays) und Zeiger (Pointers) - Teil I Felder (Arrays) und Zeiger (Pointers) - Teil I Feldtypen, Sieb des Eratosthenes, Iteration, Zeigertypen, Zeigerarithmetik, dynamische Speicherverwaltung Felder: Motivation Wir können jetzt über Zahlen

Mehr

einlesen n > 0? Ausgabe Negative Zahl

einlesen n > 0? Ausgabe Negative Zahl 1 Lösungen Kapitel 1 Aufgabe 1.1: Nassi-Shneiderman-Diagramm quadratzahlen Vervollständigen Sie das unten angegebene Nassi-Shneiderman-Diagramm für ein Programm, welches in einer (äußeren) Schleife Integer-Zahlen

Mehr

Felder (Arrays) und Zeiger (Pointers) - Teil I

Felder (Arrays) und Zeiger (Pointers) - Teil I Felder (Arrays) und Zeiger (Pointers) - Teil I Feldtypen, Sieb des Eratosthenes, Iteration, Zeigertypen, Zeigerarithmetik, dynamische Speicherverwaltung Felder: Motivation n Wir können jetzt über Zahlen

Mehr

Programmierwerkstatt. Arrays, Pointer und Referenzen

Programmierwerkstatt. Arrays, Pointer und Referenzen Programmierwerkstatt Arrays, Pointer und Referenzen Zum Inhalt Wir wollen Euch: das Wesentliche vermitteln Fehlerquellen verdeutlichen Verständnis ist uns wichtig programming by coincidence vermeiden Themen

Mehr

U3 3. Übung U3 3. Übung. Systemnahe Programmierung in C Übungen Moritz Strübe Universität Erlangen-Nürnberg Informatik 4, 2009 U3.fm

U3 3. Übung U3 3. Übung. Systemnahe Programmierung in C Übungen Moritz Strübe Universität Erlangen-Nürnberg Informatik 4, 2009 U3.fm U3 3. Übung U3 3. Übung Besprechung Aufgabe 1 Pointer Register und Ports U3.1 U3-1 Zeiger U3-1 Zeiger 1 Einordnung Konstante: a 0110 0001 Variable: a Zeiger-Variable (Pointer): a char *p = &a; p U3.2 2

Mehr

Besprechung Aufgabe 1. Pointer. Register und Ports. SPiC - Ü U3.1

Besprechung Aufgabe 1. Pointer. Register und Ports. SPiC - Ü U3.1 U3 3. Übung U3 3. Übung Besprechung Aufgabe 1 Pointer Register und Ports U3.1 U3-1 Zeiger U3-1 Zeiger 1 Einordnung Konstante: a 0110 0001 Variable: a Zeiger-Variable (Pointer): a char *p = &a; p U3.2 2

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

Arrays. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 3. 1 Modulübersicht 3

Arrays. Theorieteil. Inhaltsverzeichnis. Begriffe. Programmieren mit Java Modul 3. 1 Modulübersicht 3 Programmieren mit Java Modul 3 Arrays Theorieteil Inhaltsverzeichnis 1 Modulübersicht 3 2 Eindimensionale Arrays 3 2.1 Arrays deklarieren.............................. 3 2.2 Arrays erzeugen................................

Mehr

Programmieren in C/C++ und MATLAB

Programmieren in C/C++ und MATLAB Programmieren in C/C++ und MATLAB Sven Willert Sabine Schmidt Christian-Albrechts-Universität zu Kiel CAU 5-1 Übung Schreiben Sie ein Programm, das die Zahl π durch π = 4 4 4 4 4 4 + + +... 3 5 7 9 11

Mehr

Repetitorium Programmieren I + II

Repetitorium Programmieren I + II Repetitorium Programmieren I + II Stephan Gimbel Johanna Mensik Michael Roth 24. September 2012 Agenda 1 Funktionen Aufbau und Anwendung Call by Value Call by Reference Überladen von Funktionen Default

Mehr

Felder (1) Allgemeines

Felder (1) Allgemeines Felder (1) Allgemeines Gleichartige Daten, wie Tabelle von Zahlen, Datumswerten, Namen etc. Felder (engl. Array) stellen einen Verbundtyp dar, in dem mehrere Daten desselben Typs gespeichert werden Oft

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

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

Zeiger und dynamischer Speicher

Zeiger und dynamischer Speicher Informatik für Elektrotechnik und Informationstechnik Benedict Reuschling benedict.reuschling@h-da.de Hochschule Darmstadt Fachbereich Informatik WS 2013/14 Zuletzt aktualisiert: 09.12.2013, 07:49 Uhr

Mehr

Variablen. Deklaration: «Datentyp» «Variablenname» Datentyp bestimmt Größe in Bytes: sizeof Beispiel: long int v; Größe: 4 Bytes

Variablen. Deklaration: «Datentyp» «Variablenname» Datentyp bestimmt Größe in Bytes: sizeof Beispiel: long int v; Größe: 4 Bytes Variablen Deklaration: «Datentyp» «Variablenname» Datentyp bestimmt Größe in Bytes: sizeof Beispiel: long int v; Größe: 4 Bytes v ist Stück im Speicher, der 4 Bytes lang ist Speicherzugriff? Über Adressen!

Mehr

Felder. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom

Felder. Gerd Bohlender. Einstieg in die Informatik mit Java, Vorlesung vom Einstieg in die Informatik mit Java, Vorlesung vom 9.5.07 Übersicht 1 Was sind? 2 Vereinbarung von n 3 Erzeugen von n 4 Zugriff auf Feldkomponenten 5 Mehrdimensionale 6 als Objekte, Referenzen Kopieren

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 26 Einstieg in die Informatik mit Java Felder Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 26 1 Was sind Felder? 2 Vereinbarung von Feldern 3 Erzeugen von Feldern

Mehr

Zeiger in C und C++ Zeiger in Java und C/C++

Zeiger in C und C++ Zeiger in Java und C/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 Referenztypen (Klassen und Arrays) verwendet,

Mehr

RO-Tutorien 15 und 16

RO-Tutorien 15 und 16 Tutorien zur Vorlesung Rechnerorganisation Tutorienwoche 2 am 04.05.2011 1 Christian A. Mandery: KIT Universität des Landes Baden-Württemberg und nationales Grossforschungszentrum in der Helmholtz-Gemeinschaft

Mehr

1. Referenzdatentypen: Felder und Strings. Referenz- vs. einfache Datentypen. Rückblick: Einfache Datentypen (1) 4711 r

1. Referenzdatentypen: Felder und Strings. Referenz- vs. einfache Datentypen. Rückblick: Einfache Datentypen (1) 4711 r 1. Felder und Strings Eigenschaften von Referenzdatentypen 1. Referenzdatentypen: Felder und Strings Referenzdatentypen sind Konstrukte, mit deren Hilfe wir aus einfachen Datentypen neue eigene Typen erzeugen

Mehr

1. Referenzdatentypen: Felder und Strings

1. Referenzdatentypen: Felder und Strings 1. Felder und Strings Eigenschaften von Referenzdatentypen 1. Referenzdatentypen: Felder und Strings Referenzdatentypen sind Konstrukte, mit deren Hilfe wir aus einfachen Datentypen neue eigene Typen erzeugen

Mehr

Informatik 1 ( ) D-MAVT F2010. Schleifen, Felder. Yves Brise Übungsstunde 5

Informatik 1 ( ) D-MAVT F2010. Schleifen, Felder. Yves Brise Übungsstunde 5 Informatik 1 (251-0832-00) D-MAVT F2010 Schleifen, Felder Nachbesprechung Blatt 3 Aufgabe 1 ASCII... A > a Vorsicht: Lösen Sie sich von intuitiven Schlussfolgerungen. A ist nicht grösser als a, denn in

Mehr

Programmieren I. Kapitel 12. Referenzen

Programmieren I. Kapitel 12. Referenzen Programmieren I Kapitel 12. Referenzen Kapitel 12: Referenzen Ziel: Die Wahrheit über Objekte Lebensdauer Speicherverwaltung Parameterübergabemechanismen in Methoden Gleichheiten, Kopien Arrays Speicherbereinigung

Mehr

Programmieren in C. Eine Einführung in die Programmiersprache C. Prof. Dr. Nikolaus Wulff

Programmieren in C. Eine Einführung in die Programmiersprache C. Prof. Dr. Nikolaus Wulff Programmieren in C Eine Einführung in die Programmiersprache C Prof. Dr. Nikolaus Wulff Textausgabe per printf Die Funktion printf ist kein Bestandteil der C Sprache sondern gehört zur C Bibliothek. printf

Mehr

Tag 4 Repetitorium Informatik (Java)

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

Mehr

Arrays 120. array-qualifier static restrict const volatile array-size-expression assignment-expression * simple-declarator identifier

Arrays 120. array-qualifier static restrict const volatile array-size-expression assignment-expression * simple-declarator identifier Arrays 120 direct-declarator simple-declarator ( simple-declarator ) function-declarator array-declarator array-declarator direct-declarator [ [ array-qualifier-list ] [ array-size-expression ] ] array-qualifier-list

Mehr

C/C++-Programmierung

C/C++-Programmierung 1 C/C++-Programmierung Speicherverwaltung, 0, const Sebastian Hack Christoph Mallon (hack mallon)@cs.uni-sb.de Fachbereich Informatik Universität des Saarlandes Wintersemester 2009/2010 2 Speicherverwaltung

Mehr

Kapitel 4: Zeiger. Inhalt. Zeiger Zeigerarithmetik

Kapitel 4: Zeiger. Inhalt. Zeiger Zeigerarithmetik Wintersemester 2005/06 Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung) (Vorlesung) Prof. Dr. Günter Rudolph Fachbereich Informatik Lehrstuhl

Mehr

Polymorphismus 179. Function.h. #include <string>

Polymorphismus 179. Function.h. #include <string> Polymorphismus 179 #include Function.h class Function { public: virtual ~Function() {}; virtual std::string get_name() const = 0; virtual double execute(double x) const = 0; }; // class Function

Mehr

Informatik 1 ( ) D-MAVT F2011. Klassen, Funktionen. Yves Brise Übungsstunde 9

Informatik 1 ( ) D-MAVT F2011. Klassen, Funktionen. Yves Brise Übungsstunde 9 Informatik 1 (251-0832-00) D-MAVT F2011 Klassen, Funktionen Nachbesprechung Blatt 7, Aufgabe 1 Wenn Funktion void als Rückgabetyp hat, dann ist return nicht notwendig. void swap3(int* a, int* b) { int

Mehr

Was Mathematiker schon vor Jahrhunderten erfunden haben, gibt es jetzt endlich in ihrer Programmiersprache:

Was Mathematiker schon vor Jahrhunderten erfunden haben, gibt es jetzt endlich in ihrer Programmiersprache: Kapitel 8 Operatoren Was Mathematiker schon vor Jahrhunderten erfunden haben, gibt es jetzt endlich in ihrer Programmiersprache: Operatoren definieren Es ist in C++ möglich, Operatoren wie +, oder für

Mehr

Numerische Methoden und Algorithmen in der Physik

Numerische Methoden und Algorithmen in der Physik Numerische Methoden und Algorithmen in der Physik Hartmut Stadie, Christian Autermann 13.11.2008 Numerische Methoden und Algorithmen in der Physik Hartmut Stadie 1/ 28 Einführung Numerische Integration

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

C-Pointer (Zeiger, Adressen) vs. C++ Referenzen

C-Pointer (Zeiger, Adressen) vs. C++ Referenzen C-Pointer (Zeiger, Adressen) vs. C++ Referenzen Der Pointer (C/C++): In C/C++ ist der Pointer ein eigener Datentyp, der auf Variablen/Objekte zeigen kann. Indem man den Pointer dereferenziert, gewinnt

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

2 Programmieren in Java I noch ohne Nachbearbeitung

2 Programmieren in Java I noch ohne Nachbearbeitung 1 2 Programmieren in Java I noch ohne Nachbearbeitung 2.1 Was sind Programme? Eingabe = Verarbeitung = Ausgabe Die Eingabe kann sein Konstanten im Quelltext; Kommandozeilenparameter oder interaktive Eingabe

Mehr

Algorithmen und Datenstrukturen

Algorithmen und Datenstrukturen Algorithmen und Datenstrukturen 3.2 Auswahl an Stringfunktionen W. Tasin, M.Sc. Fakultät 04 tasin@hm.edu Allgemeines (1) Die ANSI-Norm definiert auch nützliche Funktionen zur ASCIIZ-Stringbearbeitung.

Mehr

RO-Tutorien 17 und 18

RO-Tutorien 17 und 18 RO-Tutorien 17 und 18 Tutorien zur Vorlesung Rechnerorganisation Christian A. Mandery TUTORIENWOCHE 2 AM 10.05.2012 KIT Universität des Landes Baden-Württemberg und nationales Forschungszentrum in der

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

! "eine Zeichenkette\nmit Doppelapostroph \" und Backslash \\"

! eine Zeichenkette\nmit Doppelapostroph \ und Backslash \\ 1.2. Datentypen Zeichenketten: Zeichenkettenliterale wie»üblich«"eine Zeichenkette\nmit Doppelapostroph \" und Backslash \\" werden als 0-terminierte char-felder realisiert char* hello = "Hello, World";

Mehr

Objektorientierte Programmierung mit C++ SS 2007

Objektorientierte Programmierung mit C++ SS 2007 Objektorientierte Programmierung mit C++ SS 2007 Andreas F. Borchert Universität Ulm 5. Juni 2007 Polymorphismus #include Function.h class Function { public: virtual ~Function() {}; virtual std::string

Mehr

Dynamische Speicherverwaltung

Dynamische Speicherverwaltung Dynamische Speicherverwaltung INE2 M. Thaler, tham@zhaw.ch Office TG208 http://www.zhaw.ch/~tham 1 Um was geht es? Bisjetzt Beispiel Ranglistenprogramm für Sportveranstaltungen Besser - genaue Anzahl Teilnehmer

Mehr

Felder (Arrays) und Zeiger (Pointers) - Teil I

Felder (Arrays) und Zeiger (Pointers) - Teil I Felder (Arrays) und Zeiger (Pointers) - Teil I Felder: Motivation Wir können jetzt über Zahlen iterieren: for (int i=0; i

Mehr

Einführung in die Programmierung II. 5. Zeiger

Einführung in die Programmierung II. 5. Zeiger Einführung in die Programmierung II 5. Zeiger Thomas Huckle, Stefan Zimmer 16. 5. 2007-1- Bezüge als Objekte Bisher kennen wir als Bezüge (Lvalues) nur Variablennamen Jetzt kommt eine neue Sorte dazu,

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

Einführung in die Programmierung Wintersemester 2014/15

Einführung in die Programmierung Wintersemester 2014/15 Einführung in die Programmierung Wintersemester 2014/15 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund : Zeiger Inhalt Zeiger Zeigerarithmetik Zeiger für

Mehr

Praxisorientierte Einführung in C++ Lektion: "Dynamische Speicherverwaltung"

Praxisorientierte Einführung in C++ Lektion: Dynamische Speicherverwaltung Praxisorientierte Einführung in C++ Lektion: "Dynamische Speicherverwaltung" Christof Elbrechter Neuroinformatics Group, CITEC May 15, 2014 Christof Elbrechter Praxisorientierte Einführung in C++ May 15,

Mehr