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

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

RO-Tutorien 3 / 6 / 12

JavaScript. Dies ist normales HTML. Hallo Welt! Dies ist JavaScript. Wieder normales HTML.

Einführung in die Programmierung Wintersemester 2011/12

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny

Klausur in Programmieren

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

Einstieg in die Informatik mit Java

Überladen von Operatoren

Welche Informatik-Kenntnisse bringen Sie mit?

AuD-Tafelübung T-B5b

Java Einführung VARIABLEN und DATENTYPEN Kapitel 2

Advanced Programming in C

Erste Schritte der Programmierung in C

Programmieren I + II Regeln der Code-Formatierung

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

Einleitung Entwicklung in C Hello-World! Konstrukte in C Zusammenfassung Literatur. Grundlagen von C. Jonas Gresens

Angewandte Mathematik und Programmierung

5. Elementare Befehle und Struktogramme

Einführung in die Programmierung

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

Vorlesung Programmieren

Modul 122 VBA Scribt.docx

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

Wiederholung Wozu Methoden? Methoden Schreiben Methoden Benutzen Rekursion?! Methoden. Javakurs 2012, 3. Vorlesung

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

Repetitorium Informatik (Java)

Zusammenfassung des Handzettels für Programmieren in C

THE GO PROGRAMMING LANGUAGE. Michael Karnutsch & Marko Sulejic

Vorkurs C++ Programmierung

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny

Primitive Datentypen

Zeiger, Arrays und Strings in C und C++

Klassen und Objekte. Einführung in Java. Folie 1 von Mai Ivo Kronenberg

Grundlagen. Die Komponenten eines C Programms. Das erste Programm

Annehmende Schleife do while

Tutorium Rechnerorganisation

Modellierung und Programmierung 1

3. Anweisungen und Kontrollstrukturen

C++-Zusammenfassung. H. Schaudt. August 18, 2005

Funktionen Häufig müssen bestimmte Operationen in einem Programm mehrmals ausgeführt werden. Schlechte Lösung: Gute Lösung:

C allgemein. C wurde unter und für Unix entwickelt. Vorläufer sind BCPL und B.

1.4. Funktionen. Objektorientierte Programmierung mit C++

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

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

Schleifen in C/C++/Java

Die Programmiersprache C Eine Einführung

Einführung Datentypen Verzweigung Schleifen Funktionen Dynamische Datenstrukturen. Java Crashkurs. Kim-Manuel Klein

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

PROGRAMMIERUNG IN JAVA

C++ Teil 1. Sven Groß. 9. Apr IGPM, RWTH Aachen. Sven Groß (IGPM, RWTH Aachen) C++ Teil 1 9. Apr / 19

Grundlagen der Programmierung

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

Programmieren I. Kapitel 5. Kontrollfluss

Klausurvorbereitung Lösung

Elementare Datentypen in C++

JAVA - Methoden

Programmiersprache 1 (C++) Prof. Dr. Stefan Enderle NTA Isny

Javakurs für Anfänger

Java Cheatsheet. Mehrzeiliger Kommentar (beginnt mit /* und endet mit */)

Objective-C CheatSheet

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

Programmieren in C/C++ und MATLAB

5.4 Klassen und Objekte

Steueranweisungen. Eike Schallehn Grundlagen der Informatik für Ingenieure Wintersemester 08/

1. Erste Schritte 2. Einfache Datentypen 3. Anweisungen und Kontrollstrukturen 4. Verifikation 5. Reihungen (Arrays)

FH D. Objektorientierte Programmierung in Java FH D FH D. Prof. Dr. Ing. André Stuhlsatz. Blöcke. Beispiel: Variablen in Blöcken

5 Grundlagen der Java-Syntax

Einführung in die C-Programmierung

Fallunterscheidung: if-statement

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

C++ - Operatoren. Eigene Klassen mit neuen Funktionen

Aufbau von Klassen. class punkt {...

Informatik Repetitorium SS Volker Jaedicke

Praxisorientierte Einführung in C++ Lektion: "Kontrollstrukturen"

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

Klausur in Programmieren

Programmieren in C / C++ Grundlagen C 4

Kapitel 3: Variablen

JAVA-Datentypen und deren Wertebereich

3. Semester : 1. Prüfung

Klausur in Programmieren

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

Java-Schulung Grundlagen

1.8 Kontrollstrukturen 73. default : ziffer = 0; if (ziffer > 0) { cout << "Ziffer = " << ziffer; else { cout << "keine römische Ziffer!

magnum C++ WALTER SAUMWEBER kompakt komplett kompetent

Herzlich Willkommen. Über mich Termine Literatur Über PHP

Probeklausur: Programmierung WS04/05

Die Programmiersprache C99: Zusammenfassung

Die Kunst des schönen Kodierens

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

Klausur in Programmieren

C# 2000 Expression Beispielcodes für Konsolen- und Formularanwendung

Methoden (fortgeschritten) in C# - 1

Java Einführung Methoden. Kapitel 6

GI Vektoren

Javaprogrammierung mit NetBeans. Variablen, Datentypen, Methoden

MIKROPROZESSOR PROGRAMMIERUNG 8. VORLESUNG. LV-Nr SS INSTITUT FÜR ELEKTRONIK BIT

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

Informatik 1 ( ) D-MAVT F2010. Logik, Schleifen. Yves Brise Übungsstunde 4

Transkript:

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

Grundlagen #include <iostream> #include <string> using namespace std; int main() { // Einzeiliger Kommentar /* Mehrzeiliger Kommentar */ cin >> name; //variable einlesen cout << "hallo"; //Textausgabe cout << "hallo " << name << endl; } return 0; 2

Variablen Deklaration: int variable1; Definition/Initialiesierung: variable1 = 40; L-Value / R-Value: int var2 = variable1; Zufallswert nach der Deklaration: Int var3; var3 ist nicht 0! 3

Variablentypen int Ganze Zahl 4 Byte float Kommazahl 4 Byte double Kommazahl 8 Byte bool Wahr/Falsch 1 Byte char Zeichen 1 Byte string Zeichenkette 1 Byte pro Zeichen 4

Variablentypen II 4 4. 4.f '4' "4" char float string int double 5

Nullen bei Kommazahlen 4. == 4.0.4 == 0.4 4.f == 4.0f 6

Boolean True == 1 False == 0 0 == False Alles andere == True Für C++ macht es keinen Unterschied int z = true * 2 + 4; //6 7

Variablen definieren int zahl = 2; int zahl(2); int zahl; zahl = 2; FALSCH: int zahl; zahl(2); Falle: int a, b = 4; 8

Gültige Variablennamen Erlaubte Zeichen: abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ 1234567890 _ Beginne mit Buchstaben (oder _)! 9

Operatoren Operatoren: + - * / % Modulo < > <= >= == gleich!= ungleich ++ -- && Rückgabetyp Typ der Operanden Integer Boolean Boolean Boolean Typ des Operanden Boolean 10

Prioritäten Gehört auf die Zusammenfassung E-mail Anhang Punkt vor Strich = kommt meist zuletzt 11

Prioritäten II a = b % 4 && ++i j == 3 + 3. ; a = (((b % 4) &&(++i)) (j==6.)); Benutze Klammern 12

Casts (sind auch Operatoren) int a = 6.0f; Wird automatisch umgewandelt. Expliziter Cast: int b = (int) 6.0f; //wie in C int b = int( 6.0f ); //nur C++ 13

Integerdivision 4 / 3 == 1 Operanden sind Integer -> Ergebnis auch float(4) / 3 double(4) / 3 4.f / 3 4. / 3 Vermutlich mind. 1 Teilaufgabe der Prüfung 14

Fallunterscheidung if(antwort=="y" antwort=="y") { n=n+1; } else if((antwort=="y" antwort=="y") && n==0) { n=0; } else{ cout << "y oder n?"; } 15

If/Else Hinweise Wenn bedingung 0 (false) ist, wird die Anweisung nicht ausgeführt, sonst schon. && vor Falle: if (true) { int i = 3; } cout << i; { } definiert einen Block 16

Ternär - Kurzschreibweise a==2? 0 : 2; Ist a == 2? Falls ja, dann gib 0 zurück, sonst 2. k = a==2? 0 : 2; k = (a==2? 0 : 2); 17

Fallunterscheidung II switch (x) { //Prüfe x case 1: //Wenn x==1 cout << "Eins"; //weitere Anweisungen hier break; //Wichtig!! case 2: cout << "Zwei"; break; default: cout << "X ist nicht 1 oder 2"; } 18

Switch Hinweise break; ist wichtig default: ist optional x muss int oder char sein! 19

Schleifen int i=0; int j=1; while(i<5) { cout << i*j << " "; j=i+2; i++; // i=i+1; } int j,i=0; do{ j=i+1; cout << i++*j << " "; } while(i<5) 20

While / Do-While Hinweise Verwende, wenn nicht von Anfang an klar ist, wie oft die schleife durchgeführt werden soll. Do while wird mindestens 1 Mal durchgeführt. While mindestens 0 Mal. Endlosschleife, wenn die Bedingung nie false wird. 21

For for(int i=0,j=1; i<5; i++, j=i+1) { } cout << i*j << " "; Verwenden, wenn am Anfang bekannt ist, wie oft die schleife durchgeführt wird. for(initial.; Bedingung; Schluss.) {Block} 22

Schleifen umwandeln for(initial.; Bedingung; Schluss.) {Block} Initialisierung while(bedingung) {Block; Schluss.} 23

if (false) cout << "Nein"; cout << "Ja"; Schleifen - Fallen Wenn der Block { } fehlt wird alles bis zum nächsten ; ausgeführt (also ein Befehl). if( true i++ ); i++ wird nicht ausgeführt, weil das if faul ist. 24

Break und Continue break; bricht die aktuelle Schleife sofort ab. Gehe zu: nach der Schleife continue; bricht den aktuellen Durchgang der Schleife sofort ab. Gehe zu: nächster Durchgang. 25

Kurzschreibweise int i = 1; j = i++; //j=1 j = ++i; //j=2 Das gleiche für -- i += 2; i = i + 2; i *= 2; i = i * 2; -= /= %= 26

Zufallszahlen erzeugen #include <ctime> #include <cstdlib> Im main: srand(time(null)); int z = rand() % 67; Zufallszahl 0-66 27

Pointer Weiss wo du wonsch! Weiss wie du usgsesch! int a = 2; int * p = &a; Falle: * bei der Deklaration hat eine andere Bedeutung als überall sonst. 28

Const Pointer const int * p; Zielwert kann nicht geändert werden Int * const p; Adresse kann nicht geändert werden. Rückwärts lesen: int * const p; Ich bin ein konstanter Pointer von einem Integer 29

Pointer verwenden *p Gehe zur Zieladresse von p und nimm den Wert. p ist also ein Pointer &a Gib mir die Adresse von der Variable a. a ist also KEIN Pointer (meistens) 30

Pointer verwenden II int a = 3; Int b = 2; int * p = &a; *p = 4; *&a p = &*&b; p = Adresse; *p = Wert; 31

Pointer Hinweise Die Adresse ist eine Art Zahl: p++; p = p+3; Nur bei Arrays sinnvoll! *p == p[0]; *(p+1) == p[1]; *(p+x) == p[x]; 32

Array - Aktenschrank Arrays sind in C++ fast wie Pointer. int a[4]; float b[x]; x muss bekannt sein, bevor, der Array definiert wird und bevor das Programm kompiliert wird. Sonst macht der Compiler automatisch: float * b = new float[x]; Mögliche Prüfungsfrage 33

Array II int a[2] = { 2 }; char b[] = { 'a', 'b', 'c' }; FALSCH: int c[]; Int d[1] = { 3, 2 }; 34

Array und Pointer int a[3]; int * p; p = a; cout << p[1]; FALSCH: int z[3]; a = z; Arrays können kein L-Value sein! 35

Dynamische Strukturen Der Heap Der Pointer weiss wo es ist. int * p = new int; int * q = new int[5]; Typ * pointer = new Typ; new gibt immer die Adresse zurück! Der new-operator alloziert Speicher 36

Dynamische Strukturen II Was ihm Heap ist, hält (fast) ewig. Bloss nicht die Adresse verlieren. Speicher deallozieren delete p; delete[] q; Delete ist der Auftragskiller unter den Operatoren. Er braucht nur eine Adresse. Sonst gibts ein Memory-Leak. Faustregel: Immer wenn new, dann auch delete! 37

Funktionen double max(double a, double b) { } return a>b? a : b; Rückgabetyp Funktionsname( Parameter ) { } //ganz viel Rechnen return Rückgabewert; 38

Funktionen - Prototyp Der Prototyp oder der Kopf der Funktion enthält: Rückgabewert Funktionsnamen Parametertypen ; am Ende double max(double, double); Parameternamen dürfen stehen, werden aber vom Compiler ignoriert. 39

Prototyp - Verwendung double max(double, double); int main() { max(3, 2); } double max(double a, double b) { return a>b? a : b; } 40

Funktionen - Return Nach dem return ist alles aus. Was nach dem return steht, wird in den Rückgabetyp umgewandelt (falls nötig/möglich) Wenn nichts zurückgegeben werden soll hat die Funktion den Rückgabetypen void und hat kein return. Sonst ist ein Return notwendig 41

Funktionen Parameter int func(int a, double b) { //some magic return 0; } func(3, 2.); Das Passiert: Int a = 3; double b = 2.;... 42

Referenzen int b = 2; int & a = b; a ist nun eine Referenz auf b. a ist KEIN Pointer a IST b. a = 3; cout << b; FALSCH: Int & a = 4; 43

Call by Reference void swap(int &a, int &b) { int temp = b; b = a; a = temp; } int x=3, y=5; swap(x,y); Das Passiert: Int & a = x; Int & b = y; 44

Pointer als Parameter void swap(int *a, int *b) { int temp = *b; *b = *a; *a = temp; } int x=3, y=5; swap( &x, &y ); Das Passiert: Int * a = &x; Int * b = &y; 45

Array als Parameter int give(int * a) { return a[0]; } int x[]={3,3,6}; give( x ); Das Passiert: int * a = x; 46

Array als Parameter II Ein Spezialfall: int give(int a[]) { return a[0]; } int x[]={3,3,6}; give( x ); Das geht obwohl das hier nicht gehen würde: int a[] = x; 47

Array als Parameter III FALSCH: int give(int a[2]) { return a[0]; } int x[]={3,3,6}; give( x ); Der Parameter muss hier explizit die länge 2 haben! 48

Funktionen - Überladen double max(double a, double b) { } return a>b? a : b; int max(int a, int b) { } return a>b? a : b; 49

Funktionen Überladen II Damit eine Funktion überladen werden kann, müssen die Köpfe der Funktionen mindestens einen dieser Unterschiede haben: Anzahl Parameter Typ mindestens eines Parameters Rückgabetyp reicht NICHT als Unterschied. 50

Funktionen Default-Wert int max(int a, int b = 0) { } return a>b? a : b; max(3); // b = 0; max(3, 2); Nur die letzen Parameter dürfen einen Default-Wert haben (Theoretisch alle zusammen) 51

PVK Informatik I 2.Teil Funktionen Structs Klassen Etc. 52

Eine Funktion backen Zutaten: Parameter Rückgabewert Eine Mission 53

Eine Funktion backen II Zubereitung: Lies die Mission. Lies die Mission nochmal unterstreiche wichtiges. Schreibe den Kopf des Programms Überlege eine Vorgehensweise Siehe deine Zusammenfassung an. Steht dort ein ähnliches Beispiel? Wenn nicht void als Rückgabetyp, dann muss mindestens ein return rein. Das Programm muss nicht gut sein, sondern nur richtig! 54

Eine Funktion backen - Beispiel Schreiben Sie eine Funktion die überprüft, ob eine ganze Zahl eine Primzahl ist oder nicht. Falls die Zahl eine Primzahl ist, gibt sie true zurück sonst false. Eine Primzahl ist eine natürliche Zahl, die nur durch 1 und sich selbst teilbar ist. (Als Teiler kommen nur natürliche Zahlen in Frage) Basisprüfung Informatik I 2010 Aufgabe 3b) 55

Eine Funktion backen - Beispiel Schreiben Sie eine Funktion die überprüft, ob eine ganze Zahl eine Primzahl ist oder nicht. Falls die Zahl eine Primzahl ist, gibt sie true zurück sonst false. Eine Primzahl ist eine natürliche Zahl, die nur durch 1 und sich selbst teilbar ist. (Als Teiler kommen nur natürliche Zahlen in Frage) Basisprüfung Informatik I 2010 Aufgabe 3b) 56

Eine Funktion backen - Beispiel 1 Parameter vom Typ Integer. Call-by-value. Rückgabewert vom Typ Boolean bool prim(int zahl); Teilbar heisst Modulo = 0 Zahl % 5 == 0 // Teilbar durch 5 Überprüfe auf Teilbarkeit mit allen natürlichen Zahlen. Alle? Nein. Nur jene zwischen 1 und sich selbst 57

Eine Funktion backen - Beispiel Prüfe alle = eine Schleife! Anzahl durchgänge bekannt! -> For-Schleife Initialiserung: int i = 2; // weil > 1 Bedingungen: i < zahl Schlussanweisung i++ 58

Eine Funktion backen - Beispiel bool prim(int zahl) { for( int i = 2; i < zahl; i++ ) { //??? } } Prüfe auf Teilbarkeit if( Zahl % i == 0 ) {} 59

Eine Funktion backen - Beispiel bool prim(int zahl) { for( int i = 2; i < zahl; i++ ) { if( zahl % i == 0 ) { //Die Zahl hat einen Teiler!! // -> keine Primzahl } } //Die Schleife ist fertig. /* Wenn wir nie im if waren, hatte die Zahl keine Teiler */ // -> Primzahl } Es fehlen nur noch die Returns 60

Eine Funktion backen - Beispiel bool prim(int zahl) { for( int i = 2; i < zahl; i++ ) { if( zahl % i == 0 ) { return false; } } return true; } En Guete 61

Rekursive Funktionen 62

Funktionen und Variablen Funktion int b() { return 3; } int a = b(); Gehe zu b() Variable int b = 3; int a = b; Gehe zu b Nimm den Wert Rechne Nimm den Wert 63

Pointer zurückgeben 1.So tun, als wolle man einen Pointer erstellen. int * bsp... 2.Eine Funktion daraus machen int * bsp(int a, double b) { //... int * p = new int(4); return p; } 3.Eine Adresse zurückgeben! Macht meist nur mit dynamischen Variablen Sinn 64

Structs Structs stehen zu Klassen, wie Arrays zu Pointer In C++ ist eine Struct eine eingeschränkte Form der Klasse. Structs kennt die Bezeichungen private, public und protected nicht. Es wird alles public. 65

Structs - Syntax struct name{ int a,b; double c; bool k; name f; //NEIN name * g; //ok }; //Wenn dieses ; fehlt...... muss stattdessen eine Variable stehen. name bsp = { 3, 3, 4.2, true }; Das können nur Structs (nicht Klassen) 66

Klassen Wenn wir selbst Funktionen bauen können, dann können wir auch unsere eigenen Typen basteln. Das sind Klassen! Begriffe: Instanz = Objekt Member = Eigenschaften + Methoden Eigenschaften = Variablen Methoden = Funktionen 67

Klassen - Syntax class Klassenname { private: //das folgende ist privat int a; //eine Eigenschaft //private funktion int private_func(); //... public: //das folgende ist public Klassenname() {}; //default constructor //constructor Klassenname(int aa); //noch ein constructor Klassenname(int aa, int bb); int b; //öffentliche funk. void public_func() {} //... friend int andere_funktion(); }; //Das ; ist wichtig 68

Klassen - Zugriffsspezifikationen public: Alle dürfen zugreifen private: Nur in der Klasse zugreifbar (+friends) protected: private + vererbar (+friends) Wenn nichts steht, dann ist es private! 69

Methode definieren 1.In der Klasse wie eine normale Funktion 2.Ausserhalb der Klasse mit einem Zusatz: Klassenname:: Muss direkt vor dem Namen der Methode stehen. int Klassenname::private_func() { //Das Übliche //Am Ende noch ein return } 70

Objekt Erstellen klassenname v; klassenname * w = new klassenname; Benutzen v.b = 4; v.public_func() Variable und Funktion sind public in klassenname 71

Objekt II klassenname * w = new klassenname; (*w).b = 4; Klammer notwendig w->b = 4; Macht das gleiche. -> ist ein neuer Operator. Bei Struct ist es gleich. 72

This-Pointer Innerhalb jeder Klasse ist ein this Pointer definiert. Der this Pointer zeigt auf das aktuelle Objekt klassenname var1; var1.public_func(); void public_func(){ this->a = 3; } this zeigt hier auf var1 Warum? 73

This-Pointer II class bsp{ private: int a, len; public: void set(int a, int length) { len = length; a = a;??? this-> a = a; } }; 74

Vererbung Nicht Prüfungsrelevant 75

Constructor: Ein Objekt backen klassenname v; Führt den Default-Constructor aus. Selber backen Dadurch wird der Default-Constructor gelöscht. Überladbar: Verschiedene Rezepte möglich Public: Alle dürfen probieren 76

Constructor II class Klassenname { private: int a; public: klassenname(int aa) { a = aa; } klassenname() { }; } a = 0; 77

Memory-Leak class bsp { private: double * a; public: bsp() { a = new double[9999999]; } }; 78

Destructor/Deconstructor class bsp { private: double * a; public: bsp() { a = new double[9999999]; } ~bsp() { }; } delete[] a; Nur wegen new! 79

Kopierconstructor Ist auch nur ein Constructor Wird automatisch aufgerufen, wenn: bsp a; bsp b = a; int func(bsp x) { return 0; } func(a); 80

Kopierconstructor II Falsch: Klassenname(Klassenname v) { a = v.a; *b = *(v.b); } Richtig: Klassenname(const Klassenname& v) { a = v.a; *b = *(v.b); } 81

Kopierconstructor III Es gibt einen Default-Kopierconstructor Muss NUR selbst definiert werden, wenn dynamische Strukturen in der Klasse sind (new). 82

Operatoren überladen bsp a; bsp b; bsp c = a + b; Was passiert in der letzten Zeile? Das dürfen/müssen wir selber definieren. 83

Operatoren überladen II // Der "+"-Operator bsp operator+(const bsp & v) { //erstelle Objekt bsp c; //fülle es c.a = a + v.a; *(c.b) = *b + *(v.b); return c; } Meistens mit const und & 84

Operatoren überladen III Beispiele auf die Zusammenfassung Wahrscheinlich 1 Teilaufgabe bei der Prüfung 85

Fallen & Hinweise Kompilierfehler: Codeblocks zeigt einen Fehler, wenn man auf das Zahnrad klickt. Ausführfehler (Laufzeitfehler): Das Programm startet. Plötzlich stüzt es ab, bzw. zeigt einen Fehler in der Konsole. Gründe: Zugriff ausserhalb eines Arrays 86

Fallen & Hinweise const int a = 3; int b = 4; int & c = a; const int & d = b; 87