Grundlagen der Informatik 11. Zeiger

Größe: px
Ab Seite anzeigen:

Download "Grundlagen der Informatik 11. Zeiger"

Transkript

1 11. Zeiger Motivation Zeiger und Adressen Zeiger und Funktionen Zeiger und Arrays Dynamische Objekte Grundlagen der Informatik (Alex Rempel) 1

2 Motivation Dynamische Speicherverwaltung Oft müssen große Speicherblöcke verwaltet werden Eine Speicherarithmetik wird gebraucht, um den Adressraum im Code komfortabel duchzugehen Beispiel Mehrdimensionale Arrays sind sehr unhandlich, stattdessen wird oft ein großer eindimensinaler Array verwendet Vorteil: Parameterübergabe an Funktionen vereinfacht int iarray[12][5]; int i = iarray[3][2]; int iarray[60]; // 12x5 int i = iarray[3*5+2]; Grundlagen der Informatik (Alex Rempel) 2

3 Motivation Dynamische Speicheranpassung Arrays müssen eine feste Größe haben, aber oft werden Arrays mit dynamischer Größe gebraucht Beispiel: Benutzer gibt Anzahl n der einzugebenden Elemente ein Array wird erst danach dynamisch mit der Größe n erzeugt Dynamische Parameterübergabe Ferner auch die Möglichkeit, Arrays zurückzugeben Etc. Grundlagen der Informatik (Alex Rempel) 3

4 Zeiger und Adressen Zeiger (Pointer) sind Variablen type * name; Inhalt der Variable: Adresse im Speicher oder NULL Adresse im Speicher ist bei 32b Systemen eine 32b große Zahl Ändert sich der Inhalt, zeigt die Variable auf eine andere Speicherzelle Inhalt NULL bedeutet, dass die Variable auf nichts zeigt Beim Anwenden von Rechenoperatoren auf den Zeiger kann der Speicher entsprechend durchlaufen werden Beim Dereferenzieren eines Zeigers bekommt man die Variable, auf welche der Zeiger zeigt Der type des Zeigers gibt dabei den Typ der Variable an Grundlagen der Informatik (Alex Rempel) 4

5 Deklaration Grundlagen der Informatik Zeiger und Adressen Von rechts nach links interpretieren: type * name; Variable name ist ein Zeiger auf etwas vom Typ type Initialisierung Zuweisung einer Adresse: ipointer zeigt nun auf Variable inumber Falls nicht sofort zugewiesen wird, sollte immer die Initialisierung auf NULL erfolgen (sonst Fehlerquelle): int* ipointer = NULL; int inumber = 42; int* ipointer = &inumber; Grundlagen der Informatik (Alex Rempel) 5

6 Zeiger und Adressen double* ppointer = NULL; Name Adresse Inhalt ppointer 0x0031FB60 0x == &ppointer == ppointer double* ppointer = NULL; double dnumber = 0.2; dnumber 0x0031FC == &dnumber == dnumber double* ppointer = NULL; double dnumber = 0.2; ppointer = &dnumber; ppointer 0x0031FB60 0x0031FC50 == &ppointer == ppointer == &dnumber dnumber 0x0031FC == &dnumber == ppointer == dnumber == *ppointer Grundlagen der Informatik (Alex Rempel) 6

7 Zeiger und Adressen double* ppointer = NULL; double dnumber = 0.2; ppointer = &dnumber; Name Adresse Inhalt ppointer 0x0031FB60 0x0031FC50 == &ppointer == ppointer == &dnumber dnumber 0x0031FC == &dnumber == ppointer == dnumber == *ppointer double* ppointer = NULL; double dnumber = 0.2; ppointer = &dnumber; *ppointer = *ppointer + 1.3; ppointer 0x0031FB60 0x0031FC50 == &ppointer == ppointer == &dnumber dnumber 0x0031FC == &dnumber == ppointer == dnumber == *ppointer Dereferenzierung Grundlagen der Informatik (Alex Rempel) 7

8 Zeiger und Adressen p is saved in 0x0031FB60 and points to 0x (no value)...dnumber=0.2 in address 0x0031FC50 #include <iostream> p is saved in 0x0031FB60 and points to 0x0031FC50 (value = 0.2) #include <iomanip> using namespace std; const unsigned char g_ucaddresswidth = 8; void printpointer(double*& p) { cout << "p is saved in 0x" << setw(g_ucaddresswidth) << &p << " and points to 0x" << setw(g_ucaddresswidth) << p; if (p!= NULL) cout << " (value = " << *p << ")" << endl; else cout << " (no value)" << endl; void main() { cout << hex << setfill('0'); // set format for all cout double* ppointer = NULL; printpointer(ppointer); // pointing to NULL double dnumber = 0.2; cout << "...dnumber=" << dnumber << " in address 0x" << setw(g_ucaddresswidth) << &dnumber << endl; ppointer = &dnumber; printpointer(ppointer); // pointing to dnumber Grundlagen der Informatik (Alex Rempel) 8

9 Zeiger und Adressen Übung für zu Hause: welche Ausgabe wird erzeugt? (Hinweis: Adressen können nicht vorhergesagt werden) #include <iostream> using namespace std; void main() { double d1 = 1, d2 = 2; const double dconst1 = 11, dconst2 = 12; double* pdouble = &d1; const double* pconstdouble = &dconst1; double* const pdoubleconst = &d2; const double* const pconstdoubleconst = &dconst2; cout << d1 - *pdouble << "..." << *pdouble << "..." << pdouble << endl; cout << *pconstdouble << "..." << pconstdouble << endl; cout << *pdoubleconst << "..." << pdoubleconst << endl; cout << *pconstdoubleconst << "..." << pconstdoubleconst << endl; pconstdouble = &dconst2; cout << *pdouble + *pconstdouble + *pdoubleconst + *pconstdoubleconst << endl; Grundlagen der Informatik (Alex Rempel) 9

10 Zeiger und Adressen Merken: Zeiger immer initialisieren Immer mit NULL initialisieren, falls nicht gleich zugewiesen, sonst gibt es folgende Auswirkungen: Inhalt eines nicht initialisierten Zeigers ist undefiniert Die Zeigervariable zeigt somit auf eine unbekannte Adresse Lesen und Schreiben wird auf fremden Speicher ausgeführt int* p; cout << p << "=" << *p << endl; *p = 42; cout << p << "=" << *p << endl; Grundlagen der Informatik (Alex Rempel) 10

11 Zeiger und Adressen Merken: Zeiger immer initialisieren Immer mit NULL initialisieren, falls nicht gleich zugewiesen, sonst gibt es folgende Auswirkungen: Inhalt eines nicht initialisierten Zeigers ist undefiniert Die Zeigervariable zeigt somit auf eine unbekannte Adresse Lesen und Schreiben wird auf fremden Speicher ausgeführt p zeigt auf eine unbekannte Adresse int* p; cout << p << "=" << *p << endl; *p = 42; cout << p << "=" << *p << endl; 759AB6F0= AB6F0=42 Im Release Modus ausführbar Es wird eine Adresse gelesen und geschrieben, die zu diesem Zeitpunkt sehr wahrscheinlich einer anderen Variable gehört Grundlagen der Informatik (Alex Rempel) 11

12 Zeiger und Adressen Konstante Zeiger und Zeiger auf Konstanten Zeiger auf Konstanten, Beispiel: const int i = 4; Somit kann und darf i nicht mehr geändert werden Folgendes funktioniert also nicht: Sonst könnte man so i ändern: Richtige Deklaration: int* p = &i; *p = 7; const int* p = &i; Konstante Zeiger double* const p = &dnumber; Zeiger wird sofort initialisiert und wird nicht mehr geändert Der Wert der Variable auf die er zeigt kann aber verändert werden (außer die ist auch konstant) Grundlagen der Informatik (Alex Rempel) 12

13 Zeiger und Adressen Zeiger auf Zeiger (auf Zeiger...) Zeiger speichern Adressen von anderen Variablen Zeiger selbst sind auch Variablen Zeiger können also auch auf andere Zeiger zeigen Tipp: Deklaration immer von rechts nach links lesen #include <iostream> #include <string> using namespace std; strtext 0x... What the hell?! pempty 0x... &strtext void main() { string* pempty = NULL; string** ppstring = &pempty; string strtext = "What the hell?!"; *ppstring = &strtext; ppstring 0x... &pempty cout << *pempty << endl; What the hell?!...am Ende... Grundlagen der Informatik (Alex Rempel) 13

14 Zeiger und Funktionen Parameterübergabe mit Zeigern wie mit Variablen Wertübergabe und Referenzübergabe möglich #include <iostream> using namespace std; void IncrementValueAndMakeNULL_WRONG(int* p) { *p = *p + 1; p = NULL; void IncrementValueAndMakeNULL_CORRECT(int*& p) { *p = *p + 1; p = NULL; void main() { int i = 1; int* p1 = &i; int* p2 = &i; cout << "p1=" << p1 << ", p2=" << p2 << ", i=" << i << endl; IncrementValueAndMakeNULL_WRONG(p1); IncrementValueAndMakeNULL_CORRECT(p2); cout << "p1=" << p1 << ", p2=" << p2 << ", i=" << i << endl; p ist eine neue Variable, daher wirkt sich p=null nicht auf p1 unten aus p ist eine Referenz auf p2, also wirkt sich p=null auch auf p2 unten aus p1=0037f7c0, p2=0037f7c0, i=1 p1=0037f7c0, p2= , i=3 Grundlagen der Informatik (Alex Rempel) 14

15 Zeiger und Funktionen Rückgabewert einer Funktion darf ein Zeiger sein #include <iostream> using namespace std; pmax value = 15 int* getmax(int& a, int& b) { if (a > b) return &a; return &b; void main() { int i1 = 3, i2 = 15; int* pmax = getmax(i1,i2); cout << "pmax value = " << *pmax << endl; Grundlagen der Informatik (Alex Rempel) 15

16 Zeiger und Funktionen Rückgabewert einer Funktion darf ein Zeiger sein Achtung: beim Zurückgeben eines Zeigers immer darauf achten, dass zurückgegebene Adresse im Zeiger auch nach dem Aufruf der Funktion gültig ist #include <iostream> using namespace std; int* getmax(int a, int b) { if (a > b) return &a; return &b; pmax value = Unter der zurückgegebenen Adresse in pmax gibt es keine Variable mehr, weil a und b nur in der Funktion getmax existierten void main() { int i1 = 3, i2 = 15; int* pmax = getmax(i1,i2); cout << "pmax value = " << *pmax << endl; Grundlagen der Informatik (Alex Rempel) 16

17 Zeiger und Arrays Name eines Arrays ist Zeiger auf die Startadresse Jede Indexoperation auf ein Array kann somit auch in Form einer Zeigeroperation erfolgen Im Allgemeinen effizienter, aber schwerer zu verstehen #include <iostream> using namespace std; 3 == 3 4 == 4 1 == 1 void main() { const int isize = 3; int ii[isize] = {3,4,1; int* p = ii; // == &ii[0] for (int i=0; i < isize; ++i) cout << ii[i] << " == " << *(p+i) << endl; Zeigerarithmetik, p+2 bedeutet z.b.: gehe im Speicher von Adresse in p 2*sizeof(int) weiter (int* p). Klappt, weil Arrays zusammenhängend gespeichert werden. Grundlagen der Informatik (Alex Rempel) 17

18 Zeiger und Arrays Zeigerarithmetik Operationen (immer in Abhängigkeit vom Zeigertyp): Zeiger plus/minus Ganzzahl, Zeiger minus Zeiger, Vergleich von Zeigern #include <iostream> #include <iomanip> using namespace std; ( )(A)(B)( ) void printmemorychars(unsigned char* pfirstincl, unsigned char* plastexkl) { while(pfirstincl!= plastexkl) { cout << "(" << *pfirstincl << ")"; ++pfirstincl; cout << endl; void main() { cout << hex << setfill('0'); unsigned char cc[] = {'\0','A','B','\0'; int isizechars = sizeof(cc)/sizeof(unsigned char); // 4 printmemorychars(cc,cc+isizechars); Grundlagen der Informatik (Alex Rempel) 18

19 Zeigerarithmetik Zeiger und Arrays ( )(A)(B)( ) (0x4100)(0x0042) #include <iostream> #include <iomanip> using namespace std; // from other file void printmemorychars(unsigned char* pfirstincl, unsigned char* plastexkl); void printmemoryshorts(unsigned short* pfirstincl, unsigned short* plastexkl) { while(pfirstincl!= plastexkl) { cout << "(0x" << setw(4) << *pfirstincl << ")"; ++pfirstincl; cout << endl; void main() { cout << hex << setfill('0'); unsigned char cc[] = {'\0','A','B','\0'; int isizechars = sizeof(cc)/sizeof(unsigned char); // 4 int isizeshorts = sizeof(cc)/sizeof(unsigned short); // 2 printmemorychars(cc,cc+isizechars); printmemoryshorts((unsigned short*)cc,(unsigned short*)cc+isizeshorts); Grundlagen der Informatik (Alex Rempel) 19

20 Zeigerarithmetik Grundlagen der Informatik Zeiger und Arrays Kann sehr effizent, aber sehr unlesbar sein, Ablauf hier in while: Zuweisung '=': kopiere aktuelles Zeichen aus *pfrom nach *pto Post-Inkrement 'pfrom++': pfrom auf nächstes Zeichen Bedingung auf Zeichen in *pto: true solange nicht '\0' Post-Inkrement 'pto++': pto auf nächstes Zeichen #include <iostream> using namespace std; void copytext(unsigned char* pfrom, unsigned char* pto) { while( *pto++ = *pfrom++ ); void main() { unsigned char uctext1[10] = "Lolcat!"; unsigned char uctext2[10] = {0; cout << "'" << uctext1 << "', '" << uctext2 << "'" << endl; copytext(uctext1,uctext2); cout << "'" << uctext1 << "', '" << uctext2 << "'" << endl; 'Lolcat!', '' 'Lolcat!', 'Lolcat!' Grundlagen der Informatik (Alex Rempel) 20

21 Zeiger und Arrays Array als Funktionsparameter mit Zeigern #include <iostream> using namespace std; Length 'Lolcat!' = 7 unsigned long getlength(unsigned char* ptext) { unsigned long ullength = 0; while (*ptext!= '\0') { ++ptext; ++ullength; return ullength; void main() { unsigned char uctext[] = "Lolcat!"; cout << "Length '" << uctext << "' = " << getlength(uctext) << endl; Grundlagen der Informatik (Alex Rempel) 21

22 Zeiger und Arrays Array als Funktionsparameter mit Zeigern #include <iostream> using namespace std; Parameter als Array und als Zeiger gültig Length 'Lolcat!' = 7 unsigned long getlength(unsigned char ptext[]) { unsigned long ullength = 0; while (*ptext!= '\0') { ++ptext; ++ullength; return ullength; void main() { unsigned char uctext[] = "Lolcat!"; cout << "Length '" << uctext << "' = " << getlength(uctext) << endl; Grundlagen der Informatik (Alex Rempel) 22

23 Zeiger und Arrays Array als Funktionsparameter mit Zeigern Beispiel mit Nutzung der Zeigerarithmetik #include <iostream> using namespace std; Length 'Lolcat!' = 7 Length 'cat!' = 4 unsigned long getlength(unsigned char* ptext) { unsigned long ullength = 0; while (*ptext++!= '\0') ++ullength; return ullength; Zeigerarithmetik void main() { unsigned char uctext[] = "Lolcat!"; cout << "Length '" << uctext << "' = " << getlength(uctext) << endl; cout << "Length '" << uctext+3 << "' = " << getlength(uctext+3) << endl; Grundlagen der Informatik (Alex Rempel) 23

24 Dynamische Objekte Es muss eine Möglichkeit geben, neue Objekte, die es zur Compilezeit (beim Programmieren) noch nicht gab, dynamisch zur Laufzeit zu erzeugen Beispiel: Array erst nach der Eingabe der Größe erzeugen Programmspeicher wird hierfür aufgeteilt: Statischer Teil für Objekte zur Compilezeit Dynamischer Teil für Objekte zur Laufzeit Permanenter Teil für globale und statische Objekte Permanenter Teil für den Programmcode Grundlagen der Informatik (Alex Rempel) 24

25 Programmspeicher Dynamische Objekte Code Permanente Objekte global static Heap Objekte dynamisch freier Bereich Stack Objekte Auto Variablen Parameter 0x xFFFFFFFF zur Compilezeit berechnet Objekte auf dem Stack Werden automatisch erzeugt Variable in einem Block angelegt Werden automatisch freigegeben Block wird abgeschlossen, lokale Variable wird freigegeben Objekte auf dem Heap Müssen manuell erzeugt und freigegeben werden Grundlagen der Informatik (Alex Rempel) 25

26 Dynamische Objekte Objekte auf dem Stack (Zugriff über Variablen) Vorteil: Objekte werden automatisch erzeugt und freigegeben Nachteil: Objektanzahl muss zur Pogrammierzeit bekannt sein if (inumber > 6) { int a = 8; Für Variable a wird hier automatisch Speicher auf dem Stack reserviert Variable a ist nur in dem lokalen Block gültig, der Speicher auf dem Stack wird am Ende des Block automatisch freigegeben Grundlagen der Informatik (Alex Rempel) 26

27 Dynamische Objekte Objekte auf dem Heap (Zugriff über Zeiger) Vorteil: Objektanzahl darf beim Programmieren unbekannt sein Nachteil: Objekte müssen manuell freigegeben werden Syntax: erzeugen mit new, freigeben mit delete if (inumber > 6) { int* a = new int(8); delete a; Für Zeigervariable a wird hier automatisch Speicher auf dem Stack reserviert, aber die Variable selbst zeigt auf einen dynamisch erzeugten neuen Speicher, in dem ein int gespeichert wird Gibt den Speicher frei, auf den Zeiger a zeigt Grundlagen der Informatik (Alex Rempel) 27

28 Dynamische Objekte Ein dynamisch auf dem Heap erzeugtes Objekt ist einfach nur ein Teil des Speichers, welcher je nach Zeigertyp unterschiedlich interpretiert wird #include <iostream> #include <iomanip> using namespace std; void printnumber(unsigned int& uinumber) { cout << "0x" << hex << setfill('0') << setw(8) << uinumber << endl; void main() { unsigned int inumber = 0x0F0F; unsigned int* pnumber = &inumber; printnumber(*pnumber); pnumber = new unsigned int; // 4 bytes reserved without initialization printnumber(*pnumber); *pnumber = 0xABCD; // setting int value as usual printnumber(*pnumber); delete pnumber; // freing reserved 4 bytes from heap memory 0x00000f0f 0x x0000abcd Grundlagen der Informatik (Alex Rempel) 28

29 Dynamische Arrays #include <iostream> using namespace std; void inputdata(int* pdata, int isize) { while (isize--) cin >> *pdata++; Dynamische Objekte void printdata(int ii[], int isize) { while (isize--) cout << " --> " << *ii++ << endl; void main() { int isize = 0; cout << "How many elements (1..10)? "; cin >> isize; if (isize > 10) isize = 10; else if (isize < 1) isize = 1; int* parray = new int[isize]; inputdata(parray,isize); printdata(parray,isize); delete [] parray; How many elements (1..10)? > 35 --> > 2 --> 9 Grundlagen der Informatik (Alex Rempel) 29

30 Dynamische Objekte Regeln bei dynamischen Objekten delete darf nur auf Objekte angewendet werden, welche mit new erzeugt wurden delete auf einen NULL Zeiger ist wirkungslos Objekte, die mit new erzeugt wurden, werden nicht automatisch verwaltet und bestehen daher nicht bis zum Ende eines Blocks (Gültigkeitsbereich), sondern bis sie mit delete freigegeben werden Grundlagen der Informatik (Alex Rempel) 30

31 Dynamische Objekte Gefahren bei dynamischen Objekten Heap: Objekt muss mit genau einem new erzeugt und mit genau einem delete freigegeben werden Kein Zeiger zeigt auf das Objekt... gibt es keinen Zugriff mehr auf den Inhalt kann das Objekt nicht mehr freigegeben werden (engl. leak) Mehrere Zeiger zeigen auf das Objekt... darf nur ein Mal freigegeben werden { int* a = new int; // hier memory leak int* a = new int; int* b = a; delete a; *b = 4; // fremder Speicher danach darf kein Zugriff mehr auf dessen Speicher erfolgen Grundlagen der Informatik (Alex Rempel) 31

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

Programmieren in C++ Arrays, Strings und Zeigerarithmetik

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

Mehr

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

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

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

Mehr

6 Speicherorganisation

6 Speicherorganisation Der Speicher des Programms ist in verschiedene Speicherbereiche untergliedert Speicherbereiche, die den eigentlichen Programmcode und den Code der Laufzeitbibliothek enthalten; einen Speicherbereich für

Mehr

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 18

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 18 Kapitel 3 Datentypen und Variablen Seite 1 von 18 Datentypen - Einführung - Für jede Variable muss ein Datentyp festgelegt werden. - Hierdurch werden die Wertemenge und die verwendbaren Operatoren festgelegt.

Mehr

Deklarationen in C. Prof. Dr. Margarita Esponda

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

Mehr

Übungen zur Vorlesung EidP (WS 2015/16) Blatt 6

Übungen zur Vorlesung EidP (WS 2015/16) Blatt 6 Andre Droschinsky Ingo Schulz Dortmund, den 0. Dezember 2015 Übungen zur Vorlesung EidP (WS 2015/16) Blatt 6 Block rot Es können 4 + 1 Punkte erreicht werden. Abgabedatum: 10. Dezember 2015 2:59 Uhr Hinweise

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

2. Semester, 2. Prüfung, Lösung

2. Semester, 2. Prüfung, Lösung 2. Semester, 2. Prüfung, Lösung Name Die gesamte Prüfung bezieht sich auf die Programmierung in C++! Prüfungsdauer: 90 Minuten Mit Kugelschreiber oder Tinte schreiben Lösungen können direkt auf die Aufgabenblätter

Mehr

Klausur in Programmieren

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

Mehr

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

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

Mehr

Klausur in Programmieren

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

Mehr

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

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

Mehr

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

AuD-Tafelübung T-B5b

AuD-Tafelübung T-B5b 6. Übung Sichtbarkeiten, Rekursion, Javadoc Di, 29.11.2011 1 Blatt 5 2 OOP Klassen Static vs. Instanzen Sichtbarkeit 3 Stack und Heap Stack Heap 4 Blatt 6 1 Blatt 5 2 OOP Klassen Static vs. Instanzen Sichtbarkeit

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

Algorithmen und Programmierung II

Algorithmen und Programmierung II Algorithmen und Programmierung II Vererbung Prof. Dr. Margarita Esponda SS 2012 1 Imperative Grundbestandteile Parameterübergabe String-Klasse Array-Klasse Konzepte objektorientierter Programmierung Vererbung

Mehr

Überladen von Operatoren

Überladen von Operatoren - Überladen des Indexoperators [] - Überladen des Ausgabeoperators > Programmieren in C++ Informatik FH Trier C++12-1 ähnlich dem Überladen von Funktionen Überladen

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

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

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

Einführung Datentypen Verzweigung Schleifen. Java Crashkurs. Kim-Manuel Klein May 4, 2015

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

Mehr

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

4 Schleifen und Dateien

4 Schleifen und Dateien 4 Schleifen und Dateien 4.1 Übungsaufgabe 4.1.1 Aufgabe 1 Schreiben Sie drei C++ Programme: pword_for.cxx, pword_while.cxx, pword_do.cxx. Die Programme sollen den Benutzer höchstens 5 Mal nach einem Passwort

Mehr

Unterprogramme. Funktionen. Bedeutung von Funktionen in C++ Definition einer Funktion. Definition einer Prozedur

Unterprogramme. Funktionen. Bedeutung von Funktionen in C++ Definition einer Funktion. Definition einer Prozedur Unterprogramme Unterprogramme sind abgekapselte Programmfragmente, welche es erlauben, bestimmte Aufgaben in wiederverwendbarer Art umzusetzen. Man unterscheidet zwischen Unterprogrammen mit Rückgabewert

Mehr

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

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

Mehr

Grundlagen C und C++ Einheit 03: Grundlagen in C++ Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme

Grundlagen C und C++ Einheit 03: Grundlagen in C++ Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Grundlagen C und C++ Einheit 03: Grundlagen in C++ Lorenz Schauer Lehrstuhl für Mobile und Verteilte Systeme Teil 1: Wiederholung C Heutige Agenda Nutzereingaben verarbeiten Teil 2: Grundlagen in C++ Erstes

Mehr

Repetitorium Informatik (Java)

Repetitorium Informatik (Java) Repetitorium Informatik (Java) Tag 6 Lehrstuhl für Informatik 2 (Programmiersysteme) Übersicht 1 Klassen und Objekte Objektorientierung Begrifflichkeiten Deklaration von Klassen Instanzmethoden/-variablen

Mehr

Dynamische Speicherverwaltung

Dynamische Speicherverwaltung Dynamische Speicherverwaltung Tim Dobert 17.05.2013 Inhaltsverzeichnis 1 Allgemeines zur Speichernutzung 2 2 Ziel und Nutzen 2 3 Anwendung in C 2 3.1 malloc............................... 3 3.2 calloc...............................

Mehr

Einleitung. Informationsquellen: - Webseite zur Vorlesung, Abschnitt Informationen zu C und C++ Kurzeinführung in C/C++

Einleitung. Informationsquellen: - Webseite zur Vorlesung, Abschnitt Informationen zu C und C++ Kurzeinführung in C/C++ Informationsquellen: - Webseite zur Vorlesung, Abschnitt Informationen zu C und C++ 1 Einleitung Vorteile von Java: gut strukturiert mit hohem Funktionsumfang (mächtige Standardbibliothek) weitestgehend

Mehr

Vorkurs C++ Programmierung

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

Mehr

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

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

Mehr

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

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

Mehr

Elementare Datentypen in C++

Elementare Datentypen in C++ Elementare Datentypen in C++ bool signed/unsigned char signed/unsigned short int signed/unsigned int signed/unsigned long int (signed/unsigned long long int) float double long double void enum char Der

Mehr

Zusammengesetzte Datentypen -- Arrays und Strukturen

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

Mehr

Grundlagen der Programmierung Prof. H. Mössenböck. 10. Klassen

Grundlagen der Programmierung Prof. H. Mössenböck. 10. Klassen Grundlagen der Programmierung Prof. H. Mössenböck 10. Klassen Motivation Wie würde man ein Datum speichern (z.b. 13. November 2004)? 3 Variablen int da; String month; int ear; Unbequem, wenn man mehrere

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

Objektorientiertes Programmieren für Ingenieure

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

Mehr

Es ist für die Lösung der Programmieraufgabe nicht nötig, den mathematischen Hintergrund zu verstehen, es kann aber beim Verständnis helfen.

Es ist für die Lösung der Programmieraufgabe nicht nötig, den mathematischen Hintergrund zu verstehen, es kann aber beim Verständnis helfen. Ziele sind das Arbeiten mit Funktionen und dem Aufzählungstyp (enum), sowie - einfache Verzweigung (if else) - Alternativen switch case - einfache Schleifen (while oder do while) Aufgabe 3: Diese Aufgabe

Mehr

Einführung in die Programmiersprache C

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

Mehr

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 16

Wintersemester Maschinenbau und Kunststofftechnik. Informatik. Tobias Wolf http://informatik.swoke.de. Seite 1 von 16 Kapitel 5 Arithmetische Operatoren Seite 1 von 16 Arithmetische Operatoren - Man unterscheidet unäre und binäre Operatoren. - Je nachdem, ob sie auf einen Operanden wirken, oder eine Verknüpfung zweier

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

Übungspaket 29 Dynamische Speicherverwaltung: malloc() und free()

Übungspaket 29 Dynamische Speicherverwaltung: malloc() und free() Übungspaket 29 Dynamische Speicherverwaltung malloc() und free() Übungsziele Skript In diesem Übungspaket üben wir das dynamische Alloziieren 1. und Freigeben von Speicherbereichen 2. von Zeichenketten

Mehr

5. Elementare Befehle und Struktogramme

5. Elementare Befehle und Struktogramme 5. Elementare Befehle und Struktogramme Programmablauf Beschreibung des Programmablaufs mittel grafischer Symbole Beispiel : Flussdiagramme ja nein Besser : Struktogramme Dr. Norbert Spangler / Grundlagen

Mehr

Zeiger in C. Thomas Mechelke August 2011

Zeiger in C. Thomas Mechelke August 2011 Zeiger in C Thomas Mechelke August 2011 Dieser Artikel ist die Ausarbeitung meiner Präsentation über Zeiger in C. Er ist in zwei Teile zerlegt: Der Erste Teil beschäftigt sich mit den Grundlagen zu Zeigern

Mehr

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

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

Mehr

Effizientes Memory Debugging in C/C++

Effizientes Memory Debugging in C/C++ Effizientes Memory Debugging in C/C++ Adam Szalkowski Embedded Computing Conference 2014 Ursachen/ Symptome Debugging Tools Ursachen / Symptome Was habe ich falsch gemacht? Was kann denn passieren im schlimmsten

Mehr

Annehmende Schleife do while

Annehmende Schleife do while Annehmende Schleife do while Schleife mit nachfolgender Bedingungsprüfung: annehmende Schleife B S Mit B wird eine Bedingung (logischer Ausdruck) bezeichnet, S ist ein Strukturblock. Zuerst wird S ausgeführt,

Mehr

Pass by Value Pass by Reference Defaults, Overloading, variable Parameteranzahl

Pass by Value Pass by Reference Defaults, Overloading, variable Parameteranzahl Funktionen Zusammenfassung von Befehlssequenzen als aufrufbare/wiederverwendbare Funktionen in einem Programmblock mit festgelegter Schnittstelle (Signatur) Derartige prozedurale Programmierung erlaubt

Mehr

Datenstrukturen, Alignment Stack Prozeduraufruf, Parameterübergabe und -rückgabe (Calling Conventions) Leaf procedures

Datenstrukturen, Alignment Stack Prozeduraufruf, Parameterübergabe und -rückgabe (Calling Conventions) Leaf procedures Vorbesprechung U8 Datenstrukturen, Alignment Stack Prozeduraufruf, Parameterübergabe und -rückgabe (Calling Conventions) Leaf procedures Basistypen Alignment der Basistypen auf deren Grösse Grössen (abhängig

Mehr

Klausur in Programmieren

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

Mehr

Klausur in Programmieren

Klausur in Programmieren Studiengang Sensorik/Sensorsystemtechnik Note / normierte Punkte Klausur in Programmieren Wintersemester 2010/11, 17. Februar 2011 Dauer: 1,5h Hilfsmittel: Keine (Wörterbücher sind auf Nachfrage erlaubt)

Mehr

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

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

Mehr

Grundlagen der Programmierung Prof. H. Mössenböck. 6. Methoden

Grundlagen der Programmierung Prof. H. Mössenböck. 6. Methoden Grundlagen der Programmierung Prof. H. Mössenböck 6. Methoden Parameterlose Methoden Beispiel: Ausgabe einer Überschrift class Sample { static void printheader() { // Methodenkopf Out.println("Artikelliste");

Mehr

Escape-Sequenzen. Dr. Norbert Spangler

Escape-Sequenzen. Dr. Norbert Spangler Escape-Sequenzen Einzelzeichen Bedeutung ASCII- ASCII-Code \a alert BEL 07 \b backspace BS 08 \t horizontal tab HT 09 \n line feed LF 0A \v vertical tab VT 0B \f form feed FF 0C \r carriage return CR 0D

Mehr

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

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

Mehr

Programmiersprachen Einführung in C. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm

Programmiersprachen Einführung in C. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm. Unser erstes C-Programm Programmiersprachen Einführung in C Teil 2: Prof. Dr. int main (int argc, char *argv[]) int sum = 0; for (i = 0; i

Mehr

Early first draft Höllische Programmiersprachen Seminar im WS 2014/15 Speichermanagement

Early first draft Höllische Programmiersprachen Seminar im WS 2014/15 Speichermanagement Early first draft Höllische Programmiersprachen Seminar im WS 2014/15 Speichermanagement Max Haslbeck Technische Universität München 20.01.2015 Zusammenfassung 1 Einleitung 2 Begriffsklärung Heutzutage

Mehr

JAVA-Datentypen und deren Wertebereich

JAVA-Datentypen und deren Wertebereich Folge 8 Variablen & Operatoren JAVA 8.1 Variablen JAVA nutzt zum Ablegen (Zwischenspeichern) von Daten Variablen. (Dies funktioniert wie beim Taschenrechner. Dort können Sie mit der Taste eine Zahl zwischenspeichern).

Mehr

Speicher und Adressraum

Speicher und Adressraum Linearer Speicher (Adressraum) Technische Universität München Speicher und Adressraum Freie Speicherhalde (Heap) Freier Speicherstapel (Stack) Globale Variablen Bibliotheksfunktionen Laufzeitsystem Programmcode

Mehr

Java Einführung Methoden in Klassen

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

Mehr

Funktionen und Parameter

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

Mehr

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

Angewandte Mathematik und Programmierung

Angewandte Mathematik und Programmierung Angewandte Mathematik und Programmierung Einführung in das Konzept der objektorientierten Anwendungen zu mathematischen Rechnens SS2013 Inhalt Projekt Vorlesung: praktische Implementierung üben Ein und

Mehr

Javakurs für Anfänger

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

Mehr

Einstieg in die Informatik mit Java

Einstieg in die Informatik mit Java 1 / 26 Einstieg in die Informatik mit Java Felder, mehrdimensional Gerd Bohlender Institut für Angewandte und Numerische Mathematik Gliederung 2 / 26 1 Überblick: mehrdimensionale Felder 2 Vereinbarung

Mehr

Eine Klasse beschreibt Objekte mit gleichen Attributen und Methoden.

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

Mehr

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

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

Mehr

Einführung in die Programmierung

Einführung in die Programmierung : Inhalt Einführung in die Programmierung Wintersemester 2009/0 : Technik vs. Iteration Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund 2 Definition (einfache,

Mehr

Integer Integer Integer (Voreinstellung) Integer Gleitkomma Gleitkomma leer/unbestimmt Integer ohne Vorzeichen Integer (explizit) mit Vorzeichen

Integer Integer Integer (Voreinstellung) Integer Gleitkomma Gleitkomma leer/unbestimmt Integer ohne Vorzeichen Integer (explizit) mit Vorzeichen 1 C-Schlüsselwörter Schlüsselwörter sind in allen Programmiersprachen reservierte Wörter. In C sind auch alle Namen _[A-Z]... und... reserviert, auch _... bereichsweise. Weiterhin durch die Standard-

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

Werkzeuge zur Programmentwicklung

Werkzeuge zur Programmentwicklung Werkzeuge zur Programmentwicklung B-15 Bibliothek Modulschnittstellen vorübersetzte Module Eingabe Editor Übersetzer (Compiler) Binder (Linker) Rechner mit Systemsoftware Quellmodul (Source) Zielmodul

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 4-1 Übung 1) Schreiben Sie ein Programm, das die Fläche unter einer Parabel, also das Integral

Mehr

Kapitel 3: Variablen

Kapitel 3: Variablen Kapitel 3: Variablen Thema: Programmieren Seite: 1 Kapitel 3: Variablen Im letzten Kapitel haben wir gelernt, bestimmte Ereignisse zu wiederholen solange eine Bedingung erfüllt ist. Nun möchten wir aber

Mehr

Kapitel 9: Klassen und höhere Datentypen. Klassen und höhere. Objekte, Felder, Methoden. Küchlin/Weber: Einführung in die Informatik

Kapitel 9: Klassen und höhere Datentypen. Klassen und höhere. Objekte, Felder, Methoden. Küchlin/Weber: Einführung in die Informatik Klassen und höhere Datentypen Objekte, Felder, Methoden Küchlin/Weber: Einführung in die Informatik Klassen Klasse (class) stellt einen (i.a. benutzerdefinierten) Verbund-Datentyp dar Objekte sind Instanzen

Mehr

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

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

Mehr

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

DAP2-Programmierpraktikum Einführung in C++ (Teil 1) DAP2-Programmierpraktikum Einführung in C++ (Teil 1) Carsten Gutwenger 11. April 2008 Lehrstuhl 11 Algorithm Engineering Fakultät für Informatik, TU Dortmund Überblick Mein erstes C++-Programm Namensräume

Mehr

Kurzeinführung in C++

Kurzeinführung in C++ Kurzeinführung in C++ Johannes J. Schneider 27.10.2004 1 Einleitung C++ ist eine heutzutage in vielen Bereichen sehr häufig verwendete Programmiersprache, die auf der Programmiersprache C aufsetzt, aber

Mehr

Programmierung in C. Grundlagen. Stefan Kallerhoff

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

Mehr

Modul 122 VBA Scribt.docx

Modul 122 VBA Scribt.docx Modul 122 VBA-Scribt 1/5 1 Entwicklungsumgebung - ALT + F11 VBA-Entwicklungsumgebung öffnen 2 Prozeduren (Sub-Prozeduren) Eine Prozedur besteht aus folgenden Bestandteilen: [Private Public] Sub subname([byval

Mehr

magnum C++ WALTER SAUMWEBER kompakt komplett kompetent

magnum C++ WALTER SAUMWEBER kompakt komplett kompetent magnum C++ WALTER SAUMWEBER kompakt komplett kompetent Quickview... 5 Liebe Leserin, lieber Leser... 13 Teil 1 Grundlagen... 15 1 Was ist Programmieren?... 17 1.1 Was ist eigentlich ein Computerprogramm?...

Mehr

Einfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

Einfache Arrays. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung Annabelle Klarl Zentralübung zur Vorlesung Einführung in die Informatik: http://www.pst.ifi.lmu.de/lehre/wise-13-14/infoeinf WS13/14 Action required now 1. Smartphone: installiere die App "socrative student"

Mehr

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

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

Mehr

Javakurs 2013 Objektorientierung

Javakurs 2013 Objektorientierung Javakurs 2013 Objektorientierung Objektorientierte Programmierung I Armelle Vérité 7 März 2013 Technische Universität Berlin This work is licensed under the Creative Commons Attribution-ShareAlike 3.0

Mehr

Einführung in die Programmierung

Einführung in die Programmierung : Inhalt Einführung in die Programmierung Wintersemester 2010/11 Prof. Dr. Günter Rudolph Lehrstuhl für Algorithm Engineering Fakultät für Informatik TU Dortmund Wiederholungen - while - do-while - for

Mehr

Hochschule Darmstadt Informatik-Praktikum WS 2016/2017 WIng Bachelor 4. Aufgabenblatt Modularisierung, Funktionen, Unterprogramme

Hochschule Darmstadt Informatik-Praktikum WS 2016/2017 WIng Bachelor 4. Aufgabenblatt Modularisierung, Funktionen, Unterprogramme Ziele sind das Arbeiten mit Funktionen, sowie - einfache Verzweigung (if else) - Alternativen switch case - einfache Schleifen (while oder do while) Aufgabe 4: Diese Aufgabe basiert auf der Aufgabe 3.

Mehr

Schleifen in C/C++/Java

Schleifen in C/C++/Java Schleifen in C/C++/Java Alle 3 Sprachen stellen mindestens die folgenden 3 Schleifenkonstruktionen zur Verfügung. In C gibt es auch keine weiteren, C++, Java und C# haben noch weitere nützliche Varianten.

Mehr

Einfache Rechenstrukturen und Kontrollfluss II

Einfache Rechenstrukturen und Kontrollfluss II Einfache Rechenstrukturen und Kontrollfluss II Martin Wirsing in Zusammenarbeit mit Moritz Hammer und Axel Rauschmayer http://www.pst.informatik.uni-muenchen.de/lehre/ss06/infoii/ SS 06 Ziele Lernen imperative

Mehr

12. Vererbung. Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04)

12. Vererbung. Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04) 12. Vererbung Prof. Dr. Markus Gross Informatik I für D-ITET (WS 03/04)!Vererbung Konzept!Protected Section!Virtuelle Mitgliedsfunktionen!Verwendung von Vererbung Copyright: M. Gross, ETHZ, 2003 2 Vererbung!

Mehr

Themen. Statische Methoden inline Methoden const Methoden this Zeiger Destruktor Kopierkonstruktor Überladen von Operatoren

Themen. Statische Methoden inline Methoden const Methoden this Zeiger Destruktor Kopierkonstruktor Überladen von Operatoren Themen Statische Methoden inline Methoden const Methoden this Zeiger Destruktor Kopierkonstruktor Überladen von Operatoren Statische Methoden Klassenmethoden Merkmal der Klasse nicht eines einzelnen Objekts

Mehr

13. Vererbung. Prof. Dr. François E. Cellier Informatik I für D-ITET (HS 2012)

13. Vererbung. Prof. Dr. François E. Cellier Informatik I für D-ITET (HS 2012) 13. Vererbung Prof. Dr. François E. Cellier Informatik I für D-ITET (HS 2012) Vererbung Konzept Protected Section Virtuelle Mitgliedsfunktionen Verwendung von Vererbung Vererbung Vererbung ist ein Mechanismus,

Mehr

Ziel, Inhalt. Programmieren in C++ Wir lernen wie man Funktionen oder Klassen einmal schreibt, so dass sie für verschiedene Datentypen verwendbar sind

Ziel, Inhalt. Programmieren in C++ Wir lernen wie man Funktionen oder Klassen einmal schreibt, so dass sie für verschiedene Datentypen verwendbar sind Templates und Containerklassen Ziel, Inhalt Wir lernen wie man Funktionen oder Klassen einmal schreibt, so dass sie für verschiedene Datentypen verwendbar sind Templates und Containerklassen 1 Ziel, Inhalt

Mehr

Zählen von Objekten einer bestimmten Klasse

Zählen von Objekten einer bestimmten Klasse Zählen von Objekten einer bestimmten Klasse Ziel, Inhalt Zur Übung versuchen wir eine Klasse zu schreiben, mit der es möglich ist Objekte einer bestimmten Klasse zu zählen. Wir werden den ++ und den --

Mehr

Datenfelder (Arrays) Vektoren, Matrizen, Tabellen. Dr. Beatrice Amrhein

Datenfelder (Arrays) Vektoren, Matrizen, Tabellen. Dr. Beatrice Amrhein Datenfelder (Arrays) Vektoren, Matrizen, Tabellen Dr. Beatrice Amrhein Überblick Eindimensionale Arrays o Deklaration, Initialisierung, Zugriff Mehrdimensionale Arrays o Deklaration, Initialisierung, Zugriff

Mehr

Operatoren und Ausdrücke

Operatoren und Ausdrücke Informatik für Elektrotechnik und Informationstechnik Benedict Reuschling benedict.reuschling@h-da.de Hochschule Darmstadt Fachbereich Informatik WS 2013/14 Überblick 1 2 / 11 Motivation Es gibt eine Reihe

Mehr

Einführung in die STL

Einführung in die STL 1/29 in die STL Florian Adamsky, B. Sc. (PhD cand.) florian.adamsky@iem.thm.de http://florian.adamsky.it/ cbd Softwareentwicklung im WS 2014/15 2/29 Outline 1 3/29 Inhaltsverzeichnis 1 4/29 Typisierung

Mehr

Übungen zu C++ Kapitel 1

Übungen zu C++ Kapitel 1 Übungen zu C++ Kapitel 1 Aufgabe 1 Ergänze den Text. a) Die sechs logischen Einheiten eines Computers sind Eingabe-Einheit, Ausgabe-Einheit, RAM, ALU, CPU, Plattenspeicher. b) Die Programme, welche Hochsprachenprogramme

Mehr

Moderne C-Programmierung

Moderne C-Programmierung Xpert.press Moderne C-Programmierung Kompendium und Referenz Bearbeitet von Helmut Schellong 1. Auflage 2005. Buch. xii, 280 S. ISBN 978 3 540 23785 3 Format (B x L): 15,5 x 23,5 cm Weitere Fachgebiete

Mehr

9 Zeiger (Pointer). Dynamischer Speicher

9 Zeiger (Pointer). Dynamischer Speicher 9 Zeiger (Pointer). Dynamischer Speicher Jörn Loviscach Versionsstand: 25. September 2013, 18:07 Die nummerierten Felder sind absichtlich leer, zum Ausfüllen beim Ansehen der Videos: http://www.j3l7h.de/videos.html

Mehr