C++-Programmierung - Teil 3
Auswertungen II, Funktionen I
Teil: (3/?)
Thema: Auswertungen II, Funktionen I
Version: 1.00
Autor: Dr Doo
e-Mail: DrDoo@gmx.de
Datum: 02.03.2000
Auswertungen II:
Im zweiten Teil haben wir bereits eine Möglichkeit kennengelernt, um Dinge auszuwerten. Dies war die ‘if-else‘ Anweisung. In diesem Teil werde ich noch eine Möglichkeit zeigen, mit der es möglich ist Dinge auf gleichheit zu prüfen: Die ‘switch-case‘ Anweisung.
Ich will jetzt auch nicht länger reden, äh schreiben und direkt ein Beispiel heranführen:
1: #include<iostream.h>
2:
3: void main(void)
4: {
5: int zahl;
6:
7: cout << "Bitte geben Sie eine Zahl im Berreich von 1-4 ein:";
8: cin >> zahl;
9:
10 switch(zahl)
11: {
12: case 0: cout << "\nSie sollten eine Zahl zwischen 1-4 eingeben und nicht 0 !!!\n";
13: break;
14: case 1: cout << "\nSie gaben die Zahl 1 ein";
15: break;
16: case 2: cout << "\nSie gaben die Zahl 2 ein";
17: break;
18: case 3: cout << "\nSie gaben die Zahl 3 ein";
19: break;
20: case 4: cout << "\nSie gaben die Zahl 4 ein";
21: break;
22: default: cout << "\nKoennen Sie denn nicht das tun was man Ihnen sagt?";
23: break;
24: }
25: }
Erläuterung:
Ich setze direkt in Zeile 10 an, da der Rest klar sein müßte:
In besagter Zeile wird die switch Anweisung aufgerufen. In der Klammer dahinter steht der Auszuwertende Ausdruck. Dieser Ausdruck kann ein beliebiger C++ Ausdruck sein.
Die Auswertung beginnt mit einer öffnenden geschweiften Klammer. In Zeile 12 beginnt die Auswertung. Hinter der ‘case‘ Anweisung folgt ein Wert, der mit dem Ausdruck aus der Klammer hinter dem switch, verglichen wird. Wenn der Wert gleich dem Ausdruck ist, wir die Anweisung hinter dem Doppelpunkt ausgeführt. Nachdem die Anweisung ausgeführt wurde, springt das Programm aus der switch Konstruktion. Wenn der Wert ungleich dem des Ausdrucks ist, fährt das Programm beim nächsten case fort und prüft wie zuvor auf Gleichheit. Wenn es keine Übereinstimmung gibt, landet das Programm bei der ‘default‘ Anweisung. Diese wird(sofern sie angegeben ist) dann aber auf jedem Fall bearbeitet.
Funktionen:
Zunächst möchte ich mal klären, was Funktionen sind:
Funktionen sind eigentlich Unterprogramme, die bestimmte Anweisungen durchführen und dann einen Wert an die Main Funktion zurückgeben. Die Main Funktion ist die Hauptfunktion in einem C++ Programm. Sie muß immer vorhanden sein und wird beim starten des Programms automatisch aufgerufen. Eine Funktion kann praktisch an jedem Punkt der Main Funktion aufgerufen werden. Bevor man jedoch eine Funktion benutzen kann, muß man diese Deklarieren. Die Deklaration einer Funktion nennt man Prototyp. Diesen schreibt man vor die Main Funktion:
1: #include<iostream.h>
2:
3: int addieren(int zahl1, zahl2);
4:
5: void main(void)
6: {
7: int zahl1, zahl2, ergebnis;
8:
9: cout << "Bitte geben Sie die erste Zahl ein:";
10: cin >> zahl1;
11: cout << "\nBitte geben Sie die zweite Zahl ein:";
12: cin >> zahl2;
13:
14: ergebnis = addieren(zahl1, zahl2);
15:
16: cout << "\n\nDie Summe der beiden Zahlen ist:" << ergebnis;
17:
18: return 0;
19: }
20:
21:
22:
23: int addieren(zahl1, zahl2)
24: {
25: return zahl1 + zahl2;
26: }
Erläuterung: Die Funktion ‘addieren‘ wird in Zeile 3 deklariert. Es ist der Prototyp der Funktion. Der erste Teil(int) des Prototyps ist der Rückgabetyp. Der darauffolgende Teil(addieren) ist der Name der Funktion. In der Klammer stehen schließlich die Parametertypen und die Parameternamen. Da die Prototypen Deklaration eine Anweisung ist, schließt sie mit einem Semikolon.
Der darauf folgende Teil ist alt gebacken. Erst in Zeile 14 wird es wieder interessant.
Dort wird die Funktion ‘addieren‘ aufgerufen, die wir oben deklariert haben. In der Klammer stehen die Namen der Zwei Variablen, die wir in der Main Funktion erstellt haben. Diese beiden Variablen geben wir mit auf den Weg zur Funktion ‘addieren‘, die nach der Main Funktion Definiert ist. Nun befinden wir uns also in Zeile 23.
Diese Funktion unterscheidet sich in zwei Punkten von der Main Funktion:
1) Anstatt eines ‘void‘, wie in der Main F. finden wir hier ein ‘int‘. Dies heißt, dass diese Funktion ein ‘int‘ zurückgibt(und zwar an die Main F.). Dies ist identisch mit dem Prototypen.
2) In der Klammer finden wir auch kein ‘void‘ wie in der Main F. sondern zwei Namen.
Und zwar sind dies Variablen, die wir hier Deklarieren. Ihr denkt bestimmt jetzt, dass hier etwas fehlt: Ja! Da fehlt wirklich etwas. Und zwar der Typ der Variablen(int, float etc.).
Wir müssen keinen Typ mehr angeben, weil wir das schon im Prototypen gemacht haben(wir haben dem Compiler gesagt, dass wir zwei Variablen vom Typ ‘int‘ in der Funktion addieren benutzen möchten. Also weiß der Compiler, dass die Variablen vom Typ int sein müssen.
Dabei spielt die Wahl des Namens keine Rolle. Das will heißen, dass ich in der Funktion(Zeile 23) einen beliebigen anderen Namen eingeben könnte. Es geht eigentlich nur darum, dem Compiler mitzuteilen, vom welchen Typ die Variablen sein sollen.
Nun wird eine weitere Frage aufgeworfen: Wir haben doch gelernt, dass man einen Variablennamen nur einmal verwenden darf, oder?
Nun, innerhalb einer Funktion kann man einen Variablennamen nur einmal verwenden. Das heißt nicht, dass wir einen Namen nicht mehrmals innerhalb eines Programmes benutzen können. In C++ ist es möglich einen Variablennamen mehrmals, aber in verschiedenen Funktionen zu verwenden.
Dies ist aber nicht ratsam, da nur die Übersicht leidet. Ich habe es nur zur Veranschaulichung so gemacht.
Das sollte fürs erste zum Thema Funktionen reichen. Jetzt möchte ich noch einen Nachtrag machen, der eigentlich im ersten Teil erscheinen sollte. SORRY!
Kommentare:
Kommentare dienen dazu ein Programm übersichtlicher zu gestalten. Mit ihnen ist es möglich irgendwo im Programm etwas reinzuschreiben, ohne das der Compiler meckert. Diese Text Teile werden dann einfach ignoriert.
Beispiel:
........
cout << "Hallo wie geht es dir?" // Ausgabe des Satzes auf den Bildschirm
.......
Hinter der ‘cout‘ Anweisung finden wir zwei ‘/‘. Diese sagen dem Compiler: Ignoriere alles was in der Zeile hinter den strichen steht.
Kommentare sollten regelmäßig benutzt werden, da ihr nach einen Monat bestimmt nicht mehr genau wißt was das eigentlich macht, was da steht.
So das war es auch schon wieder. Falls ihr noch fragen zu dem wirklich wichtigen Thema Funktionen habt dann schreibt bitte!!!!!
Bald folgt der nächste Teil
DrDoo
Für Fehler in diesem Tutorial übernehme ich keine Verantwortung!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!