informatik 1 Übung 5. nachbesprechung Übung 5 korrekturen ich prüfe keine syntax – schreibt...
TRANSCRIPT
![Page 1: Informatik 1 Übung 5. NACHBESPRECHUNG Übung 5 Korrekturen Ich prüfe keine Syntax – schreibt wenn was nicht kompiliert Lösungen müssen nicht perfekt sein](https://reader035.vdocuments.pub/reader035/viewer/2022081513/55204d7549795902118ca892/html5/thumbnails/1.jpg)
Informatik 1
Übung 5
![Page 2: Informatik 1 Übung 5. NACHBESPRECHUNG Übung 5 Korrekturen Ich prüfe keine Syntax – schreibt wenn was nicht kompiliert Lösungen müssen nicht perfekt sein](https://reader035.vdocuments.pub/reader035/viewer/2022081513/55204d7549795902118ca892/html5/thumbnails/2.jpg)
NACHBESPRECHUNGÜbung 5
![Page 3: Informatik 1 Übung 5. NACHBESPRECHUNG Übung 5 Korrekturen Ich prüfe keine Syntax – schreibt wenn was nicht kompiliert Lösungen müssen nicht perfekt sein](https://reader035.vdocuments.pub/reader035/viewer/2022081513/55204d7549795902118ca892/html5/thumbnails/3.jpg)
Korrekturen
• Ich prüfe keine Syntax– schreibt wenn was nicht kompiliert
• Lösungen müssen nicht perfekt sein– Testat gibt es für ernst gemeinte Lösungsversuche
• Formatiert euren Code schön– sonst geb ich mir auch keine Mühe
• Musterlösungen anschauen
![Page 4: Informatik 1 Übung 5. NACHBESPRECHUNG Übung 5 Korrekturen Ich prüfe keine Syntax – schreibt wenn was nicht kompiliert Lösungen müssen nicht perfekt sein](https://reader035.vdocuments.pub/reader035/viewer/2022081513/55204d7549795902118ca892/html5/thumbnails/4.jpg)
Ich gebe nicht auf
• Code schön formatierenif (x > 0) { a = 1; b = 1;
// Kommentar. if (y > 0) { c = 1; } else { d = 1; }
e = 1;}
![Page 5: Informatik 1 Übung 5. NACHBESPRECHUNG Übung 5 Korrekturen Ich prüfe keine Syntax – schreibt wenn was nicht kompiliert Lösungen müssen nicht perfekt sein](https://reader035.vdocuments.pub/reader035/viewer/2022081513/55204d7549795902118ca892/html5/thumbnails/5.jpg)
Variablentyp
• Richtige Typen verwendenTyp Verwendung Werte
bool Wahrheitswert true, false
char/wchar_t Ein Zeichen 'a', 'b', ...
int Eine ganze Zahl 0, 1, ...
float/double Eine reelle Zahl 0.0, 0.1, ...
![Page 6: Informatik 1 Übung 5. NACHBESPRECHUNG Übung 5 Korrekturen Ich prüfe keine Syntax – schreibt wenn was nicht kompiliert Lösungen müssen nicht perfekt sein](https://reader035.vdocuments.pub/reader035/viewer/2022081513/55204d7549795902118ca892/html5/thumbnails/6.jpg)
Ganzzahldivision
• Auf Ganzzahl-Division achtenAusdruck Wert
1/10 0
1.0/10 0.1
1/10.0 0.1
![Page 7: Informatik 1 Übung 5. NACHBESPRECHUNG Übung 5 Korrekturen Ich prüfe keine Syntax – schreibt wenn was nicht kompiliert Lösungen müssen nicht perfekt sein](https://reader035.vdocuments.pub/reader035/viewer/2022081513/55204d7549795902118ca892/html5/thumbnails/7.jpg)
Charakter
• Buchstaben entsprechen Zahlen• Wenn möglich Buchstaben verwenden
bool isCapital = 'A' < c && c < 'Z'; bool isCapital = 65 < c && c < 90;
char c = 'A'; char c = 65;
if(antwort == 'y') if(antwort == 121)
![Page 8: Informatik 1 Übung 5. NACHBESPRECHUNG Übung 5 Korrekturen Ich prüfe keine Syntax – schreibt wenn was nicht kompiliert Lösungen müssen nicht perfekt sein](https://reader035.vdocuments.pub/reader035/viewer/2022081513/55204d7549795902118ca892/html5/thumbnails/8.jpg)
Identische Blöcke
• Copy-Paste vermeiden
if(i<10) { switch(i) { case 0: cout << "Null"; break; case 1: cout << "Eins"; break; }} else { switch(i%10) { case 0: cout << "Null"; break; case 1: cout << "Eins"; break; }}
string s;switch(i%10) { case 0: s = "Null"; break; case 1: s = "Eins"; break;}
if(i<10) { cout << s;} else { cout << s;}
![Page 9: Informatik 1 Übung 5. NACHBESPRECHUNG Übung 5 Korrekturen Ich prüfe keine Syntax – schreibt wenn was nicht kompiliert Lösungen müssen nicht perfekt sein](https://reader035.vdocuments.pub/reader035/viewer/2022081513/55204d7549795902118ca892/html5/thumbnails/9.jpg)
Division durch 0
• Arithmetische Operationen prüfen– Division durch 0– Logarithmus einer negativen Zahl– ...
• In if-Bedingung: als erstes prüfen– Vorzeitiger Abbruch der Auswertung
int x = 1;int y = 0;int z = x / y;
if(y!=0 && x/y > 1)
![Page 10: Informatik 1 Übung 5. NACHBESPRECHUNG Übung 5 Korrekturen Ich prüfe keine Syntax – schreibt wenn was nicht kompiliert Lösungen müssen nicht perfekt sein](https://reader035.vdocuments.pub/reader035/viewer/2022081513/55204d7549795902118ca892/html5/thumbnails/10.jpg)
Arithmetische Operationen
• CPU kann nur multiplizieren und addieren• xy, sin(x), √x, ... müssen berechnet werden– Iterative multiplikation (siehe Übung 4)– Tabellierte Werte– Gleichungssystem lösen– Taylorreihe– ...
![Page 11: Informatik 1 Übung 5. NACHBESPRECHUNG Übung 5 Korrekturen Ich prüfe keine Syntax – schreibt wenn was nicht kompiliert Lösungen müssen nicht perfekt sein](https://reader035.vdocuments.pub/reader035/viewer/2022081513/55204d7549795902118ca892/html5/thumbnails/11.jpg)
WIEDERHOLUNGVorlesung 5
![Page 12: Informatik 1 Übung 5. NACHBESPRECHUNG Übung 5 Korrekturen Ich prüfe keine Syntax – schreibt wenn was nicht kompiliert Lösungen müssen nicht perfekt sein](https://reader035.vdocuments.pub/reader035/viewer/2022081513/55204d7549795902118ca892/html5/thumbnails/12.jpg)
VARIABLENEinzelne Werte
![Page 13: Informatik 1 Übung 5. NACHBESPRECHUNG Übung 5 Korrekturen Ich prüfe keine Syntax – schreibt wenn was nicht kompiliert Lösungen müssen nicht perfekt sein](https://reader035.vdocuments.pub/reader035/viewer/2022081513/55204d7549795902118ca892/html5/thumbnails/13.jpg)
Variablen
• Variablen in Speicherzellen gespeichert• Jede Speicherzelle hat Adresse und Inhalt• Vereinfachtes Bespiel– Nur integer– Nur 7 Speicherzellen
![Page 14: Informatik 1 Übung 5. NACHBESPRECHUNG Übung 5 Korrekturen Ich prüfe keine Syntax – schreibt wenn was nicht kompiliert Lösungen müssen nicht perfekt sein](https://reader035.vdocuments.pub/reader035/viewer/2022081513/55204d7549795902118ca892/html5/thumbnails/14.jpg)
Variablen
• Variablen in Speicherzellen gespeichert• Jede Speicherzelle hat Adresse und Inhalt
Name Addresse Inhalt
0000
0001
0002
0003
0004
0005
0006
![Page 15: Informatik 1 Übung 5. NACHBESPRECHUNG Übung 5 Korrekturen Ich prüfe keine Syntax – schreibt wenn was nicht kompiliert Lösungen müssen nicht perfekt sein](https://reader035.vdocuments.pub/reader035/viewer/2022081513/55204d7549795902118ca892/html5/thumbnails/15.jpg)
Variablen
• Variablen in Speicherzellen gespeichert• Jede Speicherzelle hat Adresse und Inhalt
Name Addresse Inhalt
x 0000 ???
0001
0002
0003
0004
0005
0006
int x;
![Page 16: Informatik 1 Übung 5. NACHBESPRECHUNG Übung 5 Korrekturen Ich prüfe keine Syntax – schreibt wenn was nicht kompiliert Lösungen müssen nicht perfekt sein](https://reader035.vdocuments.pub/reader035/viewer/2022081513/55204d7549795902118ca892/html5/thumbnails/16.jpg)
Variablen
• Variablen in Speicherzellen gespeichert• Jede Speicherzelle hat Adresse und Inhalt
Name Addresse Inhalt
x 0000 10
0001
0002
0003
0004
0005
0006
int x;x = 10;
![Page 17: Informatik 1 Übung 5. NACHBESPRECHUNG Übung 5 Korrekturen Ich prüfe keine Syntax – schreibt wenn was nicht kompiliert Lösungen müssen nicht perfekt sein](https://reader035.vdocuments.pub/reader035/viewer/2022081513/55204d7549795902118ca892/html5/thumbnails/17.jpg)
Variablen
• Variablen in Speicherzellen gespeichert• Jede Speicherzelle hat Adresse und Inhalt
Name Addresse Inhalt
x 0000 10
y 0001 ???
0002
0003
0004
0005
0006
int x;x = 10;int y;
![Page 18: Informatik 1 Übung 5. NACHBESPRECHUNG Übung 5 Korrekturen Ich prüfe keine Syntax – schreibt wenn was nicht kompiliert Lösungen müssen nicht perfekt sein](https://reader035.vdocuments.pub/reader035/viewer/2022081513/55204d7549795902118ca892/html5/thumbnails/18.jpg)
Variablen
• Variablen in Speicherzellen gespeichert• Jede Speicherzelle hat Adresse und Inhalt
Name Addresse Inhalt
x 0000 10
y 0001 10
0002
0003
0004
0005
0006
int x;x = 10;int y;y = x;
![Page 19: Informatik 1 Übung 5. NACHBESPRECHUNG Übung 5 Korrekturen Ich prüfe keine Syntax – schreibt wenn was nicht kompiliert Lösungen müssen nicht perfekt sein](https://reader035.vdocuments.pub/reader035/viewer/2022081513/55204d7549795902118ca892/html5/thumbnails/19.jpg)
ARRAYSAufeinanderfolgende Werte
![Page 20: Informatik 1 Übung 5. NACHBESPRECHUNG Übung 5 Korrekturen Ich prüfe keine Syntax – schreibt wenn was nicht kompiliert Lösungen müssen nicht perfekt sein](https://reader035.vdocuments.pub/reader035/viewer/2022081513/55204d7549795902118ca892/html5/thumbnails/20.jpg)
Arrays
• Mehrere aufeinanderfolgende Zellen
Name Addresse Inhalt
x 0000 10
y 0001 10
z[0] 0002 ???
z[1] 0003 ???
0004
0005
0006
int x = 10;int y = 10;int z[2];
![Page 21: Informatik 1 Übung 5. NACHBESPRECHUNG Übung 5 Korrekturen Ich prüfe keine Syntax – schreibt wenn was nicht kompiliert Lösungen müssen nicht perfekt sein](https://reader035.vdocuments.pub/reader035/viewer/2022081513/55204d7549795902118ca892/html5/thumbnails/21.jpg)
Arrays
• Mehrere aufeinanderfolgende Zellen
Name Addresse Inhalt
x 0000 10
y 0001 10
z[0] 0002 20
z[1] 0003 30
0004
0005
0006
int x = 10;int y = 10;int z[2];z[0] = 20;z[1] = 30;
![Page 22: Informatik 1 Übung 5. NACHBESPRECHUNG Übung 5 Korrekturen Ich prüfe keine Syntax – schreibt wenn was nicht kompiliert Lösungen müssen nicht perfekt sein](https://reader035.vdocuments.pub/reader035/viewer/2022081513/55204d7549795902118ca892/html5/thumbnails/22.jpg)
POINTER (ZEIGER)Verweise auf Werte
![Page 23: Informatik 1 Übung 5. NACHBESPRECHUNG Übung 5 Korrekturen Ich prüfe keine Syntax – schreibt wenn was nicht kompiliert Lösungen müssen nicht perfekt sein](https://reader035.vdocuments.pub/reader035/viewer/2022081513/55204d7549795902118ca892/html5/thumbnails/23.jpg)
Pointer
• Pointer verweisen auf andere Speicherzellen• Wert vom Pointer– Adresse einer anderen Speicherzelle
// Variablen, welche auf eine andere Speicherzelle zeigt,// welche wiederum den gegebenen Typ speichert.typ* name;
![Page 24: Informatik 1 Übung 5. NACHBESPRECHUNG Übung 5 Korrekturen Ich prüfe keine Syntax – schreibt wenn was nicht kompiliert Lösungen müssen nicht perfekt sein](https://reader035.vdocuments.pub/reader035/viewer/2022081513/55204d7549795902118ca892/html5/thumbnails/24.jpg)
Pointer
• Pointer verweisen auf andere Speicherzellen• Wert vom Pointer– Adresse einer anderen Speicherzelle
int x; // x speichert eine ganze Zahlint* p; // p speichert die Adresse einer ganzen Zahlp = &x; // die Adresse von x wird in p gespeichert
// Variablen, welche auf eine andere Speicherzelle zeigt,// welche wiederum den gegebenen Typ speichert.typ* name;
![Page 25: Informatik 1 Übung 5. NACHBESPRECHUNG Übung 5 Korrekturen Ich prüfe keine Syntax – schreibt wenn was nicht kompiliert Lösungen müssen nicht perfekt sein](https://reader035.vdocuments.pub/reader035/viewer/2022081513/55204d7549795902118ca892/html5/thumbnails/25.jpg)
Pointer
• Pointer verweisen auf andere Speicherzellen
Name Addresse Inhalt
x 0000 10
y 0001 10
p 0002 ???
0003
0004
0005
0006
int x = 10;int y = 10;int* p;
![Page 26: Informatik 1 Übung 5. NACHBESPRECHUNG Übung 5 Korrekturen Ich prüfe keine Syntax – schreibt wenn was nicht kompiliert Lösungen müssen nicht perfekt sein](https://reader035.vdocuments.pub/reader035/viewer/2022081513/55204d7549795902118ca892/html5/thumbnails/26.jpg)
Pointer
• Pointer verweisen auf andere Speicherzellen
Name Addresse Inhalt
x 0000 10
y 0001 10
p 0002 [0001]
0003
0004
0005
0006
int x = 10;int y = 10;int* p;p = &y;
![Page 27: Informatik 1 Übung 5. NACHBESPRECHUNG Übung 5 Korrekturen Ich prüfe keine Syntax – schreibt wenn was nicht kompiliert Lösungen müssen nicht perfekt sein](https://reader035.vdocuments.pub/reader035/viewer/2022081513/55204d7549795902118ca892/html5/thumbnails/27.jpg)
Pointer
• NULL bedeutet „zeigt auf nichts“
Name Addresse Inhalt
x 0000 10
y 0001 10
p 0002 [NULL]
0003
0004
0005
0006
int x = 10;int y = 10;int* p;p = NULL;
![Page 28: Informatik 1 Übung 5. NACHBESPRECHUNG Übung 5 Korrekturen Ich prüfe keine Syntax – schreibt wenn was nicht kompiliert Lösungen müssen nicht perfekt sein](https://reader035.vdocuments.pub/reader035/viewer/2022081513/55204d7549795902118ca892/html5/thumbnails/28.jpg)
Pointer
• Pointer verweisen auf andere Speicherzellen• Dereferenzieren– Zugriff auf die adressierte Speicherzelle
int x;int* p = &x;*p = 10; // p zeigt auf x, also wird in x die 10 gespeichert
![Page 29: Informatik 1 Übung 5. NACHBESPRECHUNG Übung 5 Korrekturen Ich prüfe keine Syntax – schreibt wenn was nicht kompiliert Lösungen müssen nicht perfekt sein](https://reader035.vdocuments.pub/reader035/viewer/2022081513/55204d7549795902118ca892/html5/thumbnails/29.jpg)
Pointer
• Pointer verweisen auf andere Speicherzellen
Name Addresse Inhalt
x 0000 10
y 0001 10
p 0002 [0001]
0003
0004
0005
0006
int x = 10;int y = 10;int* p;p = &y;
![Page 30: Informatik 1 Übung 5. NACHBESPRECHUNG Übung 5 Korrekturen Ich prüfe keine Syntax – schreibt wenn was nicht kompiliert Lösungen müssen nicht perfekt sein](https://reader035.vdocuments.pub/reader035/viewer/2022081513/55204d7549795902118ca892/html5/thumbnails/30.jpg)
Pointer
• Pointer verweisen auf andere Speicherzellen
Name Addresse Inhalt
x 0000 10
y 0001 20
p 0002 [0001]
0003
0004
0005
0006
int x = 10;int y = 10;int* p;p = &y;*p = 20;
![Page 31: Informatik 1 Übung 5. NACHBESPRECHUNG Übung 5 Korrekturen Ich prüfe keine Syntax – schreibt wenn was nicht kompiliert Lösungen müssen nicht perfekt sein](https://reader035.vdocuments.pub/reader035/viewer/2022081513/55204d7549795902118ca892/html5/thumbnails/31.jpg)
Pointer
• &x– Adresse der Variablen x
• *x– Wert der Zelle, auf welche x zeigt– „dem Pfeil folgen“
![Page 32: Informatik 1 Übung 5. NACHBESPRECHUNG Übung 5 Korrekturen Ich prüfe keine Syntax – schreibt wenn was nicht kompiliert Lösungen müssen nicht perfekt sein](https://reader035.vdocuments.pub/reader035/viewer/2022081513/55204d7549795902118ca892/html5/thumbnails/32.jpg)
Pointer
• Beliebig viele Indirektionen
Name Addresse Inhalt
x 0000 10
px 0001 [0000]
ppx 0002 [0001]
pppx 0003 [0002]
0004
0005
0006
int x;int* px = &x;int** ppx = &px;int*** pppx = &ppx;
***pppx = 1;
![Page 33: Informatik 1 Übung 5. NACHBESPRECHUNG Übung 5 Korrekturen Ich prüfe keine Syntax – schreibt wenn was nicht kompiliert Lösungen müssen nicht perfekt sein](https://reader035.vdocuments.pub/reader035/viewer/2022081513/55204d7549795902118ca892/html5/thumbnails/33.jpg)
Pointer-Arithmetik
• Addition auf Adressen• Zeiger + konstante Zahl
Name Addresse Inhalt
x[0] 0000 10
x[1] 0001 10
p 0002 [0000]
q 0003 [0001]
0004
0005
0006
int x[2] = {10,10};int* p = &x;int* q = p+1;
![Page 34: Informatik 1 Übung 5. NACHBESPRECHUNG Übung 5 Korrekturen Ich prüfe keine Syntax – schreibt wenn was nicht kompiliert Lösungen müssen nicht perfekt sein](https://reader035.vdocuments.pub/reader035/viewer/2022081513/55204d7549795902118ca892/html5/thumbnails/34.jpg)
ARRAYS UND ZEIGERGemeinsamkeiten
![Page 35: Informatik 1 Übung 5. NACHBESPRECHUNG Übung 5 Korrekturen Ich prüfe keine Syntax – schreibt wenn was nicht kompiliert Lösungen müssen nicht perfekt sein](https://reader035.vdocuments.pub/reader035/viewer/2022081513/55204d7549795902118ca892/html5/thumbnails/35.jpg)
Arrays
• Name des Arrays = Zeiger auf die erste Zelle
int x[2];
int* p = x; // p zeigt auf das erste Element in xint* p = &(x[0]); // p zeigt auf das erste Element in x
![Page 36: Informatik 1 Übung 5. NACHBESPRECHUNG Übung 5 Korrekturen Ich prüfe keine Syntax – schreibt wenn was nicht kompiliert Lösungen müssen nicht perfekt sein](https://reader035.vdocuments.pub/reader035/viewer/2022081513/55204d7549795902118ca892/html5/thumbnails/36.jpg)
Arrays
• Array-Index = Pointer-Arithmetik
int x[2];
int x1 = x[1]; // x1 wird das zweite Element von x zugewiesenint x1 = *(x+1); // x1 wird das zweite Element von x zugewiesen
![Page 37: Informatik 1 Übung 5. NACHBESPRECHUNG Übung 5 Korrekturen Ich prüfe keine Syntax – schreibt wenn was nicht kompiliert Lösungen müssen nicht perfekt sein](https://reader035.vdocuments.pub/reader035/viewer/2022081513/55204d7549795902118ca892/html5/thumbnails/37.jpg)
LESEN VON ZEIGERN
![Page 38: Informatik 1 Übung 5. NACHBESPRECHUNG Übung 5 Korrekturen Ich prüfe keine Syntax – schreibt wenn was nicht kompiliert Lösungen müssen nicht perfekt sein](https://reader035.vdocuments.pub/reader035/viewer/2022081513/55204d7549795902118ca892/html5/thumbnails/38.jpg)
Leseweise
• Beim Variablennamen starten• Nach aussen arbeiten– nach rechts, dann nach links
const int * const x[2];
x ist ...
![Page 39: Informatik 1 Übung 5. NACHBESPRECHUNG Übung 5 Korrekturen Ich prüfe keine Syntax – schreibt wenn was nicht kompiliert Lösungen müssen nicht perfekt sein](https://reader035.vdocuments.pub/reader035/viewer/2022081513/55204d7549795902118ca892/html5/thumbnails/39.jpg)
Leseweise
• Beim Variablennamen starten• Nach aussen arbeiten– nach rechts, dann nach links
const int * const x[2];
x ist ein Array von zwei ...
![Page 40: Informatik 1 Übung 5. NACHBESPRECHUNG Übung 5 Korrekturen Ich prüfe keine Syntax – schreibt wenn was nicht kompiliert Lösungen müssen nicht perfekt sein](https://reader035.vdocuments.pub/reader035/viewer/2022081513/55204d7549795902118ca892/html5/thumbnails/40.jpg)
Leseweise
• Beim Variablennamen starten• Nach aussen arbeiten– nach rechts, dann nach links
const int * const x[2];
x ist ein Array von zwei konstanten ...
![Page 41: Informatik 1 Übung 5. NACHBESPRECHUNG Übung 5 Korrekturen Ich prüfe keine Syntax – schreibt wenn was nicht kompiliert Lösungen müssen nicht perfekt sein](https://reader035.vdocuments.pub/reader035/viewer/2022081513/55204d7549795902118ca892/html5/thumbnails/41.jpg)
Leseweise
• Beim Variablennamen starten• Nach aussen arbeiten– nach rechts, dann nach links
const int * const x[2];
x ist ein Array von zwei konstanten Zeigern ...
![Page 42: Informatik 1 Übung 5. NACHBESPRECHUNG Übung 5 Korrekturen Ich prüfe keine Syntax – schreibt wenn was nicht kompiliert Lösungen müssen nicht perfekt sein](https://reader035.vdocuments.pub/reader035/viewer/2022081513/55204d7549795902118ca892/html5/thumbnails/42.jpg)
Leseweise
• Beim Variablennamen starten• Nach aussen arbeiten– nach rechts, dann nach links
const int * const x[2];
x ist ein Array von zwei konstanten Zeigern auf ein integer...
![Page 43: Informatik 1 Übung 5. NACHBESPRECHUNG Übung 5 Korrekturen Ich prüfe keine Syntax – schreibt wenn was nicht kompiliert Lösungen müssen nicht perfekt sein](https://reader035.vdocuments.pub/reader035/viewer/2022081513/55204d7549795902118ca892/html5/thumbnails/43.jpg)
Leseweise
• Beim Variablennamen starten• Nach aussen arbeiten– nach rechts, dann nach links
const int * const x[2];
x ist ein Array von zwei konstanten Zeigern auf ein integer, der konstant ist
![Page 44: Informatik 1 Übung 5. NACHBESPRECHUNG Übung 5 Korrekturen Ich prüfe keine Syntax – schreibt wenn was nicht kompiliert Lösungen müssen nicht perfekt sein](https://reader035.vdocuments.pub/reader035/viewer/2022081513/55204d7549795902118ca892/html5/thumbnails/44.jpg)
DYNAMISCHER SPEICHER
![Page 45: Informatik 1 Übung 5. NACHBESPRECHUNG Übung 5 Korrekturen Ich prüfe keine Syntax – schreibt wenn was nicht kompiliert Lösungen müssen nicht perfekt sein](https://reader035.vdocuments.pub/reader035/viewer/2022081513/55204d7549795902118ca892/html5/thumbnails/45.jpg)
Speicher reservieren
• Operator new• Erstellt eine neue Speicherzelle– Typ muss angegeben werden– Gibt Zeiger auf die neue Zelle zurück
int* p;
// Erstellt Speicherplatz für einen neuen integer// p zeigt auf die neu angelegte Speicherzellep = new int;
![Page 46: Informatik 1 Übung 5. NACHBESPRECHUNG Übung 5 Korrekturen Ich prüfe keine Syntax – schreibt wenn was nicht kompiliert Lösungen müssen nicht perfekt sein](https://reader035.vdocuments.pub/reader035/viewer/2022081513/55204d7549795902118ca892/html5/thumbnails/46.jpg)
Speicher freigeben
• Operator delete• Löscht eine zuvor erstellte Speicherzelle– Achtung: Zeiger werden ungültig
// Erstellt Speicherplatz für einen neuen integerint* p = new int;
// Löscht die Speicherzelle, auf welche p zeigtdelete p;
// p zeigt hier immer noch auf die Speicherzelle, die nicht mehr gibt
![Page 47: Informatik 1 Übung 5. NACHBESPRECHUNG Übung 5 Korrekturen Ich prüfe keine Syntax – schreibt wenn was nicht kompiliert Lösungen müssen nicht perfekt sein](https://reader035.vdocuments.pub/reader035/viewer/2022081513/55204d7549795902118ca892/html5/thumbnails/47.jpg)
Speicher freigeben
• Operator delete• Löscht eine zuvor erstellte Speicherzelle– Achtung: Zeiger werden ungültig
// Erstellt Speicherplatz für einen neuen integerint* p = new int;
// Löscht die Speicherzelle, auf welche p zeigtdelete p;
// p zurücksetzenp = NULL;
![Page 48: Informatik 1 Übung 5. NACHBESPRECHUNG Übung 5 Korrekturen Ich prüfe keine Syntax – schreibt wenn was nicht kompiliert Lösungen müssen nicht perfekt sein](https://reader035.vdocuments.pub/reader035/viewer/2022081513/55204d7549795902118ca892/html5/thumbnails/48.jpg)
Arrays
• Arrays anlegen und freigeben
int N;
// Erstellt Speicherplatz für N neue integerint* p = new int[N];
// Zugriff mit und ohne Array-Syntaxp[1] = 10;*(p+1) = 10;
// Löscht alle Speicherzellendelete[] p;
![Page 49: Informatik 1 Übung 5. NACHBESPRECHUNG Übung 5 Korrekturen Ich prüfe keine Syntax – schreibt wenn was nicht kompiliert Lösungen müssen nicht perfekt sein](https://reader035.vdocuments.pub/reader035/viewer/2022081513/55204d7549795902118ca892/html5/thumbnails/49.jpg)
QUIZ
![Page 50: Informatik 1 Übung 5. NACHBESPRECHUNG Übung 5 Korrekturen Ich prüfe keine Syntax – schreibt wenn was nicht kompiliert Lösungen müssen nicht perfekt sein](https://reader035.vdocuments.pub/reader035/viewer/2022081513/55204d7549795902118ca892/html5/thumbnails/50.jpg)
Quiz
• Was gibt das Programm aus?
int x = 10;int y = 20;
cout << x;
![Page 51: Informatik 1 Übung 5. NACHBESPRECHUNG Übung 5 Korrekturen Ich prüfe keine Syntax – schreibt wenn was nicht kompiliert Lösungen müssen nicht perfekt sein](https://reader035.vdocuments.pub/reader035/viewer/2022081513/55204d7549795902118ca892/html5/thumbnails/51.jpg)
Quiz
• Was gibt das Programm aus?
int x = 10;int y = 20;int* p = &y;
cout << p;
![Page 52: Informatik 1 Übung 5. NACHBESPRECHUNG Übung 5 Korrekturen Ich prüfe keine Syntax – schreibt wenn was nicht kompiliert Lösungen müssen nicht perfekt sein](https://reader035.vdocuments.pub/reader035/viewer/2022081513/55204d7549795902118ca892/html5/thumbnails/52.jpg)
Quiz
• Was gibt das Programm aus?
int x = 10;int y = 20;int* p = &y;
cout << *p;
![Page 53: Informatik 1 Übung 5. NACHBESPRECHUNG Übung 5 Korrekturen Ich prüfe keine Syntax – schreibt wenn was nicht kompiliert Lösungen müssen nicht perfekt sein](https://reader035.vdocuments.pub/reader035/viewer/2022081513/55204d7549795902118ca892/html5/thumbnails/53.jpg)
Quiz
• Was gibt das Programm aus?
int x = 10;int y = 20;int* p;
cout << p;
![Page 54: Informatik 1 Übung 5. NACHBESPRECHUNG Übung 5 Korrekturen Ich prüfe keine Syntax – schreibt wenn was nicht kompiliert Lösungen müssen nicht perfekt sein](https://reader035.vdocuments.pub/reader035/viewer/2022081513/55204d7549795902118ca892/html5/thumbnails/54.jpg)
Quiz
• Was gibt das Programm aus?
int x = 10;int y = 20;int* p = &x;
*p = 11;p = &y;*p = 21;
cout << x;cout << y;
![Page 55: Informatik 1 Übung 5. NACHBESPRECHUNG Übung 5 Korrekturen Ich prüfe keine Syntax – schreibt wenn was nicht kompiliert Lösungen müssen nicht perfekt sein](https://reader035.vdocuments.pub/reader035/viewer/2022081513/55204d7549795902118ca892/html5/thumbnails/55.jpg)
Quiz
• Was gibt das Programm aus?
int x[2] = {10, 20};
cout << (x+1);
![Page 56: Informatik 1 Übung 5. NACHBESPRECHUNG Übung 5 Korrekturen Ich prüfe keine Syntax – schreibt wenn was nicht kompiliert Lösungen müssen nicht perfekt sein](https://reader035.vdocuments.pub/reader035/viewer/2022081513/55204d7549795902118ca892/html5/thumbnails/56.jpg)
Quiz
• Was gibt das Programm aus?
int x[2] = {10, 20};
cout << *x + 1;
![Page 57: Informatik 1 Übung 5. NACHBESPRECHUNG Übung 5 Korrekturen Ich prüfe keine Syntax – schreibt wenn was nicht kompiliert Lösungen müssen nicht perfekt sein](https://reader035.vdocuments.pub/reader035/viewer/2022081513/55204d7549795902118ca892/html5/thumbnails/57.jpg)
Quiz
• Was gibt das Programm aus?
int x[2] = {10, 20};
cout << *(x + 1);
![Page 58: Informatik 1 Übung 5. NACHBESPRECHUNG Übung 5 Korrekturen Ich prüfe keine Syntax – schreibt wenn was nicht kompiliert Lösungen müssen nicht perfekt sein](https://reader035.vdocuments.pub/reader035/viewer/2022081513/55204d7549795902118ca892/html5/thumbnails/58.jpg)
STRUCTSVariablenverbunde
![Page 59: Informatik 1 Übung 5. NACHBESPRECHUNG Übung 5 Korrekturen Ich prüfe keine Syntax – schreibt wenn was nicht kompiliert Lösungen müssen nicht perfekt sein](https://reader035.vdocuments.pub/reader035/viewer/2022081513/55204d7549795902118ca892/html5/thumbnails/59.jpg)
Structs
• Ein struct fasst mehrere Variablen zusammen• Definiert einen neuen Typ
// Definiere einen neuen Typ mit zwei integer-Elementenstruct vector2D { int x; int y;};
vector2d v;
![Page 60: Informatik 1 Übung 5. NACHBESPRECHUNG Übung 5 Korrekturen Ich prüfe keine Syntax – schreibt wenn was nicht kompiliert Lösungen müssen nicht perfekt sein](https://reader035.vdocuments.pub/reader035/viewer/2022081513/55204d7549795902118ca892/html5/thumbnails/60.jpg)
Structs
• Zugriff auf Elemente• „member“ auf Englisch
vector2D v;
v.x = 10;v.y = 10;
![Page 61: Informatik 1 Übung 5. NACHBESPRECHUNG Übung 5 Korrekturen Ich prüfe keine Syntax – schreibt wenn was nicht kompiliert Lösungen müssen nicht perfekt sein](https://reader035.vdocuments.pub/reader035/viewer/2022081513/55204d7549795902118ca892/html5/thumbnails/61.jpg)
Structs
• Zuweisung kopiert alle Elemente– Anderst als bei Arrays
vector2D v;vector2D w;
v = w;
![Page 62: Informatik 1 Übung 5. NACHBESPRECHUNG Übung 5 Korrekturen Ich prüfe keine Syntax – schreibt wenn was nicht kompiliert Lösungen müssen nicht perfekt sein](https://reader035.vdocuments.pub/reader035/viewer/2022081513/55204d7549795902118ca892/html5/thumbnails/62.jpg)
Structs
• Elemente vom Struct in benachbarten Zellen• Wie beim Array
Name Addresse Inhalt
v.x 0000 ???
v.y 0001 ???
0002
0003
0004
0005
0006
vector2D v;
![Page 63: Informatik 1 Übung 5. NACHBESPRECHUNG Übung 5 Korrekturen Ich prüfe keine Syntax – schreibt wenn was nicht kompiliert Lösungen müssen nicht perfekt sein](https://reader035.vdocuments.pub/reader035/viewer/2022081513/55204d7549795902118ca892/html5/thumbnails/63.jpg)
Structs
• Elemente vom Struct in benachbarten Zellen• Wie beim Array
Name Addresse Inhalt
v.x 0000 10
v.y 0001 20
0002
0003
0004
0005
0006
vector2D v;v.x = 10;v.y = 20;
![Page 64: Informatik 1 Übung 5. NACHBESPRECHUNG Übung 5 Korrekturen Ich prüfe keine Syntax – schreibt wenn was nicht kompiliert Lösungen müssen nicht perfekt sein](https://reader035.vdocuments.pub/reader035/viewer/2022081513/55204d7549795902118ca892/html5/thumbnails/64.jpg)
Structs und Zeiger
• Zeiger auf structs möglich• Verkürzte Syntax für Elementzugriff
vector2D v;vector2D* pv = &v;
(*pv).x = 10; // Setze Element „x“ vom referenzierten Vektor auf 10pv->x = 10; // Setze Element „x“ vom referenzierten Vektor auf 10
![Page 65: Informatik 1 Übung 5. NACHBESPRECHUNG Übung 5 Korrekturen Ich prüfe keine Syntax – schreibt wenn was nicht kompiliert Lösungen müssen nicht perfekt sein](https://reader035.vdocuments.pub/reader035/viewer/2022081513/55204d7549795902118ca892/html5/thumbnails/65.jpg)
ÜBUNGSerie 6