From 15ef06a1a07757c8f7590784438b82a873fbdc02 Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Wed, 1 Oct 2008 16:32:55 +0200 Subject: Initialer Import. --- contents/wissen/cpp-tutorial/01-helloworld.php | 53 ++++++++++ contents/wissen/cpp-tutorial/02-konsole.php | 59 +++++++++++ contents/wissen/cpp-tutorial/03-integer.php | 79 ++++++++++++++ .../wissen/cpp-tutorial/04-kontrollstrukturen.php | 111 ++++++++++++++++++++ contents/wissen/cpp-tutorial/05-switch.php | 76 ++++++++++++++ contents/wissen/cpp-tutorial/06-schleifen.php | 73 +++++++++++++ contents/wissen/cpp-tutorial/07-funktionen.php | 61 +++++++++++ contents/wissen/cpp-tutorial/08-arrays.php | 81 +++++++++++++++ contents/wissen/cpp-tutorial/09-strings.php | 67 ++++++++++++ contents/wissen/cpp-tutorial/10-klassen.php | 115 +++++++++++++++++++++ 10 files changed, 775 insertions(+) create mode 100644 contents/wissen/cpp-tutorial/01-helloworld.php create mode 100644 contents/wissen/cpp-tutorial/02-konsole.php create mode 100644 contents/wissen/cpp-tutorial/03-integer.php create mode 100644 contents/wissen/cpp-tutorial/04-kontrollstrukturen.php create mode 100644 contents/wissen/cpp-tutorial/05-switch.php create mode 100644 contents/wissen/cpp-tutorial/06-schleifen.php create mode 100644 contents/wissen/cpp-tutorial/07-funktionen.php create mode 100644 contents/wissen/cpp-tutorial/08-arrays.php create mode 100644 contents/wissen/cpp-tutorial/09-strings.php create mode 100644 contents/wissen/cpp-tutorial/10-klassen.php (limited to 'contents/wissen/cpp-tutorial') diff --git a/contents/wissen/cpp-tutorial/01-helloworld.php b/contents/wissen/cpp-tutorial/01-helloworld.php new file mode 100644 index 0000000..3755d94 --- /dev/null +++ b/contents/wissen/cpp-tutorial/01-helloworld.php @@ -0,0 +1,53 @@ + + + +
+

+ 1. Hello World +

+

+ + // Dies ist ein Kommentar. + /* Dies ist auch ein Kommentar, + nur ist er mehrzeilig. */ + +#include <iostream> + +int main() +{ + std::cout << "Hello World!" << std::endl; + return 0; + +} + + +

+

+ In dieser Zeile binden wir die Datei iostream ein. Diese stellt uns die später benutzten Objekte std::cout und +std::endl zur Verfügung. +main ist der Name der Eintrittsfunktion. Das Programm beginnt mit der Ausführung der main-Funktion. +Die geschweiften Klammern { und } begrenzen den Block, der den Code, der zur main-Funktion gehört, darstellt. +std::cout ist der Name der Standard-Ausgabe. Mit << werden Objekte an die Standardausgabe geschickt, hier z. B.der Text "Hello World!". Texte, die keine Programmbefehle sind, werden in C++ im Allgemeinen mit " " begrenzt. std::endl ist ein besonderes Objekt, dass einen Zeilenumbruch erzeugt. Wie jeder Befehl ist dieser mit einem Semikolon begrenzt, man kann einen sehr langen Befehl also auf mehrere Zeilen aufteilen. +Der Return-Befehl beendet das Programm und gibt den Rückgabewert des Programms an. Ein Wert von 0 wie hier bedeutet, dass das Prgramm fehlerfrei abgelaufen ist. +

+

Aufgabe:

+

+Erstelle selbstgeschrieben, nicht kopiert, +ein eigenes helloWorld-Programm, +das eine von dir festgelegte Zeichenkette ausgibt. +

+
+ + diff --git a/contents/wissen/cpp-tutorial/02-konsole.php b/contents/wissen/cpp-tutorial/02-konsole.php new file mode 100644 index 0000000..4656607 --- /dev/null +++ b/contents/wissen/cpp-tutorial/02-konsole.php @@ -0,0 +1,59 @@ + + + +
+

+ 2. Konsole +

+

+ +#include <iostream> + +int main() +{ + char cEingabe; + + std::cout << "Bitte geben sie ein einzelnes Zeichen ein," << std::endl; + std::cout << gefolgt von einem Druck auf <Enter>" << std::endl; + + std::cin >> cEingabe; + + std::cout << "Ihre Eingabe war: " << cEingabe << std::endl; + + return 0; +} + + +

+

+cEingabe ist eine Variable. Variablen werden benutzt, um Werte zu speichern, mit denen das Programm operieren soll. +Hier handelt es sich um eine Variable vom Typ char, das steht für Character ist bedeutet Buchstabe. Eine +Variable vom Typ char kann einen einzelnen Buchstaben fassen. +

+

+std::cin ist das Gegenteil von std::cout, es handelt sich um die Standardeingabe. Mit >> wird eine Eingabe in eine Variable eingelesen. Da cEingabe vom Typ char ist, muss ein einzelner Buchstabe eingeben werden. +

+

+Wie man sieht, kann man mit std::cout auch Variableninhalte ausgeben. Dabei wird der Variablenname nicht in " " geschrieben, sonst würde ja nur der Name der Variable als Text und nicht der Inhalt der Variable ausgegeben werden. +

+ +

Aufgabe:

+

+Erstelle ein Programm, das den Benutzer mit seinen Initialien begrüßt. +Lasse den Benutzer dabei diese Initialien selbst eingeben. +

+
+ + diff --git a/contents/wissen/cpp-tutorial/03-integer.php b/contents/wissen/cpp-tutorial/03-integer.php new file mode 100644 index 0000000..ff23570 --- /dev/null +++ b/contents/wissen/cpp-tutorial/03-integer.php @@ -0,0 +1,79 @@ + + + +
+

+ 3. Integer +

+

+ +#include <iostream> + +int main() +{ + + int iX = 5; + int iY, iZ; + + + std::cout << "Ein paar Werte: " << iX << "|" << iY << "|" << iZ << std::endl; + std::cout << "Geben sie bitte zwei Zahlen ein, bestätigen mit <Enter>" << std::endl; + + std::cin >> iY; std::cin >> iZ; + + iX = iY * iZ; + + std::cout << "Das Produkt der Zahlen: " << iX << std::endl; + std::cout << "Die Summe der Zahlen: " << iY + iZ << std::endl; + + return 0; +} + + +

+

+int steht für Integer, das bedeutet Ganzzahl. Hier wird sie auf den Startwert 5 initialisiert. +Man kann auch mehrere Variablen gleichzeitig deklarieren. +Auch die Eingabe funktioniert bei ints wie bei chars, nur dass man jetzt Zahlen eingeben muss. +Man kann int-Variablen genauso wie andere Variablen ausgeben. Dabei ist zu beachten, dass iY und iZ noch keine sinnvollen Werte haben. +Man kann in C++ sehr einfach rechnen, hier wird iX auf das Produkt von iY und iZ gesetzt. +

+

+Einige Grundrechenarten: +

+ + + + + + + + + + +
iX = iY + iX;Addition
iX = iY - iX;Subtraktion
iX = iY * iZ;Multiplikation
iX = iY / iZ;Division (bei ints wird hierbei immer abgerundet)
iX = iY % iZ;Modulo (Rest der Division, Berechnung wie der Rest einer Division in der Grundschule)
iX += 5;Addition mit Zuweisung (iX wird um 5 erhöht)
iX -= iY;Subtraktion mit Zuweisung (iX wird um iY erniedrigt)
iX++;Inkrementierung (Addition von 1)
iY--;Dekrementierung (Subtraktion von 1)
+ +

Aufgabe:

+

+Probiere die im Kommentar aufgeführten Grundrechenarten aus, +und verstehe ihre Wirkung (% ist nicht immer gleich verständlich). +Programmiere dann einen einfachen Taschenrechner, +der zu zwei eingegebenen Zahlen automatisch +die 4 Grundrechenarten anwendet, +und alle Ergebnisse ausgibt. +

+
+ + diff --git a/contents/wissen/cpp-tutorial/04-kontrollstrukturen.php b/contents/wissen/cpp-tutorial/04-kontrollstrukturen.php new file mode 100644 index 0000000..a26d85c --- /dev/null +++ b/contents/wissen/cpp-tutorial/04-kontrollstrukturen.php @@ -0,0 +1,111 @@ + +

',$content);*/ +?> + +

+

+ 4. Kontrollstrukturen +

+

+ +#include <iostream> + +int main() +{ + int iX; + + std::cout << "Geben sie eine Zahl ein!" << std::endl; + std::cin >> iX; + + if(iX == 0) + { + std::cout << "iX ist 0!" << std::endl; + } + + + else if(iX > 0) + { + std::cout << "iX ist nicht 0!" << std::endl; + } + + return 0; +} + + +

+

+if bedeutet "wenn", der nachfolgende Block wird nur ausgeführt, wenn die Bedingung wahr ist. Die Bedinung ist, dass iX 0 ist; zum Vergleich wird == benutzt, da = ja schon der Zuweisungsoperator ist.else heißt "sonst" und darf nur nach einem if-Block stehen. Er wird ausgeführt, wenn der if-Block +nicht ausgeführt wird. +

+

+Weitere Informationen: +

+

+Es gibt Variablen vom Typ bool, +sie speichern die Werte true oder false, +die unserem Wahr oder Falsch entsprechen. +bool a = true; ist ein Beispiel dafür. +

+

+Bei einer if-Abfrage gibt es folgende Operatoren: +

+ + + + + + + + + + + +
==gleich
!=ungleich
>größer
<kleiner
>=größergleich
<= kleinergleich
!nicht
()In Abfragen wie in Rechnungen kann man Klammern benutzen, um Zusammenhänge darzustellen.
&&und
||oder
+

+Beispiele: +

+ + + + +
a == bist a gleich b?
a != bist a ungleich b?
(a == b) || (a == c)ist a gleich b oder a gleich c?
+ +

Aufgabe:

+

+Benutze die if-Abfragen, +um eine verbesserte Version des Taschenrechners zu schreiben, +bei der es möglich ist, die Grundrechenart für die Berechnung +selbst auszuwählen. +

+

+Stelle fest, wie die Variablen gesetzt sein müssen, damit die Abfrage true ist: +

+

+ + int a,b,c; + bool x,y,z; + if(!(a > (b + c) || a < (b + c)) && (x || !(y != z))) + +

+

+Vereinfache diese Anweisung! +

+ + +

+
+ + diff --git a/contents/wissen/cpp-tutorial/05-switch.php b/contents/wissen/cpp-tutorial/05-switch.php new file mode 100644 index 0000000..89a325e --- /dev/null +++ b/contents/wissen/cpp-tutorial/05-switch.php @@ -0,0 +1,76 @@ + + + +
+

+ 5. Switch +

+

+ +#include <iostream> + +int main() +{ + int iX = 0; + + std::cout << "Geben sie eine Zahl ein." << std::endl; + std::cin >> iX; + + switch(iX) + { + case 0: + std::cout << "Nichts kannst du dir doch selbst merken ;)" << std::endl; + break; + case 1: + std::cout << "Hagga!" << std::endl; + case 2: + std::cout << "Hast du 1 oder 2 eingegeben?" << std::endl; + break; + case 5: + std::cout << "Ein echter Discordier! ;)" << std::endl; + break; + default: + std::cout << "Was, denkst du, sollte hier stehen?" << std::endl; + } + + return 0; +} + + +

+

+switch ist eine Art Mehrfach-if, das einen Ausdruck (hier die Variable iX) auf mehrere Werte überprüft. +

+

Aufgabe:

+

+Verstehe die Funktionsweise der switch-Anweisung, +und stelle fest, was das fehlende break; nach case 1: bewirkt. +

+

+Vielleicht magst du auch den Taschenrechner auf ein schöneres Menü umbauen, +bei dem du nun mithilfe von switch Entscheidungen fällst. +Dazu kann der Benutzer einen char eingeben, +Bedenke beim überprüfen aber, dass chars z. B. so abgefragt werden, +wenn du ein Zeichen meinst: +

+

+ +char c = 'a'; +if(c == 'b') + +

+
+ + diff --git a/contents/wissen/cpp-tutorial/06-schleifen.php b/contents/wissen/cpp-tutorial/06-schleifen.php new file mode 100644 index 0000000..508c106 --- /dev/null +++ b/contents/wissen/cpp-tutorial/06-schleifen.php @@ -0,0 +1,73 @@ + + + +
+

+ 6. Schleifen +

+

+ +#include <iostream> + +int main() +{ + int iX, iY; + iX = 0; + + while(iX != 5) + { + std::cout << "Geben sie eine diskordische Zahl ein!" << std::endl; + std::cin >> iX; + } + + + for(int i = 0; i < 25; i++) + { + std::cout << "iX * " << i << ": " << i * iX << std::endl; + } + + return 0; +} + + +

+

+Das erste ist eine while-Schleife. Sie wird so lange ausgeführt, wie die Bedingung wahr ist, +in diesem Fall also solange iX ungleich 5 ist. +

+

+Die for-Schleife folgt folgendem Schema: +

+

+for(Variable; Bedingung; Inkrementor) +

+

+Am Anfang wird einmal der Befehl <Variable> ausgeführt, nach jedem Durchlauf wird einmal <Inkrementor> +ausgeführt, und die Schleife läuft, solange die Bedinung wahr ist. +

+

Aufgabe:

+

+Erstelle ein Programm, das mit Hilfe einer +Funktion eine beliebige Potenz einer Zahl berechnen kann. +Baue diese Funktion in einen Taschenrechner ein, +der sich nur beendet, wenn der Benutzer es wünscht, +sodass mehrere Rechnungen hintereinander möglich sind. +

+

+Dies ist der letzte Taschenrechner, versprochen! ;) +

+
+ + diff --git a/contents/wissen/cpp-tutorial/07-funktionen.php b/contents/wissen/cpp-tutorial/07-funktionen.php new file mode 100644 index 0000000..485e733 --- /dev/null +++ b/contents/wissen/cpp-tutorial/07-funktionen.php @@ -0,0 +1,61 @@ + + + +
+

+ 7. Funktionen +

+

+ +#include <iostream> + +int summe(int iX, int iY) +{ + // Hier wird die Summe von iX und iY zurückgegeben. + return iX + iY; +} + +int main() +{ + int x,y; + + std::cout << "Geben sie bitte zwei Zahlen ein." << std::endl; + std::cin >> x; + std::cin >> y; + std::cout << "Die Summe ihrer Zahlen ist: " << summe(x, y) << std::endl; + + return 0; +} + + +

+

+In diesem Programm werden erstmal eigene Funktionen benutzt. +

+

+Der Name unserer ersten Funktion ist summe. +int ist dabei der Rückgabewert, d. h., beim Aufruf der Funktion gibt die Funktion eine Ganzzahl +an den Aufrufer zurück. iX und iY ist Parameter, d. h., dies sind Variablen, die vom Aufrufer +übergeben werden. +

+

Aufgabe:

+

+Erstelle ein Programm, das mit Hilfe einer +Funktion überprüft, ob eine Zahl ohne Rest +durch 2 teilbar ist. +

+
+ + diff --git a/contents/wissen/cpp-tutorial/08-arrays.php b/contents/wissen/cpp-tutorial/08-arrays.php new file mode 100644 index 0000000..748017d --- /dev/null +++ b/contents/wissen/cpp-tutorial/08-arrays.php @@ -0,0 +1,81 @@ + + + +
+

+ 8. Arrays +

+

+ +#include <iostream> + +int main() +{ + + int iX[5]; + + std::cout << "Geben sie bitte einen Wert ein." << std::endl; + int a = 0; + std::cin >> a; + + // Füllen des Arrays + for(int i = 0; i < 5; i++) + iX[i] = a + i; + + // Ausgabe des Arrays + for(int i = 0; i < 5; i++) + std::cout << iX[i] << std::endl; + + return 0; +} + + +

+

+Ein Array ist eine Variable, die nicht nur einen Wert, sondern mehrere speichern kann. +Man kann sich ein Array als eine Art Regal mit einer bestimmten Anzahl von Fächern vorstellen. +Hier wird ein Array vom Typ int mit 5 Fächern deklariert, d. h., er kann 5 Ganzzahlen speichern. +

+

+Arrays können wie andere Variablen angesprochen werden, nur dass man nach dem Namen immer noch +den Index des anzusprechenden Feldes in [] schreibt, also z. B.: +iX[2] = 4; +std::cout << iX[2]; +Die Indizes beginnen mit 0, d. h., hier wären die 5 Felder mit den Zahlen 0 bis 4, also iX[0] bis iX[4] +bezeichnet. +

+

+Eine besonders mächtige Eigenschaft von Arrays ist es, +dass man beim Zugriff Variablen als Index benutzen kann, +und so z. B. mit for-Schleifen ganze Array verarbeiten kann. +

+

+Arrays können auch mehrere Dimensionen haben: +int iY[5][5]; deklariert ein Array mit 5 * 5 Feldern. +

+

Aufgabe:

+

+Erstelle ein Tic-Tac-Toe-Spiel +und benutze ein Array für dein Spielfeld. +Versuche zuerst, ein Spielfeld mit Testwerten auszugeben. +Danach baue die möglichkeit ein, Felder zu besetzen. +Zum Schluss kannst du eine Gewinnüberprüfung einbauen, +sodass 2 Spieler an der Konsole gegeneinander spielen können. +Ob und wie du Funktionen und andere Elemente sinnvoll benutzt, +findest du im Weiterem besser selbst heraus. +

+
+ + diff --git a/contents/wissen/cpp-tutorial/09-strings.php b/contents/wissen/cpp-tutorial/09-strings.php new file mode 100644 index 0000000..2630176 --- /dev/null +++ b/contents/wissen/cpp-tutorial/09-strings.php @@ -0,0 +1,67 @@ + + + +
+

+ 9. Strings +

+

+ +#include <iostream> +#include <string> + +int main() +{ + std::string s; + std::string s2("Text"); + + // Ausgabe + std::cout << s2 << std::endl; + + // Eingabe + std::cout << "Gib einen Text ein." << std::endl; + std::cin >> s; + + std::cout << ""Das war dein Text: " << s << std::endl; + + std::cout &lr;< "1. Buchstabe: " << s[0] << std::endl; + + std::cout << "Dein Text ist so lang: " << s.length() << std::endl; + + // Hier wird ein Buchstabe geändert + s2[2] = 's'; + std::cout << s2 << std::endl; + + // Und hier einer angefügt + s2 += "s"; + std::cout << s2 << std::endl; +} + + +

+

+ Jetzt müssen wir neben iostream auch die Datei string einbinden, da wir den String nutzen wollen. +

+

+ Mit Klammern kann man sie mit einem Text initialisieren. Man kann wie in Arrays auf einzelne Buchstaben zugreifen. + Man darf dabei natürlich nicht über das Ende des Strings hinaus, daher kann man die Länge mit der length()-Methode bestimmen +

+

Aufgabe:

+

+Schreibe ein Programm, das Strings verwendet! +

+
+ + diff --git a/contents/wissen/cpp-tutorial/10-klassen.php b/contents/wissen/cpp-tutorial/10-klassen.php new file mode 100644 index 0000000..96905c7 --- /dev/null +++ b/contents/wissen/cpp-tutorial/10-klassen.php @@ -0,0 +1,115 @@ + + + +
+

+ 10. Klassen +

+

+ +#include <iostream> +#include <string> + +class Person +{ + private: + std::string name; + int alter; + + public: + /* Dies sind sogenannte Kontruktoren, + * sie haben keinen Rückgabewert und den gleichen Namen wie die Klasse; + * sie werden beim erstellen einer neuen Variable vom Typ der Klasse benutzt. + */ + Person(); + Person(std::string n, int a); + + void printName(); + void setName(std::string n); + + void printAlter(); + void setAlter(int a); +}; + +Person::Person() { + name = "Unbekannt"; + // -1 bedeutet bei uns jetzt, dass wir das Alter nicht wissen + alter = -1; +} + +Person::Person(std::string n, int a) { + name = n; + alter = a; +} + +void Person::printName() { + std::cout << "Der Name ist: " << name << std::endl; +} + +void Person::setName(std::string n) { + name = n; +} + +void Person::printAlter() { + if(alter < 0) std::cout << "Das Alter ist unbekannt." << std::endl; + else std::cout << "Das Alter ist: " << alter << std::endl; +} + +void Person::setAlter(int a) { + alter = a; +} + +int main() { + // Hier wird der Konstruktor Person() benutzt + Person p; + + // Hier wird der Konstruktor Person(std::string n, int a) benutzt + Person p2("Hans", 20); + + p.printName(); + p.printAlter(); + + p2.printName(); + p2.printAlter(); + + p.setName(std::string("Horst")); + p.setAlter(19); + p.printName(); + p.printAlter(); + + return 0; +} + + +

+ +

+ Im letzten Teil haben wir std::string kennengelernt. Dieser Typ ist eine sogenannte Klasse. In diesem Teil lernen wir nun, wie wir selbst solche Typen definieren. +

+

+ Wir wollen also eine Klasse erstellen, die einen Eintrag einer Personen-Kartei darstellt. +

+

+ Der Name des neuen Typs steht hinter class, in diesem Fall Person. +

+

+ Unter private stehen Einträge, die nur innerhalb der Klasse verfügbar sind, unter public stehen solche, die auch von außen aus aufrufbar sind. Man kann in einer Klasse sowohl Variablen, als auch Funktionen, sogenannte Methoden, definieren +

+

+Außerhalb der Klasse werden die Methoden dann mit Inhalt gefüllt. Mit :: beschreibt man, zu welcher Klasse die Methoden gehören. Die Variablen der Klasse können dabei genauso benutzt werden wie die Variablen der Funktion. +

+
+ + -- cgit v1.2.3