LabVIEWForum.de
Case Strukturen - Druckversion

+- LabVIEWForum.de (https://www.labviewforum.de)
+-- Forum: LabVIEW (/Forum-LabVIEW)
+--- Forum: LabVIEW Allgemein (/Forum-LabVIEW-Allgemein)
+--- Thema: Case Strukturen (/Thread-Case-Strukturen)



Case Strukturen - tobey - 09.08.2006 16:05

Hallo, mal eine einfache Frage:

Kann man in Case Strukturen einf Fallunterscheidung wie folgt definieren?
Fall1: >0
Fall2: =0
Fall 3: <0

Vielen Dank schon mal!

mfg tobi

Hab jetzt mein Problem mit "Sign" gelöst, weil es anscheinend nicht möglich ist solche Fälle in dem Case zu definieren!


Case Strukturen - Lucki - 09.08.2006 16:20

Ja, bei reellen Zahlen sollte man die Sign-Funktion vorschalten, bei Integer braucht man das natürlich nicht.
[attachment=2841]


Case Strukturen - tobey - 04.09.2006 11:17

Wie gesagt, ich hab es genau mit der Methode die du mir vorschlägst gelöst (sign, siehe oben). Aber wollte eigentlich wissen ob es nicht noch anders geht. Sprich ich schließe die Leitung einfach an und dann macht der Case die Unterscheidung ob größer 0 etc.
Aber ich glaube das geht nicht...

mfg tobi


Case Strukturen - cb - 04.09.2006 15:08

' schrieb:Aber ich glaube das geht nicht...

doch, das geht - mit der Einschränkung, dass eine Case-Struktur nur Integer als numerischen Eingang akzeptiert (siehe Beispiel von Lucki, da ist ein Coercion Dot ...):

[attachment=3151]

Man kann im "Case Selector" Zahlenbereiche festlegen:

0 --> Eingang ist genau gleich 0
0.. Eingang ist größer gleich 0
..0 Eingang ist kleiner gleich 0
usw

In meinem Beispiel verwende ich KEINEN Default Case. Das muss ich auch nicht, weil der Zahlenbereich von minus Unendlich bis plus unendlich komplett abgedeckt ist. Sollte das nicht der Fall sein, gibt's die Fehlermeldung "Selector Cases are not unique" ... (Cases sind nicht eindeutig oder so ...). Das gleiche ist auch der Fall, wenn sich die Bereiche überschneiden.

Dann braucht man entweder den Default Case, oder man muss eindeutige Bereiche definieren.

Grüße
CB


Case Strukturen - Lucki - 04.09.2006 17:26

' schrieb:Aber wollte eigentlich wissen ob es nicht noch anders geht. Sprich ich schließe die Leitung einfach an und dann macht der Case die Unterscheidung ob größer 0 etc.
Ja, es geht zumindest in dem Sinne, daß Dir LV keine Fehlermeldung ins Gesicht schleudert, wenn Du direkt eine reelle Zahl an den Case anschließt. Die Frage ist nur, ob dann noch das geschieht, was Du eigentlich wolltest. Passieren tut dann dies: Die reelle Zahl wird intern auf Integer gerundet, und zum vermeintlichen Case "0" gehört in Wirklichkeit der Bereich -0.5..+0.5.


Case Strukturen - cb - 05.09.2006 06:01

' schrieb:Ja, es geht zumindest in dem Sinne, daß Dir LV keine Fehlermeldung ins Gesicht schleudert, wenn Du direkt eine reelle Zahl an den Case anschließt. Die Frage ist nur, ob dann noch das geschieht, was Du eigentlich wolltest. Passieren tut dann dies: Die reelle Zahl wird intern auf Integer gerundet, und zum vermeintlichen Case "0" gehört in Wirklichkeit der Bereich -0.5..+0.5.

ja, schrieb ich doch: nur Integer sind möglich (steht über dem Bild)

Wenn ich den Bereich einer Gleitkommazahl überprüfen muss, dann nehme ich sowieso "In Range and Coerce" ...

Grüße
CB


Case Strukturen - Lucki - 05.09.2006 07:58

' schrieb:ja, schrieb ich doch: nur Integer sind möglich (steht über dem Bild)
Ja, weiß ich, ich wollte ja ergänzend nur beschreiben, was wirklich genau passiert, wenn man die Gleitkommazahl direkt an den Case anschließt. Und auch ich würde das nicht so machen, selbst wenn ich genau dieses Ergebnis im Auge hätte. Manchmal ist LabVIEW gegenüber Programmiersünden viel zu tolerant, es wäre besser, wenn man solchen Sündern eines auf die Pfoten hauen würde.
Am Eingang eines Cases müssen ja nicht unbedingt Integer anliegen, aber auf jeden Fall abzählbare (endliche oder unendliche) Mengen - und reelle Zahlen sind das eben nicht.
(N.B. Bei einem Aufzählungstyp als Case-Eingang ist dann aber intern jedem Element eine Integer-Zahl zugeordnet. Insofern wäre es müßig darüber zu diskutieren, ob ein Case nur Integer-Zahlen verträgt oder auch andere abzählbere Mengen.)


Case Strukturen - tobey - 08.09.2006 09:03

Okay danke, jetzt bin auch wieder etwas schlauer!

Das was ich will geht, aber eben nur mit Integer! Alles klar! thx