AW: Logische Kuriositaeten
Herleitung einer Bedingung
********************
Oft sind Widersprueche mit einer if Funktion verknuepft. Wie laesst sich fuer eine Iteration, DZGL eine if Funktion realisieren ? Ein Informatiker kennt sicherlich dieses kleinen Trick :
if (in=10) then out=1 else out:=100
Das laesst sich auch schreiben als
out:=(in=10)*1 + (1-(in=10))*100
Das funktioniert fuer beliebige logische Ausdruecke.
Beispiel : Vorzeichen ermitteln
if (in>=0) then sign=1 else sign:=-1
out:=(in>=10)*1 + (1-(in>=10))*(-1)
effizienter waere evtl :
K:=(in>=10);
sign:=K+(1-K)*(-1)
sign:=K-(1-K)
sign:=2K-1
Test in=10 ,da groesser 0 gilt K=1, sign:=2-1=1
Test in=-1 ,da kleiner 0 gilt K=0, sign:=0-1=-1
Manche Programmiersprachen ermoeglichen diese Notation nicht.
Allgemein :
Falls (if_Wahrheit) then ((out:=if_Zuordnung) else ((out:=else_Zuordnung)
Falls (if_Wahrheit) then (out:=if_Zuordnung) falls ¬(if_Wahrheit) then (out:=else_Zuordnung)
out:=(if_Wahrheit)*if_Zuordnung + ¬(if_Wahrheit)*else_Zuordnung
out:=(if_Wahrheit)*if_Zuordnung + (1-if_Wahrheit)*else_Zuordnung
|