Einzelnen Beitrag anzeigen
  #2  
Alt 12.03.12, 23:50
Benutzerbild von richy
richy richy ist offline
Singularität
 
Registriert seit: 01.05.2007
Ort: karlsruhe
Beitr?ge: 4.170
Standard 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
Mit Zitat antworten