第5章 控制程序运行的结构课件.ppt
唐山学院测控中心 (C) 2008第第5章章 控制程序运行的结构控制程序运行的结构 l For循环 lWhile循环 l定时循环 l条件结构l顺序结构l事件结构 l禁用结构 l公式节点 l控制前面板对象的属性 第第5章章 控制程序运行的结构控制程序运行的结构l结构是一种程序流程控制节点,它们在程序框图中的外形一般是一个大小可以缩放的边框,当它与其它节点的连线有数据传递过来时,边框内的一段代码或者反复执行、或者有条件执行、或者按照一定顺序执行。l结构内的一段代码叫做子程序框图;结构边框上数据输入输出的接线端叫隧道。5-1 For循环循环l5-1-1 For循环的建立5-1-2 For循环的时间控制与数据传递循环的时间控制与数据传递5-1-3 For循环对数组的自动索引循环对数组的自动索引自动索引是指使循环边框外面的数组元素逐个依次进入循环边框内,或使循环边框内的数据累加成一个数组输出循环边框外面的功能。 5-1-4 移位寄存器和反馈节点移位寄存器和反馈节点l1. 移位寄存器u (1) 建立移位寄存器 移位寄存器从一个循环向下一个循环传递数据。For循环和While循环都可以使用移位寄存器。创建移位寄存器的方法是在循环的左边框或右边框上弹出快捷菜单,然后选择“添加移位寄存器”。5-1-4 移位寄存器和反馈节点移位寄存器和反馈节点移位寄存器移位寄存器u (2) 移位寄存器传递数据的方法 程序在循环开始前为移位寄存器左边3个接线端都赋初始值5 。 循环开始执行后循环数i不断送入右边框的移位寄存器接线端,并在每次循环结束时转移到左侧移位寄存器接线端。 到下一次循环时这个循环数就出现在移位寄存器左边最上边的接线端中。而在每次循环中,移位寄存器左边各接线端的值都向下移动一位。 到循环全部结束时,右侧接线端的数值转移到左侧接线端的同时,输出到循环边框外。5-1-4 移位寄存器和反馈节点移位寄存器和反馈节点移位寄存器移位寄存器u(2) 移位寄存器传递数据的方法用移位寄存器求最大值 u(3) 使用非初始化的移位寄存器 5-1-4 移位寄存器和反馈节点移位寄存器和反馈节点l2.反馈节点u自动创建反馈节 当For循环或While循环边框比较大时,使用移位寄存器会造成过长的连线,因此LabVIEW提供了反馈节点。在For循环或While循环中,当我们把一个节点的输出连接到它的输入时,连线中会自动插入一个反馈节点,同时自动创建了一个初始化接线端。 5-1-4 移位寄存器和反馈节点移位寄存器和反馈节点l2.反馈节点u反馈节点的数据传递 5-2 While循环循环lWhile循环控制程序反复执行一段代码,直到某个条件发生。 l建立While循环的方法与For循环是一样的。lWhile 循环有两个固定的接线端。“循环计数“是一个输出接线端,它输出循环当前执行的次数。循环数是从0开始计数的。“循环条件”是一个布尔量输入接线端。程序在每次循环结束时检查条件接线端。因此,While循环总是至少执行一次。5-2 While循环循环lWhile循环终止条件l死循环5-3 定时循环定时循环l如果需要对循环的执行时间进行更精确的控制和增加更多控制功能,可以使用定时循环。 5-4 条件结构条件结构 条件结构包含有两个以上子程序框图,每个子程序框图中的一段程序代码对应一个条件分支,程序运行时选择其中的一段执行。l5-4-1 条件结构的建立5-4-1 条件结构的建立条件结构的建立 当条件结构的选择器接线端连接一个组合框时,条件选择器标签应该是组合框项的值,而不是它的标签。5-4-2 条件结构的设置条件结构的设置 l1. 默认选项的设置 在LabVIEW中使用条件结构,必须设置一个默认子程序框图处理超出选项范围的情况,除非能够为每个可能的选择值都设置一个子程序框图。l2. 子程序框图的设置 用编辑文本工具修改选择器标签中的选择器值可以设置子程序框图与选项的对应关系。 l3. 隧道的要求 向条件结构边框内输入数据时,各个子程序框图连接或不连接这个数据的隧道都可以;但是从条件结构边框向外输出数据时,各个子程序框图都必须为这个隧道连接数据。 5-4-3 条件结构应用示例条件结构应用示例l1.使While循环先检查条件接线端再执行代码5-4-3 条件结构应用示例条件结构应用示例l2. 按一定条件分离数组元素5-4-3 条件结构应用示例条件结构应用示例l3.用条件结构处理错误 LabVIEW的很多VI输出一个“错误输出”参数,指出这个VI执行中是否发生错误,通知后续程序进行必要的处理。 5-5 顺序结构顺序结构 在数据流程序中,只要一个节点所有需要输入的数据全部到达就开始执行。如果有时需要某个节点先于其它节点执行,可以用顺序结构作为控制节点执行次序的一种方法。l5-5-1 顺序结构的建立5-5-2 顺序结构中数据输入输出与传递顺序结构中数据输入输出与传递 在各个子程序框图之间传递数据,平铺顺序结构可以直接连线,但是层叠顺序结构要借助于顺序局部变量。5-5-2 顺序结构中数据输入输出与传递顺序结构中数据输入输出与传递 建立顺序局部变量 5-5-3 顺序结构应用示例顺序结构应用示例使用平铺顺序结构计时 5-5-3 顺序结构应用示例顺序结构应用示例使用层叠顺序结构计时 5-5-4 顺序结构的缺陷与人为的数据依从关系顺序结构的缺陷与人为的数据依从关系 NI公司在LabVIEW中提供了顺序结构,却不提倡过多使用它。原因主要有两点。l顺序结构妨碍了作为LabVIEW 优点之一的程序并行运行机制。l顺序结构掩盖了部分程序代码,中断了作为LabVIEW 主要特点的数据流形式。这一点已经通过使用平铺的顺序结构解决。5-6 事件结构事件结构 l5-6-1事件驱动的概念事件即发生了某种事情的通知。LabVIEW支持两种来源的事件:(1)用户界面事件,例如,点击鼠标产生的鼠标事件、按下键盘产生的键盘事件等;(2)编程生成事件,这种事件用来承载用户定义的数据与程序其它部分通讯。本书主要介绍用户界面事件。5-6-2 事件结构的建立事件结构的建立 事件结构的图标外形与条件结构极其相似,但是事件结构可以只有一个子程序框图,这一个子程序框图可以设置为响应多个事件;也可以建立多个子程序框图,设置为分别响应各自的事件。 5-6-3 事件结构的设置事件结构的设置应用事件编程5-6-3 事件结构的设置事件结构的设置编辑事件对话框 5-6-4 事件结构的应用事件结构的应用 不使用事件检查前面板控件 不使用事件检查前面板控件 5-7 禁用结构禁用结构 禁用结构有程序框图禁用结构和条件禁用结构,程序框图禁用结构可用来使程序框图上的具体代码失效,条件禁用结构可用来定义程序框图上各部分代码执行的条件。5-8 公式节点公式节点 l5-8-1公式节点的用途图形编程的数学计算 公式节点的数学计算5-8 公式节点公式节点l5-8-2 公式节点的建立 在“编程结构”函数子选板和“数学脚本与公式”函数子选板都可以找到公式节点。在程序框图中放置公式节点的方法以及公式节点边框大小的调整与其它结构是一样的。l5-8-3 公式节点的语法公式节点中的代码看上去就像一小段C语言的程序。公式节点中也可以声明变量,可以使用C语言的语法,可以加语句注释,每个公式语句也是以分号结束。公式节点的变量可以与输入输出接线端连线无关,但是变量不能有单位。5-9 控制前面板对象的属性控制前面板对象的属性 面板对象属性是指前面板上控件的外观和功能特征,例如显示的颜色、可见性、闪烁、位置、刻度等。 5-9-1 控件属性节点创建与设置控件属性节点创建与设置5-9-2 控件属性节点应用示例控件属性节点应用示例l1.前面板对象的常用属性下图用到的属性有: (1) 可见性, (2) 闪烁, (3)可用, (4) 填充颜色 , (5) 键盘焦点 , (6)前面板对象边界5-9-2 控件属性节点应用示例控件属性节点应用示例l2. 实现动画效果 练习与思考练习与思考u5.1 用For循环产生4行100列的二维数组,数组元素如下:1,2,3100100,99,9816,7,8105105,104,1036 从这个数组中提取出2行50列的二维数组,数组元素如下:50,49,48156,57,58105 将这两个数组用数组显示控件显示在前面板上。练习与思考练习与思考u5.2 产生100个随机数,求其最小值和平均值。u5.3 程序开始运行后要求用户输入一个口令,口令正确时滑钮显示件显示一个0100的随机数,否则程序立即停止。u5.4 编写一个程序,在前面板上放3个按钮,当按下某个按钮时,输出这个按钮的编号。u5.5 编写计算以下等式的程序:y1=x3-x2+5y2=m*x+bx的范围是010。y1和y2用数组显示件显示在前面板上。练习与思考练习与思考u5.6 编程求Josephus问题:m个小孩围成一圈,从第一个小孩开始顺时针方向每数到第n个小孩时这个小孩就离开,最后剩下的一个小孩是胜利者。求第几个小孩是胜利者。u5.7 猴子吃桃子,每天吃全部桃子的一半零一个,到第十天剩一个桃子,编程求第一天猴子摘了多少个桃子。u5.8 编程求10000以内的所有“水仙花数”。“水仙花数”指一个3位数,它的各位数字立方和等于它本身。例如371=33+73+13。u5.9 编程求1000内的“完数”。“完数”指一个数恰好等于它本身的因子之和。例如28=14+7+4+2+1。练习与思考练习与思考u5.10产生一个方波序列的数据,在程序中数出方波中的上升缘个数练习与思考练习与思考u5.11生成一个随机数组,设定阈值,将输入数组中绝对值大于设定阈值的数据剔除。(下图) u5.12 前面板上放一个压力表,指针读数在0255之间随机变化,指针颜色按读数发生相应的变化。