程序执行过程中,有时需要重复执行一段代码,达到某一特定条件后退出循环执行,继续执行后续代码。
labview中常用的2中常用的循环结构:While循环和for循环。
循环结构
While循环同C语言中while结构,即条件为1则执行循环内代码,while循环执行时会先执行程序代码在判断条件。循环结如下图。While循环有2中结束条件,右键条件端会出现对应菜单,“为真继续”即条件为真值时继续执行while循环,“为真停止”即条件为真值时退出while循环。
For循环同C语言中for结构,根据事先设置循环次数来执行,循环结如下图。For循环中右键边框会弹出菜单,可以为for循环添加条件接线端,条件接线端的方式有2种与while循环条件端一致。
隧道
While与For循环传出数据皆通过隧道传出,如图中3标识。值得一提的是数据只有在循环结束时才能传出。特别需要注意的地方就是当循环开始时,循环外的数据就无法进入循环内了。如下图中循环启动后,哪个按钮可以让循环停止呢?停止按钮1 无法停止循环,因为当循环开始之后,该控键的值就无法再传入循环了。停止按钮2 是可以停止循环的。
索引
索引的两种状态(启用,禁用)决定了数组数据通过隧道输入输出循环的方式。可以通过右键选择索引的状态:
如果启用索引,那么数组数据会根据当前数据的索引进行输入或者输出;如果选择禁用索引,数组数据会一次性的输入或者输出。
,当二维数组通过索引的方式传入循环时,在循环内部将得到该二维数组的一个元素;
当二维数组通过索引的方式传入循环时,在循环内部将得到该二维数组;
For循环索引输入数组大小不一定相等,那么到底循环次数取决于谁呢,如下图
输入数组分别为长度5、11,for循环计数输入为10,for循环带有条件接线端,循环停止条件为2个数的和大于的于9.如果自己编辑程序运行则输出结果为3,为什么呢?我们看这两个数组相加和是什么,1,8,7,10,16。可以看出大于9的位置是出现在第三个元素位置即7+3=10>=9。
由此我们可以得出 for循环的次数由最小的那个决定。
While 循环默认的隧道是禁用索引;For 循环默认的隧道是启用索引。
索引输出方式如下,其中2012早期版本只包含中间2种输出方式,2012新版新添连接索引和条件索引,为以后的编程提供了极大的便利。
移位寄存器
使用循环结构编程时,可以使用移位寄存器来访问上一次循环的值。移位寄存器以接线端成对出现,分别位于循环两侧的边框上:
移位寄存器可以传递任何数据类型,并且于其连接的第一个对象的数据类型保持一致。
在循环中如果需要访问此前的多次循环的数据,就需要使用层叠移位寄存器。可以通过右键添加层叠位移寄存器。如图表示产生一个10个元素的数组,数组元素从第3 项开始,每一项都等于前两项之和。2 ,2,4,6,10 。 。 。
一般在使用移位寄存器之前都会进行初始化,如上图2个移位寄存器初始化为0,2。如果不初始化,该程序运行的第一次移位寄存器会使数据类型的默认值;关闭VI 前,如果再次运行,移位寄存器会使用上一次储存的值。
6