文档库 最新最全的文档下载
当前位置:文档库 › 第2章 LabVIEW 程序结构

第2章 LabVIEW 程序结构

第2章 LabVIEW 程序结构
第2章 LabVIEW 程序结构

第二章程序结构

2.1循环结构

2.1.1While 循环

While 循环可以反复执行循环体的程序,直至到达某个边界

条件。它类似于普通编程语言中的 Do 循环和 Repeat-Until 循

环。While 循环的框图是一个大小可变的方框,用于执行框中的

程序,直到条件端子接收到的布尔值为 FALSE。

●该循环有如下特点:

●计数从0开始(i=0)。

●先执行循环体,而后i+1,如果循环只执行一次,那么

循环输出值i=0。

●循环至少要运行一次。

条件端子

循环变量

图2-1While 循环示意图

练习2-1使用While循环和图表

目的:用 While 循环和图表获得数据,并实时显示。

创建一个可以产生并在图表中显示随机数的VI。前面板有

一个控制旋钮可在0到10秒之间调节循环时间,还有一个开关

可以中止VI的运行。学习怎样改变开关的动作属性,以便不用

每次运行VI时都要打开开关。操作步骤如下:

前面板

图2-2练习2-1的前面板

1.选择FileoNew,打开一个新的前面板。

2.选择ControlsoBoolean,在前面板中放置一个开关。

设置开关的标签为控制开关。

3.使用标签工具创建 ON 和 OFF 的标签,放置于开关旁。

4.选中ControlsoGraph,在前面板中放置一个波形图(是chart,而不是graph)。设置它的标签为随机信号。这个图表用于实时显示随机数。

5.把图表的纵坐标改为0.0 到 1.0。方法是用标签工具把最大值从10.0改为1.0。

6.选择ControlsoNumeric,在前面板中放置一个旋钮。设置旋钮的标签为循环延时。这个旋钮用于控制While 循环的循环时间。

流程图

7.开流程图,按照下图创建流程图。

图2-2练习2-1的流程图

a.从 FunctionsoStructures 中选择 While 循环,把它放置在流程图中。将其拖至适当大小,将相关对象移到循环圈内。

b.从Functionso Numeri c中选择随机数(0-1)功能函数放到循环内。

c.在循环中设置Wait Until Next ms Multiple函数(FunctionsoTime & Dialog),该函数的时间单位是毫秒,按目前面板旋钮的标度,可将每次执行时间延迟0到10毫秒。

d.照上面所示的流程图连线,把随机数功能函数和随机信号图表输入端子连接起来,并把启动开关和While 循环的条件端子连接。

8.返回前面板,调用操作工具后单击垂直开关将它打开。

9.把该 VI 保存为 LabVIEW\Activity目录中的Random Signal.vi。

10.执行该 VI。While循环的执行次数是不确定的,只要设置的条件为真,循环程序就会持续运行。在这个例子中,只要开关打开(TRUE),框图程序就会一直产生随机数,并将其在图表中显示。

11.单击垂直开关,中止该VI。关闭开关这个动作会给循环条件端子发送一个FALSE值,从而中止循环。

12.用鼠标右键单击图表,选择Data

OperationsoClear Char t,清除显示缓存,重新设置图表。

练习2-1结束

附注与说明

布尔开关的机械动作:

布尔开关有6种机械动作属性可供选择。在前面板上用鼠标右键单击开关,在快捷菜单中选择Mechanical Action就可以看到这些可选的动作。LabVIEW还提供了一个范例示范这些动作,它是位于Examples\General\Controls\booleans.llb的Mechanical Action of Booleans.vi。

2.1.2移位寄存器(Shift Register)

移位寄存器可以将数据从一个循环周期传递到另

外一个周期。在程序设计中,经常要用到它.创建一

个移位寄存器的方法是,用鼠标右键单击循环的左边

或者右边,在快捷菜单中选择Add Shift Register。如

右图所示。

移位寄存器在流程图

上用在循环边框上相应的

一对端子来表示。右边的

端子中存储了一个周期完

成后的数据,这些数据在

这个周期完成之后将被转

移到左边的端子,赋给下一个周期。移位寄存器可以转移各种类

型的数据--数值、布尔数、数组、字符串等等。它会自动适应

与它连接的第一个对象的数据类型。下图表示了它的工作过程.

图2-3Shift Register的工作过程

可以令移位寄存器记忆前面的多个周期的数值。这个功能对

于计算数据均值非常有用。还可以创建其他的端子访问先前的周

期的数据,方法是用鼠标右键单击左边或者右边的端子,在快捷

菜单中选择Add Element 。例如,如果某个移位寄存器左边的端

口含有三个元素,那么就可以访问前三个周期的数据。

练习 2-2 使用移位寄存器

目的:创建一个可以在图表中显示运行平均数的VI 。

前面板

1.打开一个新的前面板,按照下图所示创建对象。

2.把波形图表的坐标范围改为0.0到2.0。

3.在添加竖直坐标之后,用鼠标右键单击它,在快捷菜单中选择Mechanical

Action?Latch When Pressed ,再选择Operate?Make Current Values Default ,把ON 状态设置为默认状态。

图2-4 练习2-2的前面板

流程图

4.按下图创建流程图。

图2-4 练习2-2的流程图

5.在流程图中添加 While 循环(Functions?Structures ),创建移位寄存器。

a. 用鼠标右键单击While 循环的左边或者右边,在快捷菜单中选择Add Shift Register 。

b. 用鼠标右键单击寄存器的左端子,在快捷菜单中选择Add Element,添加一个寄存

器。用同样的方法创建第三个元素。

6.Random Number (0–1)函数(Functions?Numeric)——产生0到1之间的某个随机数。7.Compound Arithmetic 函数(Functions?Numeric)——在本练习中,它将返回两个周期产生的随机数的和。如果要加入其他的输入,只需用右键单击某个输入,从快捷菜单中选择Add Input。

8.除法函数(Functions?Numeric)——在本练习中,它用于返回最近四个随机数的平均值。

9.数值常数(Functions?Numeric)——在While循环的每个周期,Random Number (0–1)函数将产生一个随机数。VI就将把这个数加入到存储在寄存器中的最近三个数值中。

Random Number (0–1)再将结果除以4,就能得到这些数的平均值(当前数加上以前的三个数)。然后再将这个平均值显示在波形图中。

10.Wait Until Next ms Multiple函数(Functions?Time & Dialog)——它将确保循环的每个周期不会比毫秒输入快。在本练习中,毫秒输入的值是500毫秒。如果用鼠标右键单击图标,从快捷菜单中选择Visible?Label,就可以看到Wait Until Next ms Multiple 的标签。

11.用鼠标右键单击Wait Until Next ms Multiple 功能函数的输入端子,在快捷菜单中选择Create Constant。出现一个数值常数,并自动与功能函数连接。

12.将Constant设置为500。这样连接到函数的数值常数设置了500毫秒的等待时间。

因此循环每半秒执行一次。注意,VI用一个随机数作为移位寄存器的初始值。如果没有设置移位寄存器端子的初始值,它就含有一个默认的数值,或者上次运行结束时的数值,因此开始得到的平均数没有任何意义。

13.执行该VI,观察过程。

14.把该VI 保存为LabVIEW\Activity目录下的Random Average.vi。

练习2-2结束。

附注:移位寄存器的初值:

上面的练习中对移位寄存器设置了初值0.5。如果不设这个初值,默认的初值是0。在这个例子中,一开始的计算结果是不对的,只有到循环完3次后移位寄存器中的过去值才填满,即第4次循环执行后可以得到正确的结果。

2.1.3For循环

For循环用于将某段程序执行指定次数。和While 循环一样,

它不会立刻出现在流程图中,而是出现一个小的图标,而后您可

以修改它的大小和位置。具体的方法是,先单击所有端子的左上

方,然后按下鼠标,拖曳出一个包含所有端子的矩形。释放鼠标

时就创建了一个指定大小和位置的For循环。

For循环将把它的框图中的程序执行指定的次数,For循环

具有下面这两个端子:

N: 计数端子(输入端子)——用于指定循环执行的次数。

I: 周期端子(输出端子)——含有循环已经执行的次数。

上图显示了一可以产生100个随机数并将数据显示在一个

图表上的For循环。在该例中,i 的初值是0,终值是99。

练习 2-3 使用For循环

目的:用For循环和移位寄存器计算一组随机数的最大值。

1.打开一个新的前面板,按照下图创建对象。

a.将一个数字显示对象放在前面板,设置它的标签为“最

大值”。

b.将一个波形图表放在前面板,设置它的标签为“随机

数”。将图表的纵坐标范围改为0.0到1.0。

c.在图表的快捷菜单中选择V isible ItemsoScrollbar

和Digital Display,并隐藏Plot Legend。

d.用移位工具修改滚动栏的大小。

图2-5 练习2-3的面板和流程图

2.按照上图画流程图。

3.在流程图中放置一个For循环

(FunctionsoStructures)。

4.在For循环的边框处单击鼠标右键,在快捷菜单中选择

Add Shift Register。

5.将下列对象添加到流程图。

a Random Number (0–1)函数(FunctionsoNumeric )—

—产生0到1之间的某个随机数。

b 数值常数(FunctionsoNumeri

c )——在这个练习中需

要将移位寄存器的初始值设成0。

c Max&Min 函数(FunctionsoComparison )——输入两个

数值,再将它们的最大值输出到右上角,最小值输出到右下角。

这里只需要最大值,只用连接最大值输出。

d 数值常数(FunctionsoNumeric )——For 循环需要知

道需要执行的次数。本练习中是100次。

6.按照上图连接各个端子。

7.运行该VI 。

8.将该VI 保存为LabVIEW\Activity 目录下的Calculate

Max.vi 。

练习 2-3 结束。

2.2 分支结构:Case

Case 结构含有两个或者更多的子程序(Case ),执行那一个

取决于与选择端子或者选择对象的外部接口相连接的某个整数、

布尔数、字符串或者标识的值。必须选择一个默认的Case 以处

理超出范围的数值,或者直接列出所有可能的输入数值。Case

结构见下图,各个子程序占有各自的流程框,在其上沿中央有相

应的子程序标识:

Ture 、False 或1、2、3…。按钮用来改变

当前显示的子程序(各子程序是重叠放在屏幕同一位置上的)。

练习 2-4 使用 Case 结构

目的:创建一个VI 以检查一个数值是否为正数。如果它是正的,VI 就计算它的平方根,反之则显示出错。

前面板

1. 打开一个新的前面板,并按照下图所示创建对象。

控制对象用于输入数值,显示对象用于显示该数值的平方根。

流程图

2.照下图创建流程图。

图2-6练习2-4的面板和流程图

3.从FunctionsoStructures中选择一个 Case结构,并放置在在流程图中。Case 结构是一个可以改变大小的方框。先来做Ture的情况,照流程图上半部分构造。

a Greater Or Equal To 0? 函数(FunctionsoComparison)——如果输入数值大于或者等于0就会返回一个TRUE值。

b Square Root 函数(FunctionsoNumeric)——返回输入数值的平方根。

c连好线

d点击Case框的选择按钮,转入False情况编程

e数值常数(FunctionsoNumeric)——这里用于显示错误的代数值-999.00。

f One Button Dialog函数(FunctionsoTime & Dialog)——在这里它用于显示一个对话框,内容是Error...。

g字符串常数(FunctionsoStrin g)——用Edit Text Tools在对话框中输入字符串。

h该VI在TRUE或者FALSE情况下都会执行。如果输入的数值大于等于0,VI会执行TRUE Case,返回该数的平方根,否则将会输出-999.00,并显示一个对话框,内容为Error...。

4.返回前面板,运行该VI。修改标签为Number的数字式控制对象的数值,分别尝试一个正数和负数。注意,当把数字式控制对象的值改为负数时,LabVIEW会显示Case结构的FALSE

A D

C

B

Case 中设置的出错信息。

5. 保存该 VI 到LabVIEW\Activity 目录中的Square

Root.vi 。

VI 的算法

本练习中的流程图功能相当于代码式编程语言中的下列伪

代码:

if (Number >= 0) then

Square Root Value = SQRT(Number)

else

Square Root Value = -999.00

Display Message "Error.. "

end if

练习 2-4 结束。

2.3 顺序结构和公式节点

2.3.1 顺序结构(Sequence Structure )

在代码式的传统编程语言中,默认的情况是,程序语句按照排列顺序执行,但LabVIEW 中不同,它是一种图形化的数据流式编程语言。在图2-7左图中,假设有A 、B 、C 、D 4个节点,其数据流向如右图所示。按照数据流式语言的约定,任何一个节点只有在所有

图2-7 顺序结构的说明

的输入数据有效时才会执行,所以图中,当且仅当A 、B 、C 3个节点执行完,使得D 节点的3个输入数据都到达D 节点后,D 节点才执行。但是你要注意,这里并没有规定A 、B 、C 3个节点的执行顺序。在LabVIEW 中这种情况下,A 、B 、C 的执行顺序是不确定的,如果你需要对它们规定一个确定的顺序,那就需要使用本节介绍的“顺序结构”。

图2-7中的右边是顺序结构的图标,它看上去像是电影胶片。它可以按一定顺序执行多个子程序。首先执行0帧中的程序,然后执行1帧中的程序,逐个执行下去。与Case 结构类似,这多帧程序在流程图中占有同一个位置。

练习 2-5 使用顺序结构

目的:创建一个 VI ,计算生成等于某个给定值的随机数所需要的时间。

前面板

1. 打开一个新的前面板,并按照下图所示创建对象。

图2-8练习2-5的前面板

我们约定数据是0到100范围的整数。当前值用于显示当前产生的随机数。“执行次数”用于显示达到指定值循环执行的次数。匹配时间用来显示达到指定值所用的时间。

流程图

图2-8练习2-5的流程图(共3帧)

1.在流程图中放置顺序结构

(FunctionsoStructures)。

2.用鼠标右键单击帧的边框,在快捷菜单中选择Add

Frame After,创建一个新帧。重复这个步骤,再创建一个帧。

共3桢。

3.选中第0桢,设置读取初始时间(子)程序

4.第0帧的下边框上含有一个小方框,其中有一个箭

头。这个方框叫做顺序局部变量,可以在同一个顺序结构中的各

个帧之间传递数据。用鼠标右键单击第0帧的底部边框,选择

Add Sequence Local,创建顺序局部变量。顺序局部变量显示为

一个空的方块。当您将某个功能函数与顺序局部变量相连时,方

块中的箭头就会自动显示。

5.T ick Count (ms) 函数(FunctionsoTime &

Dialog)——返回启动到现在的时间(以毫秒为单位)。

在这里例子里需要使用两个这个函数。另一个在第2帧

中。

6.按图连好线。转入第1帧。该帧是匹配计算,内含

一个循环结构。该图中使用的新函数有:

Round to Nearest函数(FunctionsoNumeric)——在

该例中,它用于取0到100之间的随机数到距离最近的整数。

Not Equal?函数(Functionso Comparison)——在该例

中,它将随机数和前面板中设置的数相比较,如果两者不相等会

返回TRUE值,否则返回FALSE。

Increment函数(FunctionsoNumeric)——在该例中,

它将While循环的计数器加1。

7.按图连好线。转入第2帧

在第0帧中,Tick Count (ms)功能函数将以毫秒为单位

表示当前时间。这个数值被连到顺序局部变量,这样它就可以被

后续的帧使用。在第1帧中,只要函数返回的值与指定值不等,

VI就会持续执行While循环。在第2帧中,Tick Count (ms)

功能函数以毫秒为单位返回新的时间。VI从中减去原来的时间

(由第0帧通过顺序局部变量提供)就可以计算出花费的时间。

8.返回前面板,在Number to Match控制对象中输入

一个数值,执行该VI。

9.把该VI保存为LabVIEW\Activity目录下Time to

Match.vi。

练习 2-5结束。

附注与说明:设置数据范围

在设定一个数据对象时,可以设置对输入数据的限制,利用

快捷键选择Data Range…选项,将会出现如下对话框:

图2-9设置数据范围

它可以防止用户创建的控制对象或显示对象的值超出某个

预设的范围。您可以选择忽略这个值,将它强制修改到范围以内,

或暂停程序的执行。在程序执行时,如果发生溢出错误,溢出错

误符号将显示在工具栏中的执行按钮的位置。而且,一个立体的

黑框将把发生溢出的控制对象包围起来。

2.3.2公式节点(Formula Node)

公式节点是一个大小可变的方框,可以利用它直接在流程图

中输入公式。从FunctionsoStructures中选择公式节点就可以

把它放到流程图中。当某个等式有很多变量或者非常复杂时,这

个功能就非常有用。例如等式:y = x2 + x + 1使用公式节点可

以表示为:

图2-10公式节点示意图

利用公式节点可以直接输入一个或者多个复杂的公式,而不

用创建流程图的很多子程序。使用文本编辑工具来输入公式。创

建公式节点的输入和输出端子的方法是,用鼠标右键单击第0

帧的底部边框,选择Add Input (Add Output)。再在节点框中

输入变量名称。变量名对大小写敏感。然后就可以在框中输入公

式。每个公式语句都必须以分号(;)结尾。

公式节点的帮助窗口中列出了可供公式节点使用的操作符、函数和语法规定。一般说来,它与C 语言非常相似,大体上一个用C 写的独立的程序块都可能用到公式节点中。但是仍然建议不要在一个公式节点中写过于复杂的代码程序。

下面这个例子显示了如何在一个公式节点中执行不同条件时的数据发送。

请阅读下面这段程序代码,如果X 为正数,它将算出X 的平方根并把该值赋给Y ,如果X 为负数,程序就给Y 赋值-99。

if (x >= 0) then

y = sqrt(x)

else

y = -99

end if

可以用公式节点取代上面这段代码,如下图所示: output

input

Y=(X>=0)?sqrt(X):-99;Y X

注意:公式节点中变量字母X,Y 大、小写是有区别的,开方的函数sqrt(X)中函数名称是小写。

练习 2-6 使用公式节点

目的:创建一个VI ,它用公式节点计算下列等式:

y1 = x 3 – x 2 + 5

y2 = m* x + b

x 的范围是从0到10。可以对这两个公式使用同一个公式节点,并在同一个图表中显示结果。

前面板

m

b

Waveform Graph

图2-11 练习2-6的面板

1. 打开一个新的前面板,按照上图(该图中包含运行结果)创建前面板中的对象。波形图显示对象用于显示等式的图形。该

VI使用两个数字式控制对象来输入m和b的值。

流程图

2.按照下图创建流程图。

图2-12练习2-6的流程图

在创建某个输入或者输出端子时,必须给它指定一个变量

名。这个变量名必须与公式节点中使用的变量名完全相符。

公式节点中,在边框上单击鼠标右键,在快捷菜单中选择

Add Input,可以创建三个输入端子。在快捷菜单中选择Add

Output,创建输出端子。

x的范围是从0到10(包括10),就必须连接11到计数端

子。

Build Array (FunctionsoArra y)——在这个

例子中,它用于将两个数据构成数组形式提供给一

个多曲线的图形中。通过用变形工具拖拉边角就可

以创建两个输入端子。

3.返回前面板,尝试给m和b赋以不同的值再执行该 VI。

4.把该VI保存为LabVIEW/Activity目录下的

Equations.vi。

练习 2-6结束。

选择结构程序设计习题

选择结构程序设计练习 1.从键盘输入一个字符型数据,若输入一个数字字符('0'-'9'),则将其转换成相应的整数显示出来;若输入其它字符,则显示出错信息。[提示]根据字符型数据的ASCII码值是否在‘0’字符与‘9’字符之间进行判断。使用if…else…语句。 精选文档,供参考!

2.编写一个程序,其功能为:从键盘输入三个数x、y、z,判断x+y=z是否成立,若成立输出“x+y=z”的信息,否则输出“x+y!=z”的信息。[提示] 条件判断表达式x+y==z 3.编写一个程序,其功能为:输入三个整数,输出最大数和最小数。 [提示] 设置最大值变量max和最小值变量min;首先比较a,b的大小,并把大数存入max,小数存入min;然后最大值变量max和最小值变量min 再与c比较,若c大于max,则max取值c,否则保持不变;如果c小于min,则min取值c,否则保持不变。最后输出max和min的值。使用if…else…语句、if语句以及复合语句。 精选文档,供参考!

精选文档,供参考!

4.某产品生产成本c=c1+mc2,其中c1为固定成本,c2为单位产品可变成本。当生产数量m<10000时,c1=20000元,c2=10元;当生产数量m≥10000时,c1=40000元,c2=5元;编写一个程序,其功能为:分别计算出生产数量为6000以及25000时,总生产成本及单位生产成本。 精选文档,供参考!

5.分段函数的计算。编写一个程序,计算下列函数: y= x x<1 2x-1 1≤x<10 3x-11 x≥10 [提示]根据输入的x值的取值,计算y的值并输出。使用if…else if语句以及复合语句。 精选文档,供参考!

选择结构参考程序

1、编写程序,输入一个数,判断其是否是3或7的倍数,分4种情况输出:是3的倍数但 不是7的倍数时输出1,不是3的倍数但是7的倍数时输出2,是3的倍数也是7的倍数时输出3,不是3的倍数也不是7的倍数时输出4。 #include using namespace std; int main() { int x; cin>>x; if(x%3==0&&x%7!=0) cout<<1; else if(x%3!=0&&x%7==0) cout<<2; else if(x%3==0&&x%7==0) cout<<3; else cout<<4; return 0; } 2、编写一个程序,当用户输入一个小数(正值浮点数)后,将小数转化为最近的整数输出 (四舍五入)。 #include using namespace std; int main() { double x; int n; cin>>x; n=x; if(x-n>=0.5) n++; cout< using namespace std; int main() { double x; int n; cin>>x; n=x+0.5; cout<

} 3、有一分段函数如下,请编写程序,输入x值,输出y值。 #include #include using namespace std; int main() { float x,y; cin>>x; if(x<=-1) y=3*sqrt(fabs(x)+2)+1; else if(x<=10) y=pow(x,5)+1; else y=sqrt((x+1)/(2*x*x)); cout< #include using namespace std; int main() { float x,y;

labview结构的使用

结构的使用 本页关键词:labview labview 下载labview8.2 labview教程labview论坛labview 8.20 labview 7.0 labview 序列号labview7.1 labview 8.0 结构的使用 条件结构 条件结构是执行条件语句的一种方法。这类似于文本编辑语言中常见的If…Then…Else语句。它位于程序框图中,函数→编程→结构→条件结构。如图所示: 条件结构包含有两个或者更多的子框图,每一个子框图包含一段程序代码,由此对应一个程序分支。多个子框图就像一摞卡片重叠在一起,任何时候只有一个是可见的,执行哪一个取决于于选择端子外部接口相连的某个整数,布尔数,字符串或者枚举指,用户也可以直接输入所有可能出现的值。 1.选择端口的输入值 条件结构选择端口的输入值是由与它相连的输入控件对象决定的,数据类型可以是布尔量,整形,字符串型或者枚举型。条件结构顶部中间是各分支的选择标识,它自动调整为输入的数据类型,可以在工具模板上使用标签工具直接键入单个数值或某个数据范围。数值之间用逗号来分开,例如:“..0,2,4..10”表示选择条件为:≤0,2,4,5,6,7,8,9,10。 对于字符型和枚举型数值在条件标识上会自动加上双引号,当键入的选择器标识值与连接选择端口的数值类型不同时,选择器标识变为红色标识有错误。如图:

设置默认分支的方法是,选择一个分支结构,在快捷菜单中执行“本分支设置为默认分支”,它的作用是当选择端口的值与选择器标识值没有一个匹配时,就执行默认分支。如图: 2.条件结构的数据通道 条件结构的数据通道就是数据的输入和输出端口。将结构内外的端子相连后,边框上就会出现一个小矩形框,这就是数据通道,用于传输数据。向条件结构的一个分支提供数据时,这个数据对于所有的分支都是有效的,也就是其他分支都可以使用这个输入数据。条件结构的输出通道有些不同,当在一个分支中创建输出通道后,所有分支的同一位置都会出现一个白色小方框,它要求每一个分支都必须为这个通道予以连接,通道变为实心后程序才可以运行。也可以在通道的快捷菜单中选定“未连线时使用默认”为没有连接的分支定义一个默认输出值,这时输出通道变为灰色。如图: 条件结构应用举例 例一:

labview控制程序流程——labview事件结构

labview控制程序流程——labview事件结构 1 事件结构及它的图形化表示法事件被用来通知用户有异步活动发生。图 形化语言的事件响应包括:用户界面事件、外部I/O 事件和程序其它部分的事件。对事件的处理程序也被称为:事件驱动程序。事件驱动程序可以分为若干 个分支,每个分支处理不同的事件响应。所以对事件的响应结果也可以控制程 序的流程。事件驱动机制来自于可视化的操系统,可视化操作系统对用户事件 提供了简洁、有效的响应方式,最常见的事件来自于鼠标和键盘。虚拟仪器借 助于操作系统的事件处理机制实现了图形化语言的事件响应能力。在没有引入 事件结构之前,LabVIEW 是借助于轮询的方式来查询用户操作,由于轮询的方 式会占用一定的CPU 资源,甚至可能遗漏事件,所以这种处理方式并非理想。事件结构的出现避免了对CPU 资源的占用,同时也避免了事件的遗漏。事件 结构在函数选板》编程》结构子选板中可以找到,并可以将其直接拖拽到程序 框图中,图形化表示的事件结构,参见下图。图 1 图形化的事件结构与Case 结构和循环结构类似,事件结构也包含了一个主框架,这个框架内将用来放置 事件处理的事件驱动程序代码。如果事件处理任务众多,会有众多事件分支存在,在结构上类似Case 的多帧结构(选择器标签)。当在程序框图上拖放一个 事件结构时,我们只能看到上图所示的一帧已经预先注册的超时事件(Timeout),超时事件分支。它具有定时延迟的基本功能(不包括While 循环),参见下图。图 2 具有定时延迟的基本功能当然也可以采用另一种表示方法,参 见下图。图 3 利用事件结构内部节点获得中止时间通过这个例子也好理解内部 节点中时间的含义(是事件响应的停止时间)。超时事件超时事件是一种特殊 的事件,当然也可以看成是默认的事件分支。如果存在其它事件源时,超时事 件完全可以被忽略或取消。看下面一个例子。图 4 仅有的两个事件之一超时事

选择结构程序设计

第四章择路而行---选择结构程序设计 第一节路口诀择----条件语句 一、教学目标 1、掌握选择结构程序中常用的Qbasic语句。 2、掌握选择结构程序设计方法。 3、能利用选择结构程序设计解决简单的实际问题。 二、教学重点: 1.选择结构的语句及功能 2.选择结构中程序设计方法。 三、教学方法:讲授法,对比法,分组讨论法。 四、教学时间:2课时 五、教学教程: (一)引入新课:前面我们学习了顺序结构程序设计,利用顺序结构只能设计一些较简单的程序,如果要处理复杂的问题,就需要采用另外两种基本结构:选择结构和循环结构。选择结构,是一种常用的主要基本结构,是计算机科学用来描述自然界和社会生活中分支现象的重要手段。其特性是:无论分支多寡,必择其一;纵然分支众多,仅选其一。 (二)讲述新课 l 单行条件选择语句IF 1、单行结构条件语句IF…THEN…ELSE 格式:IF <条件> THEN <语句1> [ELSE <语句2>] 功能:最简单的条件选择语句,用来进行条件判断,使语句有条件的执行。 说明: 1)当<条件>为真(非零数)时,则执行<语句1>。 2)ELSE语句可以省略。 3)当<条件>为假(零)时,而且语句中有ELSE语句则执行<语句2>。 4)IF、THEN、ELSE必须在同一行上。 2、示例A、输入x的值,计算y的值。 REM 程序名为:eg1.bas INPUT “请输入x的值:”,x IF x>=0 THEN Y=1+X ELSE Y=1-2*X PRINT "Y=";Y END 例:求一元二次方程Ax2+Bx+C=0(A<>0)的实数根。 分析:写写出程序的流程图,参考流程图来写程序。 程序清单如下: INPUT A,B,C D=B*B-4*A*C IF D<0 THEN then X1=(-B+SQR(D))/(2*A) X2=(-B-SQR(D))/(2*A) PRINT “X1=”;X1, “X2=”;X2 ELSE PRINT “此方程无实根” END

中大型LABVIEW软件三层设计架构

通常一个VI若包含三、四十个以上的subVI(不包含LabVIEW本身在Functions中提供的VI)时,就可算是一个中大型的软件计划(software project)了。虽然比起软件工程中的一些作业环境软件(如Windows系列)或大型应用软件(如Word、Excel)等仍算是小工程,但其复杂性亦在一定程度之上,若没有事先想好在撰写程序时的一些规划与方法,想要完成这类中大型的软件绝对不是一件简单的事。尤其这类软件通常不是由一个人,而是由一个团队所共同完成的,因此整个软件的结构,就要能让团队中的每一成员都能清楚的了解,而且要够简单,才算是好的软件结构。以下将参考由Rick Bitter等人所着”LabVIEW Advanced Programming Techniques”,中之第4章的部分内容,介绍所谓软件计划中的三层式结构(the Three-Tiered Structure)的概念及其优点。 需要软件结构的主要原因,是当软件人员发展软件到某一阶段时,若没有计划或无意的创造了许多subVI,但各subVI之间有许多部分其实是重复撰写的;或各VI相互间呼叫时没有一定的纪律,使得在VI Hierarchy中所看到的各VI间的联机是错综复杂,像个盘丝洞一般,这将可能会使多人发展的软件计划增加所耗费的时间和可能出错的机会、减低程序的效率,以及增加debugging时的困难。为了改善上述的情形,所以要提倡三层式结构的概念。 三层式结构由上而下依次为:Main Level、Test Level和Driver Level,这种结构是由经验中得来的,在多人发展的软件计划中显得简单明了,当大家都能遵照这个结构来写程序时,这种结构就可以充分显现出它的优点。那这三个阶层到底如何区别呢?以通俗的比喻来说,假设我们如果要组织一个篮球队参加全国比赛,每个球员要练习基本动作及体能,如何跑、如何跳、手脚该如何放置才是正确位置等,这就相当于系统中Driver Level所做的事情;接下来,将各球员组合练习某一套防守或进攻的战术,如二三区域联防、人盯人防守,每个人该在什么位置才能正确接应等,则像是T est Level中一项项的test了;而最后比赛时,场上的战略运用,包括何时要用什么战术组合、如何更换球员、何时喊暂停、终场前是不是要故意犯规或采拖延战术等等,对照过来,就像是在Main Level中,如何将T est Level中各test 做最有效能的整合与排列组合等的工作。 简单来说,Driver Level包含了程序与所有仪器、组件、马达或其它应用软件的沟通、控制等较低阶的事情,使其可完成某一项基本的动作,例如初始化、马达走到home位置、雷射以设定的能量及频率发射光束???等。可注意到我们在这边所说的driver,并不像一般在别处所称驱动程序的那种driver那么低阶,真正最低阶的工作还是要有现成的VI来帮忙才行;在Test Level中,则是如何连接各个Driver VI的基本动作,使可做完出一套连续、有意义的流程,来执行某项测试,例如让手臂由A点走到B点,下降夹取一个螺丝,再走至C点装到某面板上,然后回到A点等待,类似这样控制一个流程的进行,便是Test VI的工作内容;Main Level则包含了使用者接口(User Interface)或称人机接口(Man-Machine Interface) ,目的是整合各项测试和例外处理(Exception Handling)等,将它们以适当的顺序及流程组合,很容易地让使用者操作。 当一个软件计划严格的遵照上述的三层结构来撰写时,最大的优点是可使程序代码的再使用(code reuse)达到最大化,在不同的T est VI中,可重复使用相同的Driver VI;而在不同程序的Main Level中,又可重复使用相同的T est VI,这将使得程序维护或修改的时间与精力大幅减少;同时当我们已有一个程序的样板(template)后,可增加软件版本更新的速度。另一个很重要的好处是,当我们在撰写某一个level中的程序时,并不需要关心在另一个level中有什么其它的程序是如何执行的,而只要专注在自己的这个level的程序上就可以了,这使得由团队来共同完成一个大型计划的工作变得容易许多。 以下将依Driver Level、Test Level、Main Level的顺序,来介绍在各level写程序时的原

matlab选择结构程序设计问题详解

实验三选择结构程序设计 一、实验目的 1、掌握建立和执行M文件的方法。 2、掌握利用if语句实现选择结构的方法。 3、掌握利用switch语句实现多分支选择结构的方法。 4、掌握try语句的使用。 二、实验内容 1、求分段函数的值。用if语句实现,分别输出x=-5.0,3.0,1.0,2.0,2.5,3.0,5.0时的y 值。 ①x=input('please input the value of x'); if x<0&x~=-3 y=x*x+x-6; elseif x>=0&x<5&x~=2&x~=3 y=x*x-5*x+6; else y=x*x-x-1; end y ②please input the value of x-5.0 y = 14 >> aaaaa please input the value of x-3.0 y =

>> aaaaa please input the value of x1.0 y = 2 >> aaaaa please input the value of x2.0 y = 1 >> aaaaa please input the value of x2.5 y = -0.2500 >> aaaaa please input the value of x3.0 y = 5

please input the value of x5.0 y = 19 2、输入一个百分制成绩,要求输出成绩等级A、B、C、D、E。其中90分~100分为A,80 分~89分为B,70分~79分为C,60~69分为D,60分以下为E。要求: (1)分别用if语句和switch语句实现。 (2)输入百分制成绩后要判断该成绩的合理性,对不合理性的成绩应输出出错信息。 If语句 ①s=input('please input the score:'); if s>=90&s<=100 rank='A'; elseif s>=80&s<=89 rank='B'; elseif s>=70&s<=79 rank='C'; elseif s>=60&s<=69 rank='D'; elseif s>0&s<=59 rank='E'; else rank='wrong socre' end rank ②>> >> bbb please input the score:94

labview事件结构学习

labview事件结构学习 编程的主要目的是为了实现用户的某种功能,用户通过用鼠标、键盘、程 序内部等触发某种程序动作,从而达到某种结果,这些操作都被称作为事件,LabVIEW 中相应这些事件最常用的结构就是事件结构。事件结构内容丰富,基 本上大的程序结构都需要用到事件结构,下面将详细介绍事件结构。事件结构 在程序不能够单独响应各种事件,必须与循环结构一同使用,如下图事件添加 方式很简单,鼠标右键事件框弹出菜单如上图,有添加、删除、复制、编辑事 件等选项,按照操作即可。如下图,为事件结构添加Stop 事件,布尔控件触发 事件的方式有多种,鼠标按下、经过、离开、进入等,这里我们选择值改变。 确定后,stop 事件就被添加进去了,如下图,当我们运行程序后,点击前面板 的stop 按钮,触发事件使while 循环停止而后程序也停止。同一事件分支只能 添加一种事件吗?当然不是!有的时候有很多不同操作却会执行相同代码,怎 么编程才不会让代码冗余呢?看个例子,如下图2 个按钮stop1,stop2 点击后 都可以让程序停止,我们怎么为其添加事件呢?我们先添加一个事件stop1 的,方法上面已经描述了。由于stop2 的执行代码和stop1 一样,我们在事件stop1 上右键->弹出菜单->编辑本事件分支(Edit Event Handled by This Case)会弹出已添加事件stop1 的编辑框,这是左侧有2 个按钮如下截图我们点击Add Event 左侧事件列表会出现如下变化选中这个后,右侧列表选中stop2 的Value Change 事件后,点击确定在看该事件分支如下,2 个事件就添加在同一个分支当中了,运行程序后,点击stop1 或stop2 均可让程序停止。超时超时是事件结构特有的,看名字就知道是怎么回事,即超过一定时间没有触发事件则执行超时 事件。如果超时时间设置所以如果程序事件功能不多,又需要定时执行一段代码,可以考虑用此方式来完成;如果程序操作频繁,则不建议用此事件来定时

c语言第4章 选择结构程序设计习题答案

第4章选择结构程序设计 习题(P111) 4.2 C语言中如何表示“真”和“假”?系统如何判断一个量的“真”和“假”? 答:C语言中用1表示真,0表示假;系统按照“非0为真,0为假”判断一个逻辑量的真假。 4.3 写出下面各逻辑表达式的值。设a=3,b=4,c=5。 (1)a+b>c&&b==c (2)a||b+c&&b-c (3)!(a>b)&&!c||1 (4)!(x=a)&&(y=b)&&0 (5)!(a+b)+c-1&&b+c/2 解:该题在求解过程中注意: 一、优先级。逻辑运算符(&&和||)低于算术运算符和关系运算符而高于赋值运算符,在逻辑运算符中,逻辑非最高,逻辑与其次,逻辑或最低; 二、逻辑表达式的求值规则。(P94) 所以得以上表达式的值分别为:(1)0 (2)1 (3)1 (4)0 (5)1 4.4有3个整数a、b、c,由键盘输入,输出其中最大的数。 分析:这是一个规模较小的求最值的算法,习题1.6用函数的方法实现。该题不用函数调用实现,但方法是最值,再依次和第二、第三个数比较得结果。其中都要用到单分支或双分支选择结构语句。 参考程序如下: main() { int a,b,c,max; /*定义4个整型变量,其中a,b,c存原始数据,max存最值*/ printf("\ninput the value of a,b,c:"); /*提示输入*/ scanf("%d%d%d",&a,&b,&c); /*格式符之间无分隔符,输入时可以以空格、回车、跳格分隔*/ if(a>b) max=a; else max=b; if(max

Labview执行结构:详细说明

执行结构:详细说明 While循环 与文本编程语言中的Do循环或Repeat-Until循环类似,必须满足特定条件之后,While循环才会执行其内的程序代码,如图1所示。 图1. LabVIEW中的While循环;具备While循环功能的流程图; 还有While循环功能的伪码范例 While 循环位于Structures面板上。从面板上选择While Loop之后,针对所要重复的代码区块,可用鼠标拖拽出矩 形并将之圈住。放开鼠标之后,即会有While循环圈住用户所选的区块。 只要将对象拖拽至While循环中,即可将其新增至While循环中。 只要条件接线端接收特定的布尔值之后,While循环随即执行代码 也可通过While 循环的条件接线端来处理基本错误。若将错误簇连接至条件接线端,则只有Status参数的真或假值传送至接线端。同样,Stop if True和Continue if True快捷菜单项目,将分别变更为Stop if Error和Continue while Error。 计数接线端属于输出端点,其中包含已完成的循环次数。 While循环的循环计数均从零开始。 注意: While循环将至少执行一次。 无限循环 无限循环为常见的程序错误,即无法停止的循环。若条件接线端 i为True时停止,而用户又在While循环外部放置布 尔控件接线端。一旦循环开始,控件值即成为FALSE,就会形成无限循环。

图2.While循环之外的布尔控件 因为在循环开始之前,仅读取该值一次,所以改变控件的值并无法停止无限循环。若要通过控件停止While循环,则必须在循环中配置控件接线端。若要停止无限循环,则按下工具栏上的Abort Execution按钮,即可终止该VI。 在图3中的While 循环将不断执行,直到随机数函数的输出大于或等于10.00,且Enable控件为TRUE时才会停止。当且仅当“与”函数的两个输入都为真时,函数的返回值才为真。否则,与函数将回传FALSE。 在图3中,只要随机函数不产生10.00以上的值,就会成为无限循环。 图3.无限循环 结构隧道 隧道负责为结构传送数据。 While循环边框上的实心区块即为隧道。此区块的颜色与隧道所连接的数据类型的颜色相同。在循环终止之后,随即有数据送回循环。当隧道传送数据进入循环时,只有数据抵达隧道之后,才会执行循环。 图4即以计数接线端连至隧道。直到While 循环执行完毕,隧道中的数值才会传送至Iterations显示控件。计数接线端在Iterations显示控件中只会显示最后的数值。 图4. While循环的隧道

labview程序结构的使用 (1)

百度文库- 让每个人平等地提升自我! 西安文理学院 机械与材料工程学院实验报告课程名称:虚拟仪器 实验项目:程序结构的使用(一)专业:测控技术与仪器 班级:2012级02班 姓名:罗蒙 学号:0703110217

一、程序设计思路 本次实验通过四个程序设计,来完成labview的熟悉以及子基本程序结构的创建和使用方法 1.题目要求: 认识和熟悉while循环:创建一个while循环,每隔一秒产生一个随机数,并用波形图表显示随机数历史值 设计思路: 创建while循环,随机数产生控件,波形图表,连线。 2.题目要求 认识和熟悉 For循环以及移位寄存器:创建一个For循环,产生100个10-100随机数,将数据在博兴图中显示,并求出最小值,最大值,平均值。 设计思路: 创建For循环,设定循环次数,产生随机数,使用移位寄存器存储生成数据,并对其进行比较,输出。 3.题目要求: 认识和熟悉条件结构:创建一个条件vi,要求用户输入口令,口令正确时,显示密码匹配,否则程序立即停止。 设计思路: 创建条件结构,真分支下密码匹配,显示字符串“密码匹配”,假分支下,添加程序跳出指令,程序停止 4.题目要求 创建一个虚拟温度计VI,用0~100的随机数模拟采集实际温度。要求允许用户控制温度采集的开始停止;温度控件显示模式(摄氏温度或华氏温度)有摇杆控制,用户可设置温度报警上限,如果超过报警上限,则点亮报警灯(红色)设计思路: 使用多种语言结构,实现vi的创建,实现虚拟温度计的设计。

二、前面板设计 图1-1-1 图1-2-1 图1-3-1 图1-4-1 三、程序框图设计 图1—1—2 图1—2—2

选择结构程序设计(精)

实验七选择结构程序设计 一、实验目的 1、掌握应用双生选择结构设计程序解决一般的单分支问题。 2、掌握应用多重选择结构设计程序解决一般多分支问题 二、实验要求 1、对单分支和多分支的语句格式深入了解 2、利用单分支和多分支结构解决较复杂的问题 三、实验内容与步骤 计算机的判断功能是通过结构实现的。选择结构又称为分支结构,是程序设计中应用中较多的程序结构,其特点是由分支中的条件是否成立来决定程序执行的不同走向。 选择结构分为双重选择(IF-ELSE-ENDIF)和多重选择(DO CASE –ENDCASE)两种。 1、设计双重选择结构程序 计算电费:不超过50度,每度0.8元;超过50度时,超出部分每度1.20元. 解:电费DF显然为电量DL的一个分段函数: 0.8*DL (DL<=50) DF= 0.8*50+1.20*(DL-50) (DL>50) 应用选择结构完成电费DF的计算. 设计1: YY1.PRG SET TALK OFF CLEAR INPUT “请输入电量(度):” DL IF DL<=50 DF=0.8*DL ELSE DF=0.8*50+1.20*(DL-50) ENDIF ?”应缴电费:”,DF SET TALK ON RETU 设计2: *YY2.PRG SET TALK OFF CLEAR INPUT “请输入电量(度):” DL DF= 0.8*DL IF DL>50 DF=0.8*50+1.20*(DL-50) ENDIF ?”应缴电费:”,DF SET TALK ON

RETU 2、设计多重选择结构程序 设计程序处理商场推出让利用促销问题:凡购物金额超过500元未超过1000元者,返回20元,超过1000元,返回5%;超过2000元,返回7%,超过4000元,返回10%。输入购物金额,输出应交款数。 解:设购物金额为X,让利金额为Y,则应交款为X-Y。 根据输入的X,采用多重选择结构分5种情形计算Y,输出X-Y。程序为: *YY4.PRG CLEAR SET TALK OFF INPUT “请输入购物金额:”TO X Y=0 DO CASE CASE X〈500 Y=0 CASE X〈1000 Y=20 CASE X〈2000 Y=X*0.05 CASE X<4000 Y=X*0.07 OTHE Y=X*0.1 ENDCASE ?”应交款”,X-Y SET TALK ON RETURN 运行程序:DO YY4.PRG 请输入购物金额:3000 应交款:2790.00元 四、实验习题与思考 1、选择结构分哪几种?有哪几种方法实现多重选择? 2、双多重选择结构中,有ELSE与没有ELSE在功能上有什么区别? 3、在多重选择结构中,OTHERWISE子句的意义是什么?如果不要该子句,如何修改程 序? 4、从永州到长沙铁路托运行李的运费标准为:40千克及以下,每千克0.24元;超过40千克, 超出部分每千克0.42元.设计程序,输入行李重量,输出运费. 5、从键盘输入一个正整数X:若X为奇数,输出X+3,若为偶数,输出X/2。 6、设计多分支选择结构程序,输入一个考试得分F:若F大于或等于90分,显示“优秀”; 若F大于或等于80,显示“良好”;若F大于或等于70,显示“中等”;若F大于或等于60,显示“及格”;若F少于60,显示“补考”。

LabVIEW事件结构的妙用

LabVIEW事件结构的妙用 首先,我们回顾一下上期节目:LabVIEW网络讲坛乊悬案迷思中关于事件结构的几个重要知识点。 事件结构的基本组成部分: 事件结构五大基本组成部分 事件结构由——事件选择器、超时接线端、事件数据节点、事件过滤节点和动态事件接线端5个基本部分组成。 事件结构编程的3条黄金原则: 在使用LabVIEW事件结构迚行编程的时候,我们应该注意:1.不要将事件结构放置在while循环乊外,而应该放置在while循环的内部;2.不要在事件结构的内部使用循环处理事件,可选择采用生产者消费者结构,在生产者循环中放置事件结构,在消费者循环中处理事件;3.记得为事件结构添加一个单独处理停止按钮的分支。 遵守以上三条原则将使我们的程序更加健壮,避免在使用事件结构的时候出现前面板死锁等问题。 过滤事件与通知事件:

在LabVIEW中,以问号结束的事件被称为过滤事件,其余的事件被称为通知事件。对于通知事件,程序可以感知事件的发生并且响应该事件,然后再处理在事件结构中定义的任务;而对于过滤事件,程序感知事件发生后,首先处理在事件结构中定义的任务,然后根据事件过滤节点的值(Discard?)来决定是否响应该事件或是否改变事件数据。 因此我们建议,在希望参与处理用户操作时使用过滤事件,因为过滤事件可以放弃事件或修改事件数据。如果仅需要知道并响应用户执行的某一特定操作,则应使用通知事件。 在本期节目中,我们着重介绍动态注册事件的用法。 静态和动态两种事件注册模式: 静态注册指定了事件结构的每个分支具体处理哪些事件。一旦VI开始运行,LabVIEW将自动注册这些事件,并且在VI运行的整个过程中无法改变事件结构所处理的事件。 而动态事件注册与VI服务器相结合,允许在程序运行时使用控件、VI或应用程序的引用来动态地指定和改变产生事件的对象。动态注册在控制LabVIEW产生何种事件和何时产生事件等方面更为灵活。 Demo 1和Demo 2帮助大家更好地理解动态注册事件编程方法。 Demo 1:动态注册事件_阿拉丁神灯.vi Demo概述: 在这个VI中,用严格自定义的方式将一个布尔类型的控件做出神灯的样子,并为这个布尔控件动态注册了”鼠标按下”的事件。这个事件执行的任务是显示神灯神仙,并弹出一个对话框。由于该事件采用的是动态注册的方式,所以可以通过一个按钮取消对该事件的注册。并通过另一个按钮再次注册该事件。这就是动态事件的使用效果,它可以在程序运行的过程中,动态地控制何时注册事件和注册什么样的事件。 程序实现:

实验三 选择结构程序设计(解答)

实验三选择结构程序设计 (解答) 1.改错题 (1)下列程序的功能为:输入1个字母,如果它是小写字母,则首先将其转换成大写字母,再输出该字母的前序字母、该字母、该字母的后序字母,例如:输入g,则输出FGH;输入a,则输出ZAB;输入M,则输出LMN;输入Z,则输出YZA。请纠正程序中存在错误,使程序实现其功能,程序以文件名sy3_1.c存盘。 #include main() { char ch,c1,c2; printf("Enter a character:"); ch=getchar(); if((ch>='a')||(ch<='z')) // if((ch>='a')&&(ch<='z')) ch-=32; c1=ch-1; c2=ch+1; if(ch='A') // if(ch=='A') c1=ch+25; else if(ch='Z') // else if(ch=='Z') c2=ch-25; putchar(c1); putchar(ch); putchar(c2); putchar('\n'); } 改正后的程序: #include main() { char ch,c1,c2; printf("Enter a character:"); ch=getchar(); if((ch>='a')&&(ch<='z')) ch-=32; c1=ch-1; c2=ch+1; if(ch=='A') c1=ch+25;

else if(ch=='Z') c2=ch-25; putchar(c1); putchar(ch); putchar(c2); putchar('\n'); } (2)下列程序的功能为:输入3个整数后,输出其中最大值。请纠正程序中存在错误,使程序实现其功能,程序以文件名sy3_2.c存盘。 #include "stdio.h" main() { int a,b,c,max; printf ("请输入3个整数:\n"); scanf ("%d%d%d",&a,&b,&c); max=a; if (c>b) { if (b>a) max=c;} /* c>b>a */ else /* b>c */ {if (c>a) max=b;} /* b>c>a */ printf("3个数中最大者为:%d\n",max); } 改正后的程序:(方法1) #include "stdio.h" main() { int a,b,c,max; printf ("请输入3个整数:\n"); scanf ("%d%d%d",&a,&b,&c); max=a; if (c>b) { if (c>a) max=c;} else {if (b>a)max=b;} printf("3个数中最大者为:%d\n",max); } 改正后的程序:(方法2) #include "stdio.h" main()

实验3选择结构程序设计

实验3 选择结构程序设计 实验要求: 1.掌握if语句及其嵌套的使用 2.掌握switch和break语句构成的分支结构; 3.能够编写简单的分支结构程序; 4.学会正确使用逻辑运算符和逻辑表达式的方法 5.会上机调试、运行简单的选择结构程序。 读程序: 1.输入a、b、c三个整数,求最小值 # include void main() { int a,b,c;,jl scanf("%d%d%d",&a,&b,&c); if((a void main( ) { int day; scanf(" %d", &day); switch (day) { case 1 : printf(" Monday \n "); break; case 2 : printf(" Tuesday \n "); break; case 3 : printf(" Wednesday \n "); break; case 4 : printf(" Thursday \n "); break; case 5 : printf(" Friday \n "); break; case 6 : printf(" Saturday \n "); break; case 7 : printf(" Sunday \n "); break; default:printf("The input is wrong! \n"); } }

清华版labview教程

第二章程序结构 2.1循环结构 2.1.1While 循环 While 循环可以反复执行循环体的程序,直至到达某个边界 条件。它类似于普通编程语言中的 Do 循环和 Repeat-Until 循 环。While 循环的框图是一个大小可变的方框,用于执行框中的 程序,直到条件端子接收到的布尔值为 FALSE。 ●该循环有如下特点: ●计数从0开始(i=0)。 ●先执行循环体,而后i+1,如果循环只执行一次,那么 循环输出值i=0。 ●循环至少要运行一次。 条件端子 循环变量 图2-1While 循环示意图 练习2-1使用While循环和图表 目的:用 While 循环和图表获得数据,并实时显示。 创建一个可以产生并在图表中显示随机数的VI。前面板有 一个控制旋钮可在0到10秒之间调节循环时间,还有一个开关 可以中止VI的运行。学习怎样改变开关的动作属性,以便不用 每次运行VI时都要打开开关。操作步骤如下: 前面板 图2-2练习2-1的前面板 1.选择FileoNew,打开一个新的前面板。 2.选择ControlsoBoolean,在前面板中放置一个开关。

设置开关的标签为控制开关。 3.使用标签工具创建 ON 和 OFF 的标签,放置于开关旁。 4.选中ControlsoGraph,在前面板中放置一个波形图(是chart,而不是graph)。设置它的标签为随机信号。这个图表用于实时显示随机数。 5.把图表的纵坐标改为0.0 到 1.0。方法是用标签工具把最大值从10.0改为1.0。 6.选择ControlsoNumeric,在前面板中放置一个旋钮。设置旋钮的标签为循环延时。这个旋钮用于控制While 循环的循环时间。 流程图 7.开流程图,按照下图创建流程图。 图2-2练习2-1的流程图 a.从 FunctionsoStructures 中选择 While 循环,把它放置在流程图中。将其拖至适当大小,将相关对象移到循环圈内。 b.从Functionso Numeri c中选择随机数(0-1)功能函数放到循环内。 c.在循环中设置Wait Until Next ms Multiple函数(FunctionsoTime & Dialog),该函数的时间单位是毫秒,按目前面板旋钮的标度,可将每次执行时间延迟0到10毫秒。 d.照上面所示的流程图连线,把随机数功能函数和随机信号图表输入端子连接起来,并把启动开关和While 循环的条件端子连接。 8.返回前面板,调用操作工具后单击垂直开关将它打开。 9.把该 VI 保存为 LabVIEW\Activity目录中的Random Signal.vi。 10.执行该 VI。While循环的执行次数是不确定的,只要设置的条件为真,循环程序就会持续运行。在这个例子中,只要开关打开(TRUE),框图程序就会一直产生随机数,并将其在图表中显示。 11.单击垂直开关,中止该VI。关闭开关这个动作会给循环条件端子发送一个FALSE值,从而中止循环。 12.用鼠标右键单击图表,选择Data

LabVIEW程序实例

1、Build a VI that generate a random number between zero and ten,and then divides it by an input number and diaplays the result on the front panel.If the input number is zero,the VI lights an LED to flag a “divide by zero”error 2、3-1,P43 3、Try create a VI to compute n! 4、求500个随机数中的最大值和最小值。 5、3-3,P44 6、3-4,P46 7、3-5,P49 If implement this equation using regular G arithmetic functions,the block diagram looks like the one in the following illustration.Please imolement the same equation using a Formula Node,and add event to control when the VI executes.

8、设计一个简单信号源,能选择正弦波、三角波和方波并用Waveform Graphe显示。 9、4-1,P68 10、4-5,P72 11、(1)显示一个二维数组的行数和列数(2)查找一个二维数组中最大值,以及最大值在数组中的位置。

12、5-2,P89 13、6-1,P100 14、6-3,P103 15、7-4,P120 16、7-5,P121 17、双边傅里叶

labview课程设计模拟计算器事件结构

河北工程大学 《虚拟仪器设计》课程设计报告 课题:计算器模拟 姓名:张振兴 学号: 090030301 班级:测控三班 完成日期:2012 年 6月19日

目录 一、设计思路 (2) 二、实现过程 (2) 1、面板键入感应 (2) 2、运算变量的初始化 (2) 3、无操作时的默认输出 (3) 4、数字的键入1-9的输入 (3) 5、数字0的输入 (4) 6、小数点的键入 (5) 7、结果去零操作 (5) 8、“+/-”键的设计 (7) 9、“+、-、*、/”四则运算 (7) 10、等号键 (8) 11、开方运算 (9) 12、取倒数倒数运算 (9) 13、退格键CE的设计 (10) 14、清零键C (11) 15、停止键OFF (12) 三、整体程序 (12) 四、前面板的设计排版 (12) 五、while循环中寄存器能 (13) 六、此计算器可以实现的功能 (13)

一、设计思路 完成标准型计算器的一般功能。 输入第一个数,进行存储并显示输入运算的类型并存储输入第二个数,存储并显示按“=”或则按其它运算符号“+、-、*、/”进行连续的运算,最后显示运算结果。 二、具体的实现过程 1、面板键入感应 在前面板上建立22个布尔量,其中包括0--9十个数字键,1个小数点键,4个“+、-、*、/”运算键,1个等号键,1个开方键,1个符号转换键,1个倒数键,1个清零键,1个退格键,1个退出键。如下图所示: 2、运算变量的初始化 在运行程序之前,首先对需要用到的变量进行初始化,如图所示

3、无操作时的默认输出 当键盘上的键没有任何一个按下时,系统仅执行顺序结构第一帧,系统处于初始化状态输出。 4、数字1--9的输入 以数字“1”为例,当按下数字“1”后,布尔量为值改变,进入时间结构结构,将1输出到显示中,布尔量再次改变时。(图1.4.1)若再次输入1,为避免出现01这样的字符串,先判断之前显示的数据是否为0,若为0,则直接输出1,(图1.4.2)若不为0,则将这两次输入的数据通过

相关文档
相关文档 最新文档