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)。
| 归档时间: |
|
| 查看次数: |
2457 次 |
| 最近记录: |