INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.


Antwort schreiben 

Was tun im Case False?



Wenn dein Problem oder deine Frage geklärt worden ist, markiere den Beitrag als "Lösung",
indem du auf den "Lösung" Button rechts unter dem entsprechenden Beitrag klickst. Vielen Dank!

28.09.2009, 07:57
Beitrag #11

TSC Offline
LVF-Team
LVF-Team

Beiträge: 1.882
Registriert seit: Sep 2008

LV 2018 SP1
2008
EN

52379
Deutschland
Was tun im Case False?
' schrieb:Diese Art der Programmierung widerspricht allerdings dem LV Grundgedanken der datneflussorientierten Programmierung, da lokale Variablen Sprunkbefehle repräsentieren. Datenfluss bedeutet nunmal auch einige Drähte im BD.

Unter einem Sprung-Befehl verstehe ich ein wenig was anderes. Eine Lokale Variable ist doch lediglich ein Konstrukt, um einen bestimmten Speicherbereich auszulesen. Der Datenfluss wird auch nicht "wirklich" gestört, da er ja durch die Case-Strukturen bestimmt ist. Das einzige Problem was im zweiten Screenshot von Lucki auftreten könnte, wären Race-Conditions. Da aber in den beiden Case-Strukturen nicht auf die selben Indizes im Array zugegriffen wird, ist das hier auch kein Problem.

Ein Sprung-Befehl ist in meiner Welt eher eine Art Schleife. Wenn du am Sprung-Befehl angekommen bist, gehe zurück zum Einstiegspunkt und fahre dort fort. Damit eine Terminierung des Codes sichergestellt ist, sollte der Sprung-Befehl in diesen Falle durch einen Case-Anweisung abgesichert sein.
Eine andere Möglichkeit wäre, bestimmte Teile des Codes, zu überspringen. Auch hier bietet siche eine Case-Struktur an.

LG
Torsten

"Über Fragen, die ich nicht beantworten kann, zerbreche ich mir nicht den Kopf!" (Konrad Zuse)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
28.09.2009, 08:09
Beitrag #12

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.689
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Was tun im Case False?
' schrieb:Da aber in den beiden Case-Strukturen nicht auf die selben Indizes im Array zugegriffen wird, ist das hier auch kein Problem.
Das sehe ich anders.

Das Problem tritt nicht auf, weil auf "Indices zugeriffen" wird, sondern weil das Array in zwei Datenflüssen vorhanden ist. Das Problem hierbei ist, dass beide parallel ausgeführt werden (können). Bedenke folgenden Fall: Das Array der einen Schleife wird ausgelesen - und genau in dem Moment, in dem dieser Datenfluß in das Array-Bearbeitungs-Element eintritt, wird die parallele Case-Sequenz ausgeführt. Dort wird jetzt auch das Array ausgelesen und ein Datenfluß erzeugt. Jetzt liegen zwei identische Datenflüsse vor. Jeder der beiden ändern jetzt seine spezifischen Indices. So: Wer von den beiden ist jetzt berechtigt, seine manipulierten Daten in dem Array-Element abzuspeichern? Typischer Fall von Race-Condition - also keine Abhängigkeit von Indix-Manipulieren, sondern nur alleine von zwei Datenflüssen.

Lösung: Cases seqeunzieren mit dem Array.

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
28.09.2009, 08:17
Beitrag #13

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.689
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Was tun im Case False?
' schrieb:da lokale Variablen Sprunkbefehle repräsentieren.
Von einem bestimmten Standpunkt aus, kann man das so sagen: Irgendwann ist ein Datenfluß abgearbeitet, dann "springt" die Abarbeitung zum nächsten Datenfluß. Und der beginnt hier nunmal mit einer Lokalen Variablen. Das impliziert aber, dass es keine parallele Verarbeitung gibt!

Besser ist es aber, es so zu sehen: Alle Datenflüsse, egal mit was sie beginnen - ob mit Lokalen Variablen, Schieberegistern, VI-Ausgängen etc. , beginnen gleichzeitig. Das impliziert, es gibt keine Sprungbefehle!

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
28.09.2009, 08:29
Beitrag #14

abrissbirne Offline
LVF-Stammgast
***


Beiträge: 480
Registriert seit: Aug 2007

LV2009, LV2010
2007
EN

66123
Deutschland
Was tun im Case False?
' schrieb:Von einem bestimmten Standpunkt aus, kann man das so sagen: Irgendwann ist ein Datenfluß abgearbeitet, dann "springt" die Abarbeitung zum nächsten Datenfluß. Und der beginnt hier nunmal mit einer Lokalen Variablen. Das impliziert aber, dass es keine parallele Verarbeitung gibt!

Besser ist es aber, es so zu sehen: Alle Datenflüsse, egal mit was sie beginnen - ob mit Lokalen Variablen, Schieberegistern, VI-Ausgängen etc. , beginnen gleichzeitig. Das impliziert, es gibt keine Sprungbefehle!
Auf jeden Fall sagte das NI zu mirWink. Aber die sagten eher Sprungbefehl, als Sprunkbefehl.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
28.09.2009, 09:10
Beitrag #15

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.689
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Was tun im Case False?
' schrieb:Auf jeden Fall sagte das NI zu mirWink.
Ich glaub das erst, wenn Rolf K. das sinngemäß bestädigt hat.

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
28.09.2009, 09:12
Beitrag #16

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
Was tun im Case False?
' schrieb:Das sehe ich anders.
Jetzt liegen zwei identische Datenflüsse vor. Jeder der beiden ändern jetzt seine spezifischen Indices. So: Wer von den beiden ist jetzt berechtigt, seine manipulierten Daten in dem Array-Element abzuspeichern? Typischer Fall von Race-Condition - also keine Abhängigkeit von Indix-Manipulieren, sondern nur alleine von zwei Datenflüssen.
Über die Race-Condition der parallelen Schleifen hatte ich auch nachgedacht, als ich das Beispiel erstellte, denn die parallele Verwendung von lokalen Variabelen ohne Datenabhängigkeit in einer Schleife ist ja geradezu das Musterbeispiel, wie man es nicht machen soll. Dann habe ich mir aber gesagt: Die Bedenken sind in diesem Beispiel rein akkademisch. Denn kein Mensch würde es schaffen, die beiden Bedienköpfe, die der jeweiligen true-Case auslösen, so schnell hintereinader zu drücken, das es mit dieser diese race-condition ernst wird.
Und wer ganz genau hinschaut, der wird feststellen, das es selbst bei gleichzeitiger Ausfühung nicht kritisch werden kann. Zwar wird in beiden Cases die gleiche lokale Variable verwendet, aber: In der ersten Casestruktur werden nur die ersten beiden Element des Array beschrieben, in der zweiten Strukture nur die letzten beiden. Der optische erste Eindruck, daß es da bei gleichzeitiger Auführung Wettlaufprobleme gibt, erweist sich also bei geauerem Hinsehen als falsch.
Das zweite Argument ist mir erst jetzt eingefallen und macht das erste, schwächere Argument überflüssig. Ich lasse es aber so stehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Anzeige
28.09.2009, 09:20
Beitrag #17

schrotti Offline
LVF-Freak
****


Beiträge: 842
Registriert seit: Feb 2008

2009 - 2011
2006
kA

70180
Deutschland
Was tun im Case False?
Die Knöpfe müssen nach dem Betätigen nicht wieder in den False-Zustand zurückgehen. Daher ist es durchaus möglich, dass beide schon bei Beginn der Iteration true sind.

Gruß Julius
Empfehlungen: expressionflow, LavaG , mooregoodideas, OpenG, JKI Blog
Tipp
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
28.09.2009, 09:43
Beitrag #18

Lucki Offline
Tech.Exp.2.Klasse
LVF-Team

Beiträge: 7.699
Registriert seit: Mar 2006

LV 2016-18 prof.
1995
DE

01108
Deutschland
Was tun im Case False?
' schrieb:Die Knöpfe müssen nach dem Betätigen nicht wieder in den False-Zustand zurückgehen. Daher ist es durchaus möglich, dass beide schon bei Beginn der Iteration true sind.
Ja, Du beziehst Dich jetzt auf mein erstes Argument, welches ich selbst als schwach und überflüssig bezeichnet habe, aber zu faul war es zu löschen. Hätte ich es doch getanMellow
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
28.09.2009, 09:45
Beitrag #19

abrissbirne Offline
LVF-Stammgast
***


Beiträge: 480
Registriert seit: Aug 2007

LV2009, LV2010
2007
EN

66123
Deutschland
Was tun im Case False?
' schrieb:Und wer ganz genau hinschaut, der wird feststellen, das es selbst bei gleichzeitiger Ausfühung nicht kritisch werden kann. Zwar wird in beiden Cases die gleiche lokale Variable verwendet, aber: In der ersten Casestruktur werden nur die ersten beiden Element des Array beschrieben, in der zweiten Strukture nur die letzten beiden. Der optische erste Eindruck, daß es da bei gleichzeitiger Auführung Wettlaufprobleme gibt, erweist sich also bei geauerem Hinsehen als falsch.
Das zweite Argument ist mir erst jetzt eingefallen und macht das erste, schwächere Argument überflüssig. Ich lasse es aber so stehen.
Und da genau liegt doch der Fehler wenn ich es richtig verstanden habe. Wenn beides gleich abgearbeitet wird, dann stimmen auf jeden Fall 2 Werte nicht.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
28.09.2009, 09:50
Beitrag #20

IchSelbst Offline
LVF-Guru
*****


Beiträge: 3.689
Registriert seit: Feb 2005

11, 14, 15, 17, 18
-
DE

97437
Deutschland
Was tun im Case False?
' schrieb:Die Bedenken sind in diesem Beispiel rein akkademisch.
Top1

Zitat:In der ersten Casestruktur werden nur die ersten beiden Element des Array beschrieben, in der zweiten Strukture nur die letzten beiden. Der optische erste Eindruck, daß es da bei gleichzeitiger Auführung Wettlaufprobleme gibt, erweist sich also bei geauerem Hinsehen als falsch.
Bist du dir da sicher?
Das mit dem Index würde stimmen, wenn das Array-Bearbeitungselement direkt in den Speicher des Array-Elementes schreibt. Meinst du das ist so? Ich bin der Meinung, es wird in den Datenfluß geschrieben und der wird dann in das Array-Element und in alle (<=!) Lokalen Variablen geschrieben respektive kopiert!

Jeder, der zur wahren Erkenntnis hindurchdringen will, muss den Berg Schwierigkeit alleine erklimmen (Helen Keller).
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren to top
Antwort schreiben 


Möglicherweise verwandte Themen...
Themen Verfasser Antworten Views Letzter Beitrag
  Case-Struktur: Angegebener Case nicht vorhanden braendy 10 6.791 02.02.2021 15:05
Letzter Beitrag: Lucki
  Case Struktur 2 Schleifendurchläufe verzögert True setzen aber sofort auf False bachatero18 4 5.680 07.11.2020 14:08
Letzter Beitrag: Martin.Henz
  Event Case Ignoriert Tastendruck wenn in Gegenwart eines anderen "Leeren" Event Case Ksanto 8 8.221 23.10.2017 09:08
Letzter Beitrag: Ksanto
  Case-Struktur führt True und False aus (Ereignisschleife) HIMI 11 9.008 24.08.2017 13:04
Letzter Beitrag: HIMI
  Indicator - True or False filou24 4 4.913 17.11.2014 19:52
Letzter Beitrag: Trinitatis
  Case Strukture mit 3 Case lola2014 13 11.325 23.10.2014 14:17
Letzter Beitrag: GerdW

Gehe zu: