小白自学习Labview笔记(三)-------循环结构
前言
Labview中的循环结构有两种,分别是For循环,跟While循环,下面就分别介绍着两种循环。
一、While循环
Labview中的While循环与文本语言中的Do…While循环类似。While循环位于结构选择板,选择后在程序框图中拖拽出所需要的While循环区域。程序运行后选中区域中的模块将重复运行直到While循环结束。
- 带方框的字母i,为循环计数接线端。其值为While循环当前执行的次数。
- 带方框的红色圆点,为While循环的条件结束端子。可以右击选择TRUE时停止或TRUE时继续。
- While循环执行后,循环体至少被执行一次。
- 如下图将停止条件放在While循环外面,由于输入控件只在循环开始时被读取一次,因此控件值改变也不能停止While循环。会产生无限循环,编程时应该避免这种情况发生。
- 编程练习
- 产生0-1之间的随机数,直到值大于0.9,循环停止,记录循环次数。
其中停止按钮防止出现死循环
运行后数值框会显示出运行次数。
优化代码
上图在程序运行前读取常量0.9,程序运行完成后将循环次数写入数值显示框。不需要每次循环都读取与写入,优化了执行效率。 - 结构隧道
这种将循环内的数据连接到循环外的结构,称为结构隧道(图中循环连接处出现小蓝色方形区域)。While循环的结构隧道输出最后一次运行的结果值。
- While循环进行错误检查
- 连接函数错误输出簇到While循环的结束端子或带结束端子的For循环,可以在程序发生错误时跳出循环。
- 同时使用错误簇跟停止按钮停止循环,是用于停止出错循环的推荐方式。
二、For循环
Labview中的For循环能按照设定次数循环内部程序。
- 带方框N表示给定循环次数,N的数值类型为I32,如果输入其它类型系统强制转换为I32类型,这与其它地方的类型转换有所区别。
- 带方框i表示当前循环次数,与While循环相同。
- 右键点击For循环,可以为For循环添加条件结束端子。其效果与While循环中的条件结束端子相同。
- For循环的结构隧道
For循环的结构隧道输出结果与While循环不同,如下图,用For循环完成While循环的练习时发现程序报错,结构隧道的输出不能连接到值类型上。
- 因为For循环的结构隧道输出的是一个长度为N的数组。
三、For寻循环与While循环比较
For循环 | While循环 |
---|---|
未添加条件接线端,按照指定的次数执行 | 仅当条件接线端接收到符合条件的值时循环结束 |
可执行0次 | 最少执行一次 |
隧道自动输出一个数组 | 隧道自动输出最后一次结果值 |
四、移位寄存器
-
移位寄存器相当于文本编程语言中的静态变量。
-
移位寄存器可用于将上次循环的结果传递到下次循环进行运算。
-
移位寄存器位于循环两侧,接线端为向上和向下实心三角形,如下图(右击循环边框–>添加移位寄存器)。
-
循环可以添加多对移位寄存器,进行多个值的传递。
-
初始化移位寄存器
如下图,上面循环对移位寄存器进行过初始化,下面的循环未对寄存器进行初始化。运行第一次结果都为5。但是第二次运行后上面的数值依然为5,下面的结果为10。这是因为第二个循环没有对移位寄存器进行初始化,所以运行结果会从上次运行的结果5开始继续往下运行,所以运行完结果变为10。
- 在没有关闭VI前,未初始化的移位寄存器会保留上一次的循环值。
- 练习 :计算1+2+3+… …+98+99+100的值。
程序如下图,结果为5050(相信学过编程的人都知道这个结果)。
- 层叠移位寄存器
- 在移位寄存器右边接线端右击—>添加元素,可以创建层叠移位寄存器。
- 层叠移位寄存器可以保存前两次运行的结果,其中最近一次循环保存在上接线端子,上上次结果保存在下面端子。
五、总结
循环结构内容仔细研究下来还是挺多,还有一部分比较少用到的内容我没有介绍,希望感兴趣的同学自行了解。