CSDN话题挑战赛第2期
参赛话题:学习笔记
循环结构
While循环
在LabVIEW中如何创建一个While循环呢?方法很简单。如图1所示,首先,在“函数”选板→“编程”→“结构”子选板上,选中While循环,将它拖曳到程序框图面板上,并按下鼠标左键且拖曳虚线框至合适的大小,如此,就创建了一个While循环。
创建好的While循环如图2所示。其中,灰色边框里的空白区域用于放置循环体内的程序代码;灰线框内左下角的i是重复端子,可输出已经执行循环的次数;灰线框内右下角的是条件端子,用于控制是否要退出循环。可见,While循环的循环次数是不确定的,具体要由右下角的条件端子的当前控制条件来判定。
LabVIEW中,While循环会先执行一遍循环体代码,然后再由循环条件端子判断是否要继续下一次循环。所以,LabVIEW中的While循环功能,就相当于C语言中的Do While循环。
循环结构分为for循环结构和while循环结构两种,分别与C语言中的“for”语句和“do…while”语句类似,都可用来控制特定的程序块自动重复执行若干次。这两种循环结构如图
for循环有规定的循环次数,可连接至一个整数以指定循环次数,循环执行所指定次数后才可退出循环。for循环具有条件接线端的特性,右键单击for循环的边框,从菜单中选择“条件接线端”,就可为for循循环增添一个条件接线端,当满足该逻辑条件时或者所有循环次数执行完毕时,都可退出循环,这就为中途跳出for循环提供了方便。如果与C语言类比,这一特性的功能相当于“break”语句。
while循环没有规定的循环次数,却总是含有一个条件接线端。while循环运行时,先重复执行循环中的内容,直到条件接线端满足所规定的逻辑条件后才退出循环。可见,while循环总是至少执行一次,与C语言中的“do…while”语句类似,而不是“while”语句。
for循环和while循环中的条件接线端分为逻辑相反的两种:“真(T)时停止”和“真(T)时继续”,可在条件接线端的鼠标右键菜单中切换。
移位寄存器是循环结构中的一个重要概念,用来存储和传递上一步或多步循环的数据。在循环结构边框上的鼠标右键菜单中选择“添加移位寄存器”,之后就会在循环结构左、右边框上分别出现左端子(三角号朝下)和右端子(三角号朝上),每一步循环结束后右端子便将接收到的数据传给左端子,下一步循环时左端子给出的数据即是上一步循环中右端子接收的数据。
左端子的初始值可以在循环外部连接,初始值的数据类型决定了移位寄存器中所存储数据的类型,不仅可以连接至数值型标量,也可以连接至数值型数组,或者其他数据类型的标量和数组。
如需实现多步移位寄存,可以在移位寄存器的鼠标右键菜单中选择“添加元素”项来添加左端子。右端子在上一循环中接收的值在当前循环中将寄存到最上面的左端子,多个左端子在上一循环中的历史值则按此规律依次向下面相邻的左端子寄存。
循环结构内外部的数据交换可通过两种方式进行:自动索引和直接通道。当循环结构内外部的数据通过连线进行交换时,必会在循环边框中产生一个形如或的节点,分别对应于自动索引和直接通道,这两种方式可以通过该节点的鼠标右键菜单中“启用索引”项和“禁用索引”项进行切换。
从数据内外部流向来分类,可以分为两类情况。
(1)数据从外部进入循环结构时
使用自动索引可以使每一步循环中读取其中一个低一维的数据,每次读进的数据比循环外的输入数据类型维数少一维,输入数据若是标量则始终读入该标量值。输入数据若是数组,则从前至后依次读取各个元素,对于for循环结构,这种情况下可以不用指定循环次数,循环次数将被自动设为数组大小。
使用直接通道时,表示整个数据直接进入循环,其值和维数不变。
(2)数据从内部流出循环结构时
使用自动索引可以使每次单步循环中得到的数据自动排列为一个数组,最后得到的数组比循环中数据类型的维数多一维。
使用直接通道时,表示数据直接从循环内部传递至外部,其值和维数都不变。
因此,本例中的一维常量数组按照不同方式从循环外部进入内部,又从内部输出到外部之后,所得结果可能有标量、一维数组、二维数组三种不同结果。