Programmieren
 
 
 
 
 
C-Grundkurs
 
 
 
 
 
.. 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))

oder


(a< = 5) || (b!= 4)

diese Bedingung ist falsch, 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 wahr.

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:
 
 
  • Achtung der Vergleich auf Gleichheit muss mit zwei Gleichheitszeichen geschrieben werden '= =', sonst findet eine Zuweisung statt. Also a= =5 ist ein Vergleich, und fragt, ob der Speicher a den Inhalt 5 enthält. Der Inhalt von a wird nicht verändert.
    Bei a=5, wird der Speicherzelle a die 5 eingespeichert, egal welchen Wert a vorher hatte.
     
  • Eine Variable oder Zahl, mit einem Inhalt ungleich 0, besitzt den Wahrheitswert wahr (true), log(1). Eine solche mit dem Inhalt 0, besitzt den Wahrheitswert falsch (false), log(0).
 
 
 
 
www..de