C++-Programmierung - Teil 2
Operatoren und Auswertungen
Teil: (2/?)
Thema: Operatoren und Auswertungen
Version: 2.00
Autor: Dr Doo
e-Mail: DrDoo@gmx.de
Datum: 12.02.2000
Operatoren:
Zuerst einmal möchte ich kurz erklären, was Operatoren überhaupt sind:
Einfach gesagt sind Operatoren Symbole, die den Compiler eine bestimmte Aktion ausführen lassen. Im ersten Teil dieses Tutorials haben wir bereits Operatoren kennengelernt:
Wir haben zwei Werte addiert und die Summe im gleichen schritt einer Variablen zugewiesen:
ergebnis = zahl1 + zahl2;
Dabei ist zu beachten, dass der Compiler von rechts nach links arbeitet. Er addiert zuerst die beiden werte und weißt die Summe anschließend der Variablen ergebnis zu. Hier hätten wir dann auch schon einen weiteren Operator: den Zuweisungsoperator.
Es ist bei diesem Operator zu beachten, dass er nicht ‘ist das selbe wie(ist gleich)‘ bedeutet, wie es in der Mathematik ist. Er bedeutet viel mehr: Weise den rechten Wert dem linken Operanden zu. Wenn man zwei Werte auf Gleichheit überprüfen will, muß man den ‘Vergleichsoperator‘ verwenden( = = ).
Mathematische Operatoren:
Wir haben auch schon Mathematische Operatoren kennengelernt. Diese sind in ihrer Funktion wohl selbst erklärend. Lediglich die Schreibweise in C++ ist anders als in der Mathematik:
Mathematik |
C++ |
Bedeutung |
+ |
+ |
Addition |
- |
- |
Subtraktion |
* |
Multiplikation |
|
: |
/ |
Division |
? |
% |
Modulo* |
*Dieser Operator liefert den Rest einer Ganzzahldivision: 31 : 6 = 5 mit einem Rest von 1.
Vergleichsoperatoren:
Prüft zwei Werte auf folgende Fälle:
Bezeichnung |
Zeichen |
Gleich |
= = |
Ungleich |
!= |
kleiner |
< |
größer |
> |
kleiner oder gleich |
<= |
größer oder gleich |
>= |
Inkrementierung:
Wenn man einen Wert nur um eins erhöhen bzw. um 1 erniedrigen will kann man das folgendermaßen schreiben:
int zahl=0;
zahl = zahl +1;
zahl = zahl - 1
Da dies aber umständlich ist, bietet C++ eine andere Möglichkeit die weniger Arbeit macht, aber das selbe bewirkt. Mit Hilfe des Inkrements kann man den Wert einer Variablen um eins erhöhen. Mit Hilfe des Dekrements kann man den Wert einer Variablen um 1 erniedrigen.
In der Praxis sieht das wie folgt aus:
int zahl=0;
zahl++;
zahl--;
Erst wird die Variable ‘zahl‘ erzeugt und ihr der Wert ‘0‘ zugewiesen. Anschließend wird der Wert um eins erhöht. Folglich hat die Variable nun den Wert ‘1‘.
Nach der Erhöhung um 1 wird der Wert wieder um ‘1‘ erniedrigt. Nun hat die Variable wieder ihren ürsprünglichen Wert ‘0‘.
Nun stellt sich die Frage, ob man das Inkrement bzw. das Dekrement nicht auch vor die Variable schreiben kann: Die Antwort lautet JA. Das sieht dann wie folgt aus:
++zahl;
--zahl;
Man muß allerdings bei Inkrementireung bzw. Dekrementierung auf eine Sache achten:
Es gibt ein sog. ‘Präfix‘ und ein ‘Postfix‘. Beim Präfix wird der Wert der Variablen erst erhöht und anschließend(siehe Beispiel) einer Variablen zugewiesen. Beim Postfix wird der Wert erst einer Variablen zugewiesen und anschließend erst erhöht:
....
int x=6;
int y=6;
int ergebnis=0;
ergebnis = ++x;
ergebnis = y++;
...
Erst werden drei Variablen erzeugt und ihnen Werte zugewiesen. Im ersten Fall haben wir ein Präfix. Der Wert der Variablen ‘x‘ wird als erstes um eins erhöht und dann der Variablen ‘ergebnis‘ zugewiesen. ‘x‘ hat jetzt einen Wert von 7. Die Variable ‘ergebnis‘ hat einen Wert von 7.
Im zweiten Fall haben wir ein Postfix. Der Wert von ‘y‘ wird erst der Variablen ‘ergebnis‘ zugewiesen und anschließen erst um eins erhöht. Die Variable ‘y ‘ hat nun einen Wert von 7 und die Variable ‘ergebnis‘ hat einen Wert von 6.
Die if-Anweisung:
Nun werden wir eine Möglichkeit kennenlernen, wie man Eingaben eines Users auswerten kann. Dies mache wir mit Hilfe der if-Anweisung. Dabei wird eine Aktion ausgeführt, wenn eine bestimmte Bedingung erfüllt wird. Schauen wir uns das mal in der Praxis an:
1: #include<iostream.h>
2:
3: void main(void)
4: {
5: int auswahl, zahl1, zahl2, ergebnis;
6:
7: cout << "Bitte waehlen Sie aus den folgenden moeglichkeiten ein aus:\n";
8: cout << "1) Zwei Zahlen addieren\n";
9: cout << "2) Zwei Zahlen Multiplizieren\n";
10: cout << "Bitte waehlen Sie(1/2):";
11: cin >> auswahl;
12:
13: cout << "\nBitte geben Sie die erste Zahl ein:";
14: cin >> zahl1;
15: cout << "\nBitte geben Sie die zweite Zahl ein:";
16: cin >> zahl2;
17:
18: if(auswahl == 1)
19: ergebnis = zahl1 + zahl2;
20: if(auswahl == 2)
21: ergebnis = zahl1*zahl2;
22: if(auswahl != 1 && auswahl != 2)
23: cout << "\nSie haben eine falsche auswahl getroffen!!!";
24: cout << "\nDas Ergebnis ist:" << ergebnis;
25: }
Erläuterung:
Zu den Zeilen 1-6 muß ich wohl kein Kommentar mehr abgeben. In den Zeilen 7-10 wird der User dazu aufgefordert eine der Optionen auszuwählen. In Zeile 11 wird die Wahl des Users(1/2) in die Variable ‘auswahl‘ eingelesen. Die Zeilen 13-16 sollten klar sein.
In Zeile 18 beginnt die Auswertung. Hierbei wird überprüft, welche Option der User gewählt hat. Man kann diese Zeilen(18/19) wie folgt ausdrücken: Wenn der Wert der Variablen ‘auswahl‘ gleich ‘1‘ ist, dann weise die Summe der beiden Zahlen der Variablen ‘ergebnis‘ zu. Genauso verhält es sich mit den Zeilen 20/21. In Zeile 22 gibt es jedoch etwas neues: Hier wird die Anweisung erst ausgeführt, wenn zwei Bedingungen erfüllt werden. Wir verknüpfen an dieser Stelle zwei Bedingungen mit einem logischen AND(und). Man würde es wie folgt übersetzen: Wenn Ausdruck eins UND Ausdruck zwei gleich TRUE(= wahr: Wenn auswahl != ‘1‘ UND auswahl != ‘2‘), dann führe die Anweisung aus.
In Zeile 24 wird schließlich das Ergebnis ausgegeben.
Um weitere Möglichkeiten, die man in der if-Anweisung verwenden kann, zu zeigen, werde ich direkt noch ein Beispiel aufführen. Dabei erweitere ich das oben stehende Programm um ein paar Dinge:
1: #include<iostream.h>
2:
3: void main(void)
4: {
5: int auswahl, zahl1, zahl2, ergebnis;
6:
7: cout << "Bitte waehlen Sie aus den folgenden moeglichkeiten ein aus:\n";
8: cout << "1) Zwei Zahlen addieren\n";
9: cout << "2) Zwei Zahlen Multiplizieren\n";
10: cout << "Bitte waehlen Sie(1/2):";
11: cin >> auswahl;
12:
13: cout << "\nBitte geben Sie die erste Zahl ein:";
14: cin >> zahl1;
15: cout << "\nBitte geben Sie die zweite Zahl ein:";
16: cin >> zahl2;
17:
18: if(auswahl != ‘1‘)
19: {
20: if(auswahl == ‘2‘)
21: ergebnis = zahl1 * zahl2;
22: cout << "\nDas Ergebnis ist:" << ergebnis;
23: else
24: cout << "\nSie haben eine Ungueltige Option gewaehlt!!!";
25: }
26: else
27: {
28: ergebnis = zahl1 + zahl2;
29: cout << "\nDas Ergebnis ist:" << ergebnis;
30: }
31: }
Erläuterung:
Dieses Programm macht genau das selbe, wie das Programm zuvor. Es hat sich lediglich die Schreibweise der Auswertung verändert. Deswegen setze ich auch direkt in Zeile 18 an: Zuerst wird die Bedingung gestellt: Wenn die Variable ungleich ‘1‘ ist, dann führe die Anweisungen innerhalb der geschweiften Klammern aus. Wenn die Variable aber gleich(also nicht ungleich 1) ist dann führe die Anweisung aus, die nach dem ‘else‘ folgt.
Das ‘else‘ bedeutet nämlich ‘andernfalls‘. Man könnte das wie folgt sagen: Wenn die Bedingung so und so erfüllt ist, dann mache dies ANDERNFALLS(else) mache dies.
Wenn die Variable aber ungleich 1 ist, so werden, wie schon gesagt, die Anweisungen innerhalb der geschweiften Klammern ausgeführt. In diesem Fall würde dann wieder eine Auswertung statt finden. Wenn die Bedingung nicht erfüllt wird, so wird eine Fehlermeldung ausgegeben und das Programm fährt hinter der else Anweisung in Zeile 25 fort(also in Zeile 30).
Das war es auch mit dem zweiten Teil meines Tutors.
Für konstruktive Kritik wäre ich Dankbar. Mail Sie mir einfach an die unten(und oben) stehende e-Mail. Falls ihr irgendwelche Fehler findet(die sind bestimmt zahlreich vorhanden, aber ich bin auch nur ein Mensch) so schreibt mir. Falls ihr noch Fragen habt dann schreibt ebenfalls !!!
DrDoo@gmx.de
Bald folgt der nächste Teil
DrDoo
Für Fehler in diesem Tutorial übernehme ich keine Verantwortung!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!