peace software
  Berndt Wischnewski  Richard-Wagner-Str. 49  10585 Berlin 
  Tel.: 030 - 3429075  FAX : 030 34704037  email: webmaster@peacesoftware.de  Ust-ID: DE135577379 
<= Previous

 

 

C Kurs - Was wollen Sie nun eigentlich mit Ihren Variablen?

Bis jetzt haben Sie gelernt was eine Variable ist und welche Typen von Variablen es gibt und wie man Variablen deklariert. Nun wollen Sie natürlich auch wissen, was man mit den Variablen denn so machen kann. Nun, man kann Ihnen etwas zuweisen.

 

1. Zuweisung allgemein
Die allgemeinste Form ist.

Variablenname = Ausdruck;      oder
variable_name = expression;      in english

Das Gleichheitszeichen steht hier für eine Zuweisung, also z.B. x = x + 42; bedeutet: Compiler, addiere jetzt zu dem was in x drin steht 42 dazu und tue das Ergebnis wieder in x, es ist auf keinen Fall mit einer mathematischen Gleichung oder ähnlichem zu verwechseln. C benutzt hierzu ebenso wie FORTRAN oder Basic das Gleichheitszeichen. Pascal und seine Verwandten, wie Modula und Oberon, benutzen hierzu := . Dies ist einerseits klarer, da der Unterschied zu einem Vergleich deutlich wird, andererseits muß man ein Zeichen mehr Tippen. Das gibt bei Programmierern natürlich Minuspunkte.

Der Ausdruck kann ein Wert, eine andere Variable, oder mehrere Variablen und Werte verknüpft mit Operatoren sein.

2. Arithmetische Operatoren
Hier eine Tabelle mit den arithmetischen Operatoren:

Operator
Beschreibung
Beispiel
-
Subtraktion x = y - 42;
-
unäres Minus; entspricht Multiplikation mit -1 x = -x;
-=
minus-gleich, Subtraktion mit Zuweisung x -= 42;
+
Addition x = 23 + 19;
+=
plus-gleich, Addition mit Zuweisung x += 99;
*
Multiplikation x = x * x;
*=
mal-gleich, Multiplikation mit Zuweisung x /= 7;
/
Division x = a / 42;
/=
durch-gleich, Division mit Zuweisung x /= 42;
%
Modulo Division; für ganze Zahlen der Rest der nach der Division übrigbleibt. x = 42 % 4; // Ergebnis: 2
--
Dekrement; entspricht x = x - 1; --x;   oder x--;
++
Inkrement; entspricht x = x + 1; x++;   oder x++;

Also Plus, Minus, Mal und geteilt sind noch relativ klar, Sie erinnern sich an Ihre Grundschulzeit? Wie im wirklichen Leben geht hier Punktrechnung vor Strichrechnung. Wenn Ihnen das nicht gefällt, müssen Sie Klammern setzen. Beachten müssen Sie die Unterschiede bei der Rechnung mit ganzen(int, long)und mit rationalen(float, double) Zahlen.

int x;
float f;

x = 11 / 3;    // das Ergebnis ist gnadenlos 3; es wird nicht gerundet

f = 11 / 3;    // das Ergebnis ist wieder gnadenlos 3 da die Zahlen, die geteilt werden, ganze Zahlen sind
f = 11.0 / 3.0;    // das Ergebnis
ist 3.666667

Unäres Minus ist ein hochtrabender Name für die Multiplikation mit -1. Wenn Sie also programmieren:

x = 2 - 22 * 2;    // zuerst 22 * 2, dann 2 - 44, Ergebnis: -42
x = -x;   // unäres Minus, Multiplikation mit -1

dann ist x jetzt: +42.

Operatoren mit gleichzeitiger Zuweisung -=   +=   *=   /= hier wird die Variable auf der linken Seite durch den Operand mit dem Wert auf der rechten Seite verknüpft.Der Witz dabei ist, das die Schreibweise kürzer wird.

x += 42; // zähle 42 zu x dazu, Kurzform für x = x + 42;
x -= a; // ziehe a von x ab, Kurzform für x = x - a;
x *= 42; // multipliziere x mit 42, Kurzform für x = x * 42;
x /= z; // dividiere x durch z, Kurzform für x = x / z;

Die Modulodivision ergibt den Rest nach einer Ganzzahldivision. Häh? Also % oder Modulusoperator ist nur erlaubt für ganze Zahlen, int, long und Verwandte. Der Wert der raus kommt ist der Rest der nach der Division übrigbleibt. Beispiel:

int x, y, z;

y = 10;
z = 3;
x = y / z; // Ergebnis: x ist 3
x = y % z; // Ergebnis: x ist 1; drei mal drei gleich neun, Rest 1

x = y % 0 // Ergebnis; x ist y (per Definition); teilen durch Null ist zwar verboten, aber der Rest ist die Zahl selber

Der -- und ++ Operator verringert/erhöht den Wert um eine Einheit. Bei int und long Variablen ist diese Einheit eins. Bei einfachen Konstrukten wie z.B.:

int x, y;

x = 10;
y = 10;
x--;    // Ergebnis: x ist 9
y++;  // Ergebnis: y ist 11

ist die Anwendung ziemlich klar. Man kann diese Operatoren vor- oder hinter die Variable setzen. Beispiel:

int x, y;

y = 10;
x = y++;   // Ergebnis: x ist 10 und y ist 11; die Zuweisung x = y; erfolgt zuerst, danach wird y inkrementiert.

y = 10;
x = ++y;   // Ergebnis: x ist 11 und y ist 11; zuerst wird y inkrementiert, dann wird x = y zugewiesen.

Die Sprache C++ (Zäh platsch platsch wie der kongeniale Schockwellenreiter zu sagen pflegt), die objektorientierte Weiterentwicklung von C, bedeutet also: C + 1. C++ wird in diesem Kurs nicht behandelt, ich kann es zwar, aber nicht so gut um einen Kurs zu geben. Trotzdem ist objektorientierte Programmierung ein tolles Konzept. Wenn Sie C draufhaben, müssen Sie sich unbedingt um C++, Java, Python usw. kümmern.

 

3. Relationale und logische Operatoren
Hier eine Tabelle mit den relationale und logische Operatoren:

Relationale Opeatoren
Operator
Beschreibung
Beispiel
>
Größer als 7 > 5
>=
Größer oder gleich 5 >= 5
<
Kleiner als x < y
<=
Kleiner oder gleich a <= 7
= =
Gleich 5 = = 7    // Ergebnis: false
!=
Nicht gleich; ungleich 1 != 99    // Ergebnis: true
Logische Opeatoren
Operator
Beschreibung
Beispiel
&&
AND, logisches und (a > b) && (c < d)
||
OR, logisches oder (x < y) || (a = = b)
!
NOT, logisches nicht ! a

Die Anwendung von relationalen und logischen Operatoren liefert immer einen boolschen Wert. - true oder false - zurück. Deshalb werden Sie meist im Zuhangenhang mit if-Abfragen eingesetzt (kriegen wir gleich).Man darf sie aber auch direkt auf Variablen anwenden, man tut dies aber fast nie, vielleicht manchmal um sehr komplexe, logische Konstrukte zu vereinfachen. Einfaches Beispiel:

int x, y, z;

y = 10;
z = 10;
x = y == z;   // Ergebnis: x ist true
x = y && z;  // hier wird gefragt ob y und z wahr sind, da beide nicht Null sind stimmt diese logische Aussage
x = ! (y != z) // hier wird gefragt ob das Gegenteil von (y ist ungleich z) wahr ist. Es ist wahr

Die logischen Operatoren "vielleicht_oder - PERHAPS_OR_NOT |!", "kann_sein - MAYBE &|" und "weiss_nicht - DONT_KNOW ??" wurden nach Intervention dogmatischer mathematischer Logiker nicht in den C Sprachstandard übernommen.

 

4. Operatoren auf Bit-Ebene
Im Gegensatz zu vielen anderen Programmiersprachen bietet C einen vollen Satz an Operatoren für Bitmanipulationen. Dies ist besonders bei Programmierarbeiten, wo direkt auf die Hardware zurgegriffen wird sehr nützlich. Stichworte sind hier die Entwicklung von Treibern und Betriebssystemen.

Bitwise Operators
Operator
Beschreibung
Beispiel
&
AND, und-Operator 7 & 5
|
OR, oder-Operator 7 | 5
^
XOR, exclusive-oder-Operator x ^ y
>>
Shift right, alle Bits nach recht rücken x >> 1
<<
Shift left, alle Bits nach links rücken x << 1

Hier werden die Operationen aus der Logik der binären Mathematik auf die Bits der Variablen angewandt. Ist alles sehr nett, wird aber im Verlauf des C Kurses nicht mehr benötigt. Deshalb jetzt hier eine umfassende Erklärung mit Bit-Tabellen:

& - Operation:

1
1
0
0
0
0
0
1
z.B das Zeichen 'A' das von einem Modem mit Parity-Bit gesendet wurde
0
1
1
1
1
1
1
1
127 binär
&
bitwise and
0
1
0
0
0
0
0
1
'A' ohne Paritätsbit

Wenn man z.B. zu einem beliebigen Zeichen mit 'Partity-Bit' 127 binär addiert, eleminiert man dieses 'Partity-Bit'. AND bedeutet, wenn beide Bits des Vergleiches gesetzt sind, ist das Ergebnis 1, sonst Null.

| - Operation:

1
0
0
0
0
0
0
1
129
0
0
0
0
0
0
1
1
3
|
bitwise or
1
0
0
0
0
0
1
1
131

Die binäre ODER Operation setzt ein Bit im Ergebnis, wenn in beiden oder in einer der beiden Variablen dieses Bit gesetzt ist.

^ - Operation:

1
0
0
0
0
0
0
1
129
0
0
0
0
0
0
1
1
3
^
bitwise xor
1
0
0
0
0
0
1
0
130

Die binäre ENTWEDER-ODER Operation setzt ein Bit im Ergebnis dann, wenn in einer der beiden Variablen des Vergleiches dieses Bit gesetzt ist. Beide nicht gesetzt oder beide gesetzt ergibt Null.

Shift - Operationen:

x = 7
0
0
0
0
0
1
1
1
Ergebnis: 7
x << 1
0
0
0
0
1
1
1
0
Ergebnis: 14
x << 3
0
1
1
1
0
0
0
0
Ergebnis: 112
x << 2
1
1
0
0
0
0
0
0
Ergebnis: 192
x >> 1
0
1
1
0
0
0
0
0
Ergebnis: 96
x >> 2
0
0
0
1
1
0
0
0
Ergebnis: 24

Die Shift Operatoren verschieben die Bits der Variablen um die angegebene Anzahl von Stellen. Aufpassen, an den Enden können die Bits "rausgeschoben" werden.

 

<= Previous











Ich mag diese "Lerne xxx in 21 Tagen" Bücher eigentlich nicht, aber manche Leute stehen da halt drauf: