C++ Programmierung Teil 5

Schleifen II, Klassen I

Teil: (4/?)

Thema: Schleifen II, Klassen I

Version: 1.00

Autor: Dr Doo

e-Mail: DrDoo@busch-hacker.de

Datum: 15.03.2000

 

Do-While Schleife:

Im letzten Tutor haben wir die while Schleife kennengelernt. Der unterschied zwischen der while und der do-while Schleife ist der folgende:

Bei der while Schleife wird erst die Laufbedingung geprüft und der Schleifenkörper nur dann ausgeführt, wenn die Bedingung erfüllt ist. Es kann also sein, dass der Körper der Schleife gar nicht ausgeführt wird, da die Bedingung nicht zutrifft. Bei der do-while Schleife wird der Schleifenkörper immer mindestens einmal ausgeführt, da erst der Körper ausgeführt wird und erst anschließend die Laufbedingung geprüft wird.

Beispiel:

Ich werde das Programm aus dem letzten Tutor wieder aufgreifen und es dann umschreiben(die Erläuterung entnehmt ihr bitte dem 4. Teil):

1: #include <iostream.h>

2:

3: void main(void)

4: {

5: int i, j=1;

6:

7: cout << "Wie oft soll der Schleifenkörper ausgeführt werden:";

8: cin >> i;

9:

10: while(i > 0)

11: {

12: cout << "\nDurchgang: " << j;

13: i--; j++;

14: }

15:

16: cout << "\n\nEnde der Schleife!!!";

17: }

Wenn der Benutzer auf die Frage hin, wie oft die Schleife durchlaufen werden soll eine 0 eingibt, wird der Schleifenkörper nicht ausgeführt, da die Laufbedingung nicht erfüllt ist.

Das ganze Programm mit der do-while Schleife:

1: #include <iostream.h>

2:

3: void main(void)

4: {

5: int i, j=1;

6:

7: cout << "Wie oft soll der Schleifenkörper ausgeführt werden:";

8: cin >> i;

9:

10: do

11: {

12: cout << "\nDurchgang: " << j;

13: i--; j++;

14: } while(i > 0)

15:

16: cout << "\n\nEnde der Schleife!!!";

17: }

Erläuterung:

In Zeile 10 beginnt unsere do-while Schleife. Sie wird durch ein ‘do‘ eingeleitet und der Schleifenkörper wird wie sonst auch immer durch die Klammern eingeleitet und beendet.

Innerhalb dieser Klammern wird der Code geschrieben. Dabei ist bei der do-while Schleife darauf zu achten, dass der Schleifenkörper immer mindestens einmal ausgeführt wird!

Nach der schließenden geschweiften Klammer ist die Laufbedingung. Ist diese True(also stimmt die Laufbedingung) so wird der Schleifenkörper nochmals ausgeführt, bis die Laufbedingung False(also nicht zutrifft) ist.

Das war es auch schon mit der do-while Schleife!

 

for-Schleife:

In den beiden Schleifen, die wir zuvor kennengelernt haben, war es immer so, dass wir eine Laufbedingung angegeben haben die auf "Richtigkeit" geprüft wurde. Im Schleifenkörper mußten wir immer umständlich Inkrementieren/Dekrementieren oder Variablen anders verändern um ein Abruchbedingung zu erhalten. Bei der for-Schleife ist es möglich die Startbedingung(z.B. deklaration einer Zählervariablen), die Abruchbedingung und die Inkrementieren/Dekrementieren innerhalb der ‘Klammer‘ vorzunehmen. Dazu das obige Beispiel ensrprechend umgeändert:

1: #include <iostream.h>

2:

3: void main(void)

4: {

5: int i, j=1;

6:

7: cout << "Wie oft soll der Schleifenkörper ausgeführt werden:";

8: cin >> i;

9:

10: for(i = 0;i > 0; i--, j++)

11: {

12: cout << "\nDurchgang: " << j;

13: }

14:

15: cout << "\n\nEnde der Schleife!!!";

16: }

Erläuterung:

Wir betrachten uns mal die Zeile 10. Die Schleife wird durch ein ‘for‘ eingeleitet, dahinter folgt die Klammer in der die Startbedingung(der Startwert der Variable i wird auf 0 gesetzt)

dann die Laufbedingung(i > 0) und schließlich die dekrementierung/inkrementierung(die wir vorher im Schleifenkörper durchgeführt haben) enthalten sind. Man beachte, dass sie durch ein Semikolon voneinander getrennt werden!

Der Körper wird solange durchlaufen, bis die Laufbedingung ‘False‘ ist.

Erweiterte for-Schleife:

Wie wir es im überstehenden Beispiel schon zum Teil gemacht haben, können wir die for-Schleife erweitern:

.....

.....

.....

for(int i=0, int j=0 ; i>0 ; i--, i++)

{

.....

.....

}

......

......

......

Wie wir sehen, haben wir die Deklaration der Variablen jetzt innerhalb der for-Schleife durchgeführt. Genauso habe wir die Inkrementierung/Dekrementierung (wie oben) dort durchgeführt.

Das war es mehr oder weniger auch mit Schleifen.

 

Klassen:

Ihr solltet euch jetzt noch mal kurz das Thema "Variablen" und "Funktionen" durch den Kopf gehen lassen, da wir das jetzt gebrauchen können.

Also was sind Klassen? Unter Klassen kann man sich am ehesten eine Sammlung von Variablen und Funktionen vorstellen. Innerhalb einer Klasse werden Variablen/Funktionen eines bestimmten Typs erzeugt. Um das mal ein bißchen zu veranschaulichen werde ich das mal mir einer Fußballmannschaft vergleichen(wie nehmen mal Bayer 04 Leverkusen(nicht das ich Bayer Fan wäre(oh, jetzt habe ich mich geoutet) und FC Bayern München):

Also wir stellen uns beide Vereine als zwei unterschiedliche Klassen vor(Bayer und München). In jeder dieser Mannschaften gibt es Spieler, die auf verschiedenen Positionen Spielen. Also:

Klasse Bayer Klasse München

Stürmer.Ulf_Kirsten Stürmer.Carsten_Janker

Torwart.Adam_Matysek Torwart.Oliver_Kahn

Der Klasse Bayer gehört also Ulf Kirsten an, der wiederum aus der Klasse Stürmer kommt(sozusagen eine Liste aller Stürmer aus der Ulf_Kirsten in die Klasse Bayer einsortiert wird). Genauso verhält sich das mit mit dem Torwart und dem Rest.

Ok, Ok ich geb es ja zu das ist scheiße erklärt aber egal.

Ich werde mal einfach anfangen und das nächste Tutor ausschließlich Klassen widmen:

1: #include <iostream.h>

2:

3: class Kirsten{

4: public:

5: int alter;

6: int gebJahr;

7: };

8:

9: void main(void)

10: {

11: Kirsten Spieler;

12: cout << "Ulf ist " << Spieler.alter << " Jahre alt";

13: cout << "\nUlf wurde im jahre " << Spieler.gebJahr << " geboren\n\n";

14: }

Erläuterung:

In Zeile 3 erstellen wir die Klasse ‘Kirsten‘. Klassen werden außerhalb von Funktionen Deklariert. Klassen erstellt man man mit Hilfe des Schlüsselwortes ‘class‘, gefolgt von einer öffnenden geschweiften Klammer und einigen Datenelementen(int alter etc.). Beendet wird die Deklaration durch eine schließende geschweifte Klammer und einem Semikolon(nicht vergessen!). Was ‘public‘ bedeutet werde ich im nächsten Tutor erklären.

In Zeile 11 erzeugen wir eine Instanz von der Klasse Kirsten(was das ist kläre ich –genau im nächsten Tutor). Diese Instanz heißt Spieler.

In den Zeilen 12/13 werden die Werte der Variablen über die Instanz der Klasse Kirsten ausgegeben. Da wir den Variablen keinen Wert zugewiesen haben, werden irgendwelche wirren Zahlen ausgegeben.

 

Das wars für`s erste. Wie schon gesagt, werde ich aufgrund dessen, dass dieses Thema recht umfangreich und schwer ist ein eigenes Tutor über Klasse schreiben.

 

An dieser Stelle möchte ich euch nochmal dazu aufrufen, mir Fragen über bisherige Themen, die ich in meinen Tutor`s angesprochen habe zuzuschicken, damit ich eine FAQ erstellen kann!!! DrDoo@busch-hacker.de

 

 

Ich möchte an dieser Stelle alle Busch-Hacker Grüßen!!!!

Dr Doo