Syntax | ["Multiplexer", ["$In1", "$In2",... ,"$In_n"],"$Out","$Select"]
|
---|
Eingänge | ["$In1", "$In2",... ,"$In_n"] : Array der zur Verfügung stehenden Elemente, bestehend aus einer oder mehreren Variablen vom Typ bool, integer, float oder string
"$Select" (integer oder float): Selektor, trifft die Auswahl.
|
---|
Besonderheiten | Der erste Wert im Array wird über den Selektor 0 (und nicht über 1 ) adressiert. Falls der Wert des Selektors grösser ist als die Anzahl der Eingänge, wird immer der letzte/höchste Eingang selektiert; damit ist es bspw. möglich, auf den letzten Eingang einen Default-Wert zu legen, der für alle Selektoren über einem bestimmten Grenzwert zur Anwendung kommt. Formal dargestellt gilt somit bei einem Multiplexer mit n Eingängen (E0, E1, ... ,En-1), einem Ausgang (A) und einem Selektor (S) folgendes: Ausgang Bedingung A = E0 S < 0 A = ES 0 <= S < n A = En-1 S >= n Wenn einzelne Eingänge nicht verwendet werden, kann anstellen einer Variable eine 0 verwendet werden (bspw. ["Multiplexer",["$Val_A",0, "$DefVal",0,0,"$Val_D","$DefVal"],"$Out","$Select"] ). Wird ein mit 0 bezeichneter Eingang selektiert, hängt das Ergebnis vom Datentyp ab: Das Beispiel im vorstehenden Lemma zeigt gleichzeitig auch einen Weg auf, wie man einen Defaultwert (hier über die Variable "$DefVal" ) auf mehrere Eingänge legt. Falls der Ausgang nicht verändert werden soll, sofern ein unerwarteter Wert für den Selektor auftaucht, kann die Ausgangsvariable (im Beispiel: “$Out” ) auch als Ausgang verwendet werden (im nachfolgenden Bsp. sollten die unterstrichenen Werte durch den Selektor nicht adressierbar sein): unterstrichenen Werte durch den Selektor nicht adressierbar sein):
["Multiplexer",["$Out","$Out","$Val_A","$Val_B", "$Out", "$Val_C", "$Val_D","$Out"],"$Out","$Select"]
|
---|