|
|
||
|
|
||
| .. logische Bedingungen und Operationen für Variable | ||
|
|
||
|
Logische Bedingungen sind mathematische
Ausdrücke, die sich aus Vergleichen (Relationen) und
logischen Operationen auf die miteinander verglichenen Variablen
ergeben. Ihr Ergebnis ist entweder wahr = log1 oder falsch =
log0. Andere Ergebnisse gibt es nicht.
Vergleiche in C In der nachfolgenden Tabelle werden alle Vergleichsoperatoren oder Relationen der Sprache C genannt. Die Relationen lassen sich auf Variable, also Inhalte von Speicherzellen anwenden. Dabei kann der Vergleich mit einer konstanten Zahl z.B. 5 oder einer zweiten Variablen vorgenommen werden. Das Ergebnis, der Wahrheitswert, log0 oder log1, wird im Prozessor aufgehoben, kann aber auch einer Variablen zugewiesen werden, die dann den Wert 1 oder 0 enthält. |
|||
|
|
|
|
|
|
|
a = = b |
Vergleich auf Gleichheit zwischen den Operanden a und b |
|
|
|
a ! = b |
Vergleich auf Ungleichheit zwischen den Operanden a und b |
|
|
|
a > b |
Vergleich ob a größer ist als b |
|
|
|
a < b |
Vergleich a kleiner ist als b |
|
|
|
a > = b |
Vergleich a größer oder gleich ist als b |
|
|
|
a < = b |
Vergleich a kleiner oder gleich ist als b |
|
|
|
Beispiele für Vergleiche |
|
|
|
|
(a < 5) |
diese Bedingung ist wahr, log1, wenn der Inhalt der Speicherzelle a kleiner ist als 5 ist. Sollte der Wert in a größer oder gleich dem Wert 5 sein, so ist die Bedingung falsch, log0. |
|
|
|
(a >= b) |
diese Bedingung ist wahr, log1, wenn der Inhalt des Speichers a größer oder gleich, wie der von b ist. Sollte der Wert in a kleiner sein als der Wert in b, so ist die Bedingung falsch, log0. |
|
|
|
x =(a == 10) |
diese Bedingung ist wahr, log1, wenn der Inhalt des Speichers a gleich 10 ist. Sollte der Wert in a ungleich 10 sein, so ist die Bedingung falsch, log0. Das Ergebnis des Vergleichs wird in diesem Fall der Variablen x zugewiesen. Ist die Bedingung wahr, so enthält x=1, ist sie falsch, so ist x=0. |
|
|
Merke:
Eine Speicherzelle deren Inhalt die Zahl 0
ist, repräsentiert in logischen Ausdrücken den
Wahrheitswert log0. Ist der Inhalt einer Speicherzelle ungleich
0, also irgend eine Zahl zwischen 1 und 'sehr groß' oder
ist die Zahl negativ, so repräsentiert sie den Wahrheitswert
log1.
Eine Schleife wie while(x){}; was
gleichbedeutend ist mit while(x !=0), würde arbeiten, bis x
den Wert 0 enthält. Ähnliches gilt für die
Verzweigung if (x){}.
Dagegen sind while(1){}oder while(25){}usw. unendliche Schleifen, denn der Wahrheitswert der Konstante 1 bzw. 1!=0 ist immer gegeben. Die konstante Zahl 1 wird nie den Wert 0 annehmen können. Solche Schleifen lassen sich mit den C-Schlüsselworten return oder break unterbrechen. |
|||
|
|
|||
| logische Verknüpfungen in C .. auf Variable Zunächst ist darauf hinzuweisen, dass es die logischen Verknüpfungen UND, ODER und die Negation in C in zwei voneinander verschiedenen Ausführungsarten gibt. Einmal können Bits mit ihnen verbunden werden, hier sind es dagegen die oben geschilderten Wahrheitswerte log0 und log1 von Variablen. Sie können ebenfalls durch UND (&&), ODER (||) und die Negation (!) miteinander verbunden werden. | |||
|
|
&& |
logische UND - Verknüpfung auf Wahrheitswerte von Variablen |
|
|
|
|| |
logische ODER - Verknüpfung auf Wahrheitswerte von Variablen |
|
|
|
! |
Negation, NICHT Umkehrung des Wahrheitswertes eines log Ausdrucks |
|
|
|
|
Die logischen Verknüpfungen &&, ||, ! auf Wahrheitswerte von Variablen, dürfen nicht mit den logischen Operatoren &, |, ^, ~ verwechselt werden. Letztere verbinden einzelne Bits logisch miteinander, so wie es aus der Digitaltechnik bekannt ist. |
|
|
|
Beispiele für logische Verknüpfungen: |
|
|
|
|
(a>5) && (b= =4) |
diese Bedingung ist wahr, wenn der Inhalt von a grösser ist als 5 und gleichzeitig der Inhalt von b den Wert 4 besitzt. Sollte eine dieser beiden Teilbedingungen nicht zutreffen, dann ist die gesamte Bedingung falsch. Für die UND-Verknüpfung gilt die Wahrheitstabelle der Digitallogik. |
|
|
|
(a>5) || (b= =4) |
diese Bedingung ist wahr, wenn der Inhalt von a größer ist als 5 oder der Inhalt von b den Wert 4 besitzt. Sollten beide Teilbedingungen nicht zutreffen, dann ist die gesamte Bedingung falsch. Für die ODER-Verknüpfung gilt die Wahrheitstabelle der Digitallogik. |
|
|
|
!(a>5) |
Während die UND sowie die ODER Verknüpfung zwei Operanden benötigen, braucht die NEGATION nur einen. Man nennt sie deswegen eine unäre Verknüpfung. Die Bedingung links ist wahr, wenn der Inhalt von a kleiner oder gleich 5 ist. Für die NEGATION gilt die Wahrheitstabelle der Digitallogik. |
|
|
|
|
|
|
| Negation logischer Ausdrücke Für den Umgang mit logischen Ausdrücken sollte man sich merken, dass sie sich in ihrem Wahrheitsgehalt umkehren, wenn man entweder den gesamten Ausdruck in Klammern setzt und mit ! negiert, oder in dem gesamten logischen Ausdruck alle Vergleiche und logischen Verknüpfungen umkehrt. Es gelten folgende Umkehrungen ... | |||
| => Vergleiche | = = | wird zu | != | ||||||
| != | wird zu | = = | |||||||
| > | wird zu | <= | |||||||
| < | wird zu | >= | |||||||
| >= | wird zu | < | |||||||
| <= | wird zu | > | |||||||
| => Operationen | && | wird zu | || | ||||||
| || | wird zu | && | |||||||
|
|
Beispiele für die Negation logischer Ausdrücke: |
|
|
|
|
(a>5) && (b= =4) |
diese Bedingung ist wahr, wenn der Inhalt von a größer ist als 5 und gleichzeitig der Inhalt von b den Wert 4 besitzt. Sollte eine dieser beiden Teilbedingungen nicht zutreffen, dann ist die gesamte Bedingung falsch. Für die UND-Verknüpfung gilt die Wahrheitstabelle der Digitallogik. |
|
|
|
(a< = 5) || (b!= 4) |
Anstelle der NEGATION hätte man auch alle Operationen in ihr Gegenteil verkehren können |
|
|
|
|
|
|
|
|
(a || b) |
diese Bedingung ist wahr, wenn entweder der Inhalt von a ungleich 0 ist oder der Inhalt von b ungleich 0 ist. Sie ist falsch, wenn a und b gleichzeitig 0 enthalten. Diese Bedingung ist eine abkürzende Schreibweise von .. |
|
|
|
(a != 0) || (b != 0) |
Nach den booleschen Gesetzen hätte man auch schreiben können .. |
|
|
|
!((a= =0) && (b= =0)) |
Negiere( a soll 0 sein und gleichzeitig b soll 0 sein). Solange ein Speicher a oder b einen Wert enthält wird der Ausdruck falsch (0), durch die Negation wird er wahr (1). |
|
|
|
|
|
|
| Bemerkungen: | ||
|
||
|
|
.de