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

Save this PDF as:
 WORD  PNG  TXT  JPG

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 außerhalb 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; a = 2 b = 7 p = 0 a = 2 b = 7 p = &a a = 4 b = 7 p = &a a = 4 b = 7 p = &b return 0; a = 4 b = 8 p = &b 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] a[0] a[1] a[2] a[3] a[4] a[5] a[6] a[7] a[8] a[9] p = &a[4] a q = p+2 = a+4 Die Differenz zweier Zeiger liefert den Abstand der Feldelemente: int a[10], *p = &a[4], *q = &a[6]; q-p hat den Wert 2.

9 Kompaktkurs C++ Zeiger und Felder C 9 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+2) p[2] Weil der Feldname ein konstanter Zeiger ist, gibt ++a einen Fehler. Dagegen ist ++p für den nicht-konstanten Zeiger p erlaubt.

10 Kompaktkurs C++ Zeiger und Felder C 10 #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;

11 Kompaktkurs C++ Dynamische Speicherverwaltung mit new und delete C 11 Mit dem Operator new kann man neuen Speicher auf dem Heap 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 darf dann nicht mehr dereferenziert werden. Man darf auch nicht ein zweites Mal delete für diesen Zeiger aufrufen. Wendet man delete auf einen Null-Zeiger an, so passiert nichts. Vorsicht: delete p, q; gibt nur den Speicher frei, auf den q zeigt. Das Komma ist hier der Sequenzoperator!

12 Kompaktkurs C++ new[] und delete[] C 12 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.

13 Kompaktkurs C++ Fehlerbehandlung beim Allozieren C 13 #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;

14 Kompaktkurs C++ Zeiger und allozierter Speicher C 14 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. Man darf mit delete nur Speicher freigeben, der mit new alloziert wurde. Speicher, der mit new[] alloziert wurde, darf nur mit delete[] freigegeben werden. Auf andere Zeiger (außer dem Null- Zeiger) darf weder delete noch delete[] angewendet werden.

15 Kompaktkurs C++ Zeiger, Felder und Funktionen C 15 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:

16 Kompaktkurs C++ Zeiger und const C 16 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[])

17 Kompaktkurs C++ const-zeiger und Referenzen C 17 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:

18 Kompaktkurs C++ Zeiger und Referenzen C 18 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;

19 Kompaktkurs C++ Zeiger, Referenzen und Felder C 19 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;

20 Kompaktkurs C++ Felder, Zeiger und Referenzen als Rückgabetypen C 20 Funktionen können keine Felder zurückgeben: int[5] func1(); // Fehler! int[] func2(); // Fehler! Aber sie können Zeiger und Referenzen zurückgeben: int* func1(); // OK int& func2(); // OK Man muss darauf achten, dass die Daten noch vorhanden sind, auf die Zeiger oder Referenz zeigen: int* func1() int a[10]; return a; // Das Feld a wird beim Verlassen von func1 geloescht. // Das gibt Probleme (und hoffentlich eine Warnung)! int* func2() int *p = new int[10]; // Der Speicher bleibt auch nach func2 erhalten. return p; // OK

21 Kompaktkurs C++ Beispiel: Skalarprodukt C 21 #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

22 Kompaktkurs C++ Beispiel: std::sort C 22 #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:

23 Kompaktkurs C++ Zeichenketten C 23 Zeichenketten (Strings) sind Felder von chars, z. B.: char s[5]; Es gibt viele C-Bibliotheksfunktionen, die mit Strings operieren (z. B. Strings kopieren, vergleichen, suchen, zusammenfügen etc.). Sie können durch #include<cstring> eingebunden werden. Damit man diesen Funktionen nur den Zeiger auf den Anfang des Strings und nicht noch die Länge übergeben muss, schließt man die Strings mit einem Null-Zeichen ab. Dieses markiert das Ende des Strings: char s[5] = T, e, x, t, \0 ; Bei der Ausgabe eines Strings wird nicht der Zeiger (wie sonst bei Feldern üblich) ausgegeben, sondern der Inhalt des Feldes. Das abschließende Null-Zeichen wird nicht ausgegeben: std::cout << s << std::endl; liefert Text

24 Kompaktkurs C++ Beispiel: strcpy, strcmp C 24 #include <iostream> #include <cstring> // fuer String-Operationen int main() int feld[5] = 1, 2, 3, 4, 5 ; char str1[5] = T, e, x, t, \0 ; char str2[5]; std::cout << feld << \n // Zeiger: 0x7ffffffb2810 << str1 << \n // Zeichenkette: Text << (void*)str1 << std::endl; // Zeiger: 0x7ffffffb2800 std::strcpy(str2,str1); // String kopieren std::cout << str2 << std::endl; bool b1 = (str1 == str2); bool b2 = (std::strcmp(str1,str2) == 0); // Zeigervergleich: false // Stringvergleich: true std::cout << b1 << << b2 << std::endl; return 0;

25 Kompaktkurs C++ Implementierung von strcpy C 25 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++) ) ;

26 Kompaktkurs C++ String-Literale C 26 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. "" ist ein String-Literal, das nur aus dem Null-Zeichen besteht. "X" ist ein String-Literal aus zwei Zeichen. X ist ein einzelnes Zeichen. Die Literale werden nicht auf dem Stack abgelegt, sondern sind Teil des Programmcodes. Das Ergebnis von "Text" ist ein Zeiger auf diesen Speicherbereich. Dieser Speicherbereich darf nur gelesen, aber nicht beschrieben werden. Ein String-Literal kann auch zur Initialisierung eines Feldes verwendet werden. Dadurch wird die Zeichenkette in das Feld kopiert. Diese Kopie darf beschrieben werden.

27 Kompaktkurs C++ String-Literale C 27 #include <iostream> int main() const char *p1 = "XY"; // p1 zeigt auf den Programmcode char *p2 = "XY"; // Unschoen: p2[0]= Z fuehrt zum Absturz const char s1[3] = "XY"; // Kopie von "XY" in s1 const char s2[] = "XY"; // Laenge wird automatisch bestimmt char s3[3] = "XY"; // Kopie von "XY" in s3 s3[0] = Z ; // Kopie wird geaendert std::cout << p1 << << (void*)p1 << \n // XY 0x400c48 << p2 << << (void*)p2 << \n // XY 0x400c48 << s1 << << (void*)s1 << \n // XY 0x7fffffd2ac30 << s2 << << (void*)s2 << \n // XY 0x7fffffd2ac20 << s3 << << (void*)s3 << \n // ZY 0x7fffffd2ac10 << "XY" << << (void*)"xy" << \n // XY 0x400c48 << std::flush; return 0;

28 Kompaktkurs C++ Kommandozeilenparameter C 28 Die Kommandozeilenparameter werden der Funktion main 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 (!std::strcmp(argv[i],"paul")) std::cout << "Paul gefunden!\n"; return 0;

29 Kompaktkurs C++ Kommandozeilenparameter C 29 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?"

30 Kompaktkurs C++ void-zeiger C 30 Neben Zeigern auf gewöhnliche Datentypen gibt es noch Zeiger auf void: void* p; Da er auf keinen richtigen Datentyp zeigt, kann ein solcher Zeiger nicht dereferenziert (*p) werden. Auch Zeigerarithmetik (++p, p-4) ist nicht möglich, da hierfür die Größe des zugrundeliegenden Datentyps bekannt sein müsste. Ein gewöhnlicher Zeiger kann einem Zeiger auf void zugewiesen werden. Für die andere Richtung ist explizite Typkonvertierung erforderlich. void-zeiger werden hauptsächlich für die Übergabe von Daten an Funktionen eingesetzt, die die Daten weiterreichen, ohne sie zu bearbeiten. In C lassen sich damit generische Algorithmen schreiben, in C++ gibt es dafür geeignetere Mittel.

31 Kompaktkurs C++ Funktionszeiger C 31 #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;

32 Kompaktkurs C++ Funktionszeiger und -referenzen C 32 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.

33 Kompaktkurs C++ Funktionszeiger C 33 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

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

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

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 5. Sven Groß. 13. Mai Sven Groß (IGPM, RWTH Aachen) C++ Teil Mai / 18

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

Mehr

Zeiger: 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Einführung in die Programmierung zusammengesetzte Datentypen, dynamischer Speicher

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

Mehr

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Mehr

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

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

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

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

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

3.2 Datentypen und Methoden

3.2 Datentypen und Methoden Kap03.fm Seite 217 Dienstag, 7. September 2010 1:48 13 3.2 Datentypen und Methoden 217 3.2 Datentypen und Methoden Wie bei vielen höheren Programmiersprachen gibt es auch in Java einfache und strukturierte

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

Vorlesung Programmieren

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

Mehr

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

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

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

Einführung in die Programmierung Wintersemester 2017/18

Einführung in die Programmierung Wintersemester 2017/18 Einführung in die Programmierung Wintersemester 2017/18 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

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

5.1 Mehr Basistypen. (Wie viele Werte kann man mit n Bit darstellen?)

5.1 Mehr Basistypen. (Wie viele Werte kann man mit n Bit darstellen?) 5.1 Mehr Basistypen Außer int, stellt Java weitere Basistypen zur Verfügung. Zu jedem Basistyp gibt es eine Menge möglicher Werte. Jeder Wert eines Basistyps benötigt die gleiche Menge Platz, um ihn im

Mehr

Welche Informatik-Kenntnisse bringen Sie mit?

Welche Informatik-Kenntnisse bringen Sie mit? Welche Informatik-Kenntnisse bringen Sie mit? So gehen Sie vor! Lösen Sie die Aufgaben der Reihe nach von 1 bis 20, ohne das Lösungsblatt zur Hilfe zu nehmen. Der Schwierigkeitsgrad der Aufgaben nimmt

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

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

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

Mehr

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

Kurze Einführung in die Programmiersprache C++ und in Root

Kurze Einführung in die Programmiersprache C++ und in Root Kurze Einführung in die Programmiersprache C++ und in Root Statistik, Datenanalyse und Simulation; 31.10.2006 Inhalt 1 Einführung in die Programmiersprache C++ Allgemeines Variablen Funktionen 2 1 Einführung

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

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

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

Mehr

Software Entwicklung 1

Software Entwicklung 1 Software Entwicklung 1 Annette Bieniusa AG Softech FB Informatik TU Kaiserslautern Einführung in C Bieniusa Software Entwicklung 1 2/ 50 Warum C in SE1? Meist verwendete Sprache weltweit Viele wichtige

Mehr

Felder, Zeiger und Adreßrechnung

Felder, Zeiger und Adreßrechnung Felder, Zeiger und Adreßrechnung Felder bestehen aus Variablen eines einzigen Datentyps. Bisher kennen wir eindimensionale Felder. In C sind Felder mit beliebigen Dimensionen möglich. Unsere räumliche

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

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

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

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

Mehr

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

Einführung in die Programmierung

Einführung in die Programmierung : Inhalt Einführung in die Programmierung Wintersemester 2010/11 arithmetik für dynamischen Speicher Anwendungen Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU

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

Zeiger. C-Kurs 2012, 2. Vorlesung. Tino Kutschbach 10.

Zeiger. C-Kurs 2012, 2. Vorlesung. Tino Kutschbach  10. Zeiger C-Kurs 2012, 2. Vorlesung Tino Kutschbach tino.kutschbach@campus.tu-berlin.de http://wiki.freitagsrunde.org 10. September 2012 This work is licensed under the Creative Commons Attribution-ShareAlike

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

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

Funktionen, Zeiger und Arrays in C Software Entwicklung 1

Funktionen, Zeiger und Arrays in C Software Entwicklung 1 Funktionen, Zeiger und Arrays in C Software Entwicklung 1 Annette Bieniusa, Mathias Weber, Peter Zeller 1 Funktionen Mit Hilfe von Funktionen kann man (wie mit Prozeduren bzw. Methoden in Java) eine Problemstellung

Mehr

Advanced Programming in C

Advanced Programming in C Advanced Programming in C Pointer und Listen Institut für Numerische Simulation Rheinische Friedrich-Wilhelms-Universität Bonn Oktober 2013 Überblick 1 Variablen vs. Pointer - Statischer und dynamischer

Mehr

Einführung in die Programmierung Arrays, Zeiger, Strings. Arvid Terzibaschian

Einführung in die Programmierung Arrays, Zeiger, Strings. Arvid Terzibaschian Einführung in die Programmierung Arvid Terzibaschian 1 Arrays 2 Arrays: Motivation Gegeben: monatliche Durchschnittstemperaturen der letzten 5 Jahre Gesucht: Mittelwerte für Jahre, Monate, Jahreszeiten,

Mehr

10 Die Programmiersprache C99: Zusammenfassung

10 Die Programmiersprache C99: Zusammenfassung 10 Die Programmiersprache C99: Zusammenfassung Jörn Loviscach Versionsstand: 25. September 2014, 18:40 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen beim Ansehen der Videos: http://www.j3l7h.de/videos.html

Mehr

Dynamische Datentypen. Destruktor, Copy-Konstruktor, Zuweisungsoperator, Dynamischer Datentyp, Vektoren

Dynamische Datentypen. Destruktor, Copy-Konstruktor, Zuweisungsoperator, Dynamischer Datentyp, Vektoren Dynamische Datentypen Destruktor, Copy-Konstruktor, Zuweisungsoperator, Dynamischer Datentyp, Vektoren Probleme mit Feldern (variabler Länge) man kann sie nicht direkt kopieren und zuweisen Probleme mit

Mehr

Klausur: Informatik I am 06. Februar 2009 Gruppe: D Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte:

Klausur: Informatik I am 06. Februar 2009 Gruppe: D Dirk Seeber, h_da, Fb Informatik. Nachname: Vorname: Matr.-Nr.: Punkte: Seite 1 von 10 Hiermit bestätige ich, dass ich die Übungsleistungen als Voraussetzung für diese Klausur in folgender Übung erfüllt habe. Jahr: Übungsleiter: Unterschrift: 1. Aufgabe ( / 12 Pkt.) Was liefert

Mehr

Einführung in die Programmiersprache C

Einführung in die Programmiersprache C Einführung in die Programmiersprache C 2 Arrays und Pointer Alexander Sczyrba Robert Homann Georg Sauthoff Universität Bielefeld, Technische Fakultät statische Arrays Deklaration (eindimensional): /* 40

Mehr

Angewandte Mathematik und Programmierung

Angewandte Mathematik und Programmierung Angewandte Mathematik und Programmierung Einführung in das Konzept der objektorientierten Anwendungen zu wissenschaftlichen Rechnens mit C++ und Matlab SS2013 Inhalt Bis jetzt: Heute: Entwicklungsumgebung

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

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

Die Programmiersprache C99: Zusammenfassung

Die Programmiersprache C99: Zusammenfassung Die Programmiersprache C99: Zusammenfassung Jörn Loviscach Versionsstand: 7. Dezember 2010, 19:30 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen in der Vorlesung. Videos dazu: http://www.youtube.com/joernloviscach

Mehr

Bereits behandelt: Einfache Datentypen, Felder, Zeiger, Referenzen. Kontrollstrukturen. Funktionen. Heute: Datentypen: Structs, Unions

Bereits behandelt: Einfache Datentypen, Felder, Zeiger, Referenzen. Kontrollstrukturen. Funktionen. Heute: Datentypen: Structs, Unions Kompaktkurs C++ Themen D 1 Bereits behandelt: Einfache Datentypen, Felder, Zeiger, Referenzen Kontrollstrukturen Funktionen Heute: Datentypen: Structs, Unions Datentypen: typedef, sizeof, Typkonvertierung

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

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

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

Mehr

Tag 8 Repetitorium Informatik (Java)

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

Mehr

1 Klassen und Objekte

1 Klassen und Objekte 1 Klassen und Objekte Datentyp - Spezifikation des Typs von Datenobjekten Datenstruktur - logische Ordnung von Elementen eines Datentyps - zur (effizienten) Speicherung, Verwaltung, Zugriff - auf die Elemente

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

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

C++ Teil 2. Sven Groß. 16. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil Apr / 22 C++ Teil 2 Sven Groß IGPM, RWTH Aachen 16. Apr 2015 Sven Groß (IGPM, RWTH Aachen) C++ Teil 2 16. Apr 2015 1 / 22 Themen der letzten Vorlesung Hallo Welt Elementare Datentypen Ein-/Ausgabe Operatoren Sven

Mehr

Programmieren in Java

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

Mehr

Programmiertechnik 1. Unit 9: Programmiersprache C Zeiger und Felder. Andreas Polze 1

Programmiertechnik 1. Unit 9: Programmiersprache C Zeiger und Felder. Andreas Polze 1 Programmiertechnik 1 Unit 9: Programmiersprache C Zeiger und Felder Andreas Polze 1 Ablauf Heap und Stack Zeiger und Adressen Zeiger und Funktionen (-argumente) Zeiger und Arrays Adreßarithmetik Beispiel:

Mehr