为什么我的 LabView while 循环执行次数过多?

Set*_*eth 5 labview while-loop

几周后我将加入一个(当前)使用 LabView 进行开发的项目。为了让自己在这一切发生之前至少有所熟悉,我一直在该软件的试用版中创建一些简单的项目。有人向我提出挑战,要求我编写一个简单的程序,可以在不使用除法运算符的情况下执行简单的除法。

我已经成功编写了程序,但我的主while循环似乎运行了太多次。这是我的程序:

节目图像

用户输入被除数和除数,程序将不断地从被除数中减去除数,直到被除数变为 <= 0,此时它应该中断。程序成功运行,但当循环最终停止时,被除数始终等于 x 小于 0(其中 x 是除数的任意数字)。在调试应用程序时,我发现了问题,当最后一次发生循环比较时,被除数将等于 0 并计算为“假”,但是循环内的代码在循环中断之前最后一次执行。这是我对 do-while 循环的期望,但不是简单的 while。

只是为了向自己证明这不是一个(希望如此)明显的逻辑错误,我用 python 编写了(我认为是)一个等效的程序,它完全符合我的预期。

我花了很长时间在谷歌上搜索,盯着它,我什至在纸上做了它,但我不明白为什么它没有达到我的预期。是什么赋予了?

小智 3

LabVIEW根据数据流原则执行代码,这意味着循环不能停止,直到它执行完其中的所有代码。这是确认上述内容的NI 文档(请参阅第一个流程图)。而且,减法和比较是同时发生的。

您拥有的代码很大程度上相当于(除了与 0 的比较发生在线路中的临时值上):

dividend = YYY
divisor = XXX

dividend = dividend - divisor
while dividend > 0:
    dividend = dividend - divisor 
Run Code Online (Sandbox Code Playgroud)

如果您想真正熟悉 LabVIEW,我强烈建议您避免使用局部变量。很多时候(包括这一次)它们都很糟糕。这样做:

在此输入图像描述

这是一个片段,因此如果您从资源管理器中拖动此文件并将其放到 BD 上,它将显示为一段代码 (LV2014)。