当前位置:文档之家› 第三章 数组、簇和图形

第三章 数组、簇和图形

第三章 数组、簇和图形
第三章 数组、簇和图形

第三章数据类型:数组、簇和波形

3.1概述

数组是同类型元素的集合。一个数组可以是一维或者多维,

如果必要,每维最多可有231-1个元素。可以通过数组索引访问

其中的每个元素。索引的范围是0到n – 1,其中n是数组中

元素的个数。图3-1所显示的是由数值构成的一维数组。注意

第一个元素的索引号为0,第二个是1,依此类推。数组的元素

可以是数据、字符串等,但所有元素的数据类型必须一致。

图3-1数组示意图

簇(Cluster)是另一种数据类型,它的元素可以是不同类

型的数据。它类似于C语言中的stuct。使用簇可以把分布在流

程图中各个位置的数据元素组合起来,这样可以减少连线的拥挤

程度。减少子VI的连接端子的数量。

波形(Waveform)可以理解为一种簇的变形,它不能算是一种有普遍意义的数据类型,但非常实用。

3.2数组的创建及自动索引

3.2.1创建数组

一般说来,创建一个数组有两件事要做,首先要建一个数组的“壳”(shell),然后在这个壳中置入数组元素(数或字符串等)。

如果需要用一个数组作为程序的数据源,可以选择

Functions?Array?Array Constant(数组常数

),将它放置在流程图中。然后再在数组框中放置数值常量、

布尔数还是字符串常量。下图显示了在数组框放入字符串常量数

组的例子。左边是一个数组壳,中间的图上已经置入了字符串元

素,右边的图反映了数组的第0个元素为:”ABC”,后两个元素

均为空。

图3-1数组的创建

在前面板中创建数组的方法是,从Controls模板中选择

Array & Cluster,把数组放置在前面板中,然后选择一个对象

(例如数值常量)插入到数组框中。这样就创建了一个数值数组。

也可以直接在前面板中创建数组和相应的控制对象,然后将

它们复制或者拖曳到流程图中,创建对应的常数。

还有很多在流程图中创建和初始化数组的方法,有些功能函

数也可以生成数组。

3.2.2数组控制对象、常数对象和显示对象

通过把数组与数值、布尔数、字符串或者簇组合在一起,可以在前面板和流程图中创建任何一种控制对象、常数对象和显示对象。数组元素不能是数组、图表或者图形。如果您想查看一些数组的例子,请查看Examples\General\arrays.llb中的例子。

3.2.3自动索引

For循环和While循环可以自动地在数组的上下限范围内编索引和进行累计。这些功能称为自动索引。在启动自动索引功能以后,当把某个外部节点的任何一维元素连接到循环边框的某个输入通道时,该数组的各个元素就将按顺序一个一个地输入到循环中。循环会对一维数组中的标量元素,或者二维数组中的一维数组等编制索引。在输出通道也要执行同样的工作――数组元素按顺序进入一维数组,一维数组进入二维数组,依此类推。

在默认情况下,对于每个连接到For循环的数组都会执行自

动索引功能。可以禁止这个功能的执行,方法是用鼠标右键单击

通道(输入数组进入循环的位置),在快捷菜单中选择Disable

Indexing。

练习3-1创建一个自动索引的数组

目的:使用 For 循环的自动索引功能创建数组,并用一个图形(Graph)显示该数组。

前面板

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

1.打开一个新的前面板。

2.选择Controls?Array & Cluster,在前面板

中放置一个数组。设置它的标签为Waveform Array。

3.选择Controls?Numeric,在

数组框中插入一个数字式显示对象。如右图所示。它用于显示数

组的内容。

4.选择Controls?Graph,在前面板中放置一个波形图。

设置它的标签为Waveform Graph。

5.隐藏图例和模板。

6.用鼠标右键单击图形,并在快捷菜单中取消选中Y

Scale?Autoscale Y,禁止自动坐标功能。

7.使用文本工具,把Y轴的范围改为-0.5到1.5。

流程图

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

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

●由Functions?Select a VI…寻找

LabVIEW\activity目录下的Generate Waveform

VI,它的作用是返回波形中的某一点。这个VI

需要输入一个索引,我们将循环周期连接到这个

输入。

●注意Generate Waveform VI连出来的连线在循环边界

变成一个数组时会变粗,正是在这个边界处形成了一维数组。

●For循环会自动累计边界内的数组。这种功能叫做自动

索引。在这个例子中,连接到循环计数输入的数值常数令For

循环创建了一个由100个元素组成的数组。

●Bundle函数(Functions? Cluster)——

将图块中的各个组件组合成一个簇,在正确连接以

前需要改变该函数的图标的大小。将移位工具放在

图标的左下角。变形工具会变成如左图所示,拖曳鼠标直到出现

第三个输入端子。

●数值常数(Functions?Numeric)——三个数值常数用

于设置For循环执行的周期数N=100,初始X=0和delta X=1。

9.从前面板执行该VI。该VI将把自动索引后的波形图数

组显示在波形图中。

10.把 X的delta值改为0.5,X的初始值改为20。再次执

行该VI。注意,波形图现在同样显示100个点,而每个点的初

始值为20,X的delta值为0.5(见X轴)。

11.只需在显示器中输入元素的索引号就可以查看波形数

组中的任何元素。如果输入的数比数组的元素个数大,那么显示

器将变暗,表示您没有为该元素设置索引。

如果需要一次查看多个元素,可以通过改变数组显

示对象的大小来实现。把定位工具放置在数组框的右下

角。工具将变成右图所示的变形工具。当工具变形时,用鼠标拖

曳数组的右边或者下边。数组现在就可以按照元素索引的上升顺

序显示多个素,以某个与指定索引对应的元素开始,如下图所示。

图3-3练习3-1中多个数组元素的同时观察

在前面的流程图中,您为波形图指定了初始的X值和delta

X值。默认的X初始值是0,delta X 值是1。这样,也可以把

波形数组直接连接到波形图端子,而无需指定初始的X值和

delta X值,如图3-4所示。

图3-4练习3-1使用默认X及Delta X时简化后的流程图

12.按上图删除 Bundle功能函数和它所连接的常数对象。

方法是用移位工具选择该功能函数和连接的常数对象,按下

。再选择Edit?Remove Bad Wire s。按照上图完成流程

图的连线。

13.执行该VI。注意初始的X值是0,delta X值是1。

多图区图形

可以创建含有多条曲线的图形,方法是创建一个数组,用它

来汇集传给单图区图形的类型的数据元素。

图3-5 练习3-1多图区图形的流程图

14. 按照上图创建流程图。

● 正弦函数

(Functions?Numeric?Trigonometric )——在这

里,它用于在For 循环中创建一个由数据点组成的数组,表示一

个正弦波周期。

● Pi 常数(Functions?Numeric?Additional

Numeric Constants )

● Build Array (Functions?Arra y )——在

这里,它用于创建合适的数据结构(一个二维数组),

在波形图中绘制两条曲线。。用移位工具拖曳边角

可以增大该函数的面积,创建两个输入端子。

15. 返回前面板,执行该 VI 。注意同一个波形中的两个图

区。默认情况下,它们的X 初始值都是0,delta X 初始值都是

1。下图是该程序的运行结果(前面板未改动)。

16. 把该VI 保存为LabVIEW\Activity 目录中的Graph

Waveform Arrays.vi 。

17. 可以修改图形中的某个图区的外观。方法是,用鼠标右

键单击这个图形,再从弹出菜单选择对应的图例。

Array

图3-6 练习3-1多图区图形的面板显示

练习 3-1 结束。

在上面这个例子中,由于计算端子连接了一个值为100的常

数对象,所以 For 循环将执行100次。下面这个例子显示了另

外一种控制循环执行次数的方法。

更详细的例子建议调阅Examples》Fundamentals 》Graphs

and Charts》Graph Examples》Waveform Graph例子。

练习3-2对输入数组使用自动索引功能

目的:打开并执行一个VI,它将在一个For循环中使用自动索引功能处理一个数组。

1.选择File?Open…,打开

Examples\General\arrays.llb中的Separate Array Values

VI 。

2.打开流程图。下面的示意图显示的是在TRUE和FALSE

时的情况。

图3-7练习3-2的流程图

注意,Input Array引出的连线与For循环外的粗线不同,

表示这是一个数组,而循环内部的细线则表示这是一个数组元

素。数组元素在每个循环期间将自动编号。

用自动索引功能设置 For 循环的计数器

注意,计数器端子还没有连线。当您对某个进入For

循环的数组使用自动索引功能时,循环就将根据数组的大小执行

相应的次数,这样就无需连接某个值到计数器的端口。如果对一

个以上的数组使用自动索引功能,或者在使用自动索引功能之外

还需要设置计数器时,实际的循环次数将是其中最小的数。

3.执行该VI。在输入的八个数中,可以看到4个属于正

数数组,另外4个属于负数数组。

4.从流程图中将一个值为5的常数对象连接到For 循环

的计数器端子。执行该 VI。可以看到尽管输入数组仍然有八个

元素,但是3个位于正数数组,另外2个位于负数数组。这说明,

如果设置了N并开启了自动索引功能,那么实际循环的次数将取

较小的数。

5.关闭该VI,不要保存任何修改。

注:练习3-2的算法说明

下面是一段伪代码,解释上面的算法,假定输入数组为A(已

赋值),B(正数)、C(负数)。Sbr 、Scr分别是与B数组、

C数组对应的右寄存器数组,Sbl 、Scl分别是与B数组、C数

组对应的左寄存器数组,size运算为测数组实际大小,ins运算

为将一个数插入数组中最左边的空位。

练习3-2结束。

3.3数组功能函数

LabVIEW提供了很多用于操作数组的功能函数,位于

Functions?Array中。其中包括Replace Array Element,、Search 1D

Array、Sort 1D Array、Reverse 1D Array和Multiply Array

Elements等等。

创建数组——Build Array函数(Functions?Array),用于根据标量值或者其他的数组创建一个数组。

开始时,Build Array函数具有一个标量输入端子。您可以根据需要向该功能函数中加入任意数量的输入,输入可以是标量或者数组。如果要添加其他的输入,用鼠标单击函数的左侧,在弹出菜单中选择Add Element Input或者Add Array Input。还可以用变形工具来增大节点的面积(把移位工具放置在某个对象的边角就会变成变形光标)。也可以使用变形光标或者选择Remove Input来删除输入。

下图显示了利用流程图中的常数对象的值创建和初始化数组的两种方法。左侧的方法是,将5个字符串常数放入一个一维字符串数组中。右侧的方法是,将三组数值常数放入三个一维数值数组,再将这三个数组组成一个二维数组。这样最后产生的是一个3x3的数组,三列分别是3, 4, 7; –1, 6, 2; 5, –2, 8.。

还可以通过结合其他的含有标量元素的数组来创建数组。例如,假设有两个数组,三个标量元素,可把它们组成一个新的数组,顺序是:数组1,标量1,标量2,数组2,标量3。

●初始化数组(Initialize Array)——用于创建所有元素值都相等的数组。下图

中,该功能函数创建了一个一维数组。

元素输入端子决定每个元素的数据类型和数值,维长度输入端子决定数组的长度,例如,假设元素类型是长整型,值为5,维长度为100,那么创建的数组是一个一维的、由100个值为5的长整型元素组成的数组。也可以从前面板控制端子、流程图常数或者程序其他部分的计算结果得到输入。

创建和初始化一个多维数组的方法是,用鼠标右键单击函数的右下侧,在弹出菜单中选择Add Dimension。还可以使用变形光标来增大初始化数组节点的面积,为每个增加的维添加一个维长度输入端子。也可以通过缩小节点的方法来删除维,即从函数的弹出菜单中选择Remove Dimension,或者使用变形光标。下面的示意图显示了怎样初始化一个三维数组。

如果所有的维长度输入都是0,该函数会创建一个具有指定数据类型和维数的空数组。

●数组大小——Array Size函数,返回输入数组中的元素个数。

●数组子集(Array Subset)——选取数组或者矩阵的某个部分。

该函数可以返回从某个指针开始的部分数组,并包括了长度元素。下图显示了一些数组子集的例子,注意,数组索引从0开始。

●索引数组(Index Array)——用于访问数组中的某个元素。

下图显示了一个索引函数的例子,它用于访问数组中的第三个元素。注意,因为第一个元素的索引为0,所以第三个元素的索引是2。

将一个二维数组与Index Array函数相连,Index Array就会含2个索引端子。将一个三维数组与Index Array函数相连,Index Array就会含3个索引端子。余类推。可以使用的索引端的符号是一个黑方快,被禁止使用的索引端(Disable Indexing)是一个空心的小方框。当给一个被禁止使用的索引端连接上一个Constant 或Control是它会自动变为黑方快,即变为可以索引,相反原来一个可以使用的索引端上连接的Constant 或Control被删去时,索引端符号会自动变为空心的小方框,即变为禁止使用。

也可以按照任何维的组合提取子数组,下面的示意图显示了怎样从一个二维数组中提取一个一维的行或者列数组。

还可以从一个三维数组中提取一个二维数组,方法是禁止两个索引端子,或者通过禁止一个索引端子提取一个一维数组。下图显示了从三维数组提取数组的各种方法。

下面的规则对使用剪切数组进行了规定:

输出对象的维数必须等于被禁止的索引端口的数目。例如

0个索引端口被禁止=标量元素

1个索引端口被禁止=二维元素

2个索引端口被禁止=三维元素

启动的端子所连接的数值必须指定输出元素。

这样,您就可以理解,上图中左下方的例子的作用是,利用0列和3行的所有元素产生一个一维数组,而右上方的例子的作用是利用第一帧中的所有元素产生一个二维数组。新的第0个元素是与原有元素最近的元素。

练习3-3使用创建数组功能函数

目的:使用创建数组函数,把一些元素和输出组织成一个更大的数组。

图3-8练习3-3的面板和框图

1.按照图3-8创建一个前面板。

2.从Controls?Numeric模板中选择一个数字控制对象放

置在前面板中,设置它的标签为scalar 1。

3.复制并粘贴该数字显示对象,创建两个新的对象,并分

别设置它们的标签为scalar 2和scalar 3。

4.创建一个数字控制对象的数组,设置它的标签为array

1。复制并粘贴它,创建一个新的数组,设置它的标签为array 2。

5.在array 1、scalar 1、 scalar 2、scalar 3、array

2中输入数值1到9。

6.创建流程图。选择Functions?Array,在流程图中放置

一个Build Array功能函数。用定位工具增大函数额面积,以容

纳5个输入。

7.把数组和标量与Build Array连接起来。创建输出的一

维数组,它由 array 1、scalar 1、 scalar 2、array 2、scalar

3中的元素所组成,如图所示。

8.执行该VI。可以看到array 1、scalar 1、 scalar 2、

scalar 3、array 2中的数值出现在同一个一维数组中。

9.保存该VI为LabVIEW\Activity目录下的Build

Array.vi。

练习3-3结束。

3.4什么是多态化(Polymorphism)?

多态化是指一种函数功能,即可以协调不同格式、维数或者

显示的输入数据。大多数LabVIEW的函数都是多态化的。例如,

图3-9给出了Add函数的一些多态化组合。

图3-9多态化组合的例子

第一个组合中,两个标量相加,结果还是一个标量。第二个

组合中,该标量与数组中的每个元素相加,结果是一个数组。数

组是数据的集合。第三个组合中,一个数组的每个元素被加到另

一个数组的对应元素中。您还可以使用其他的组合,例如数值簇

或者簇数组。

可以把这些准则应用到其他的G语言函数或者数据类型。G

语言函数对于各种情况都具有多态性功能。有些函数接受数值和

布尔输入,而有些函数接受其他任何数据格式的组合。如果您想

了解更多关于多态化的知识,请参阅Online

Reference?Function and VI Reference。

3.5簇

3.5.1创建簇控制和显示

在前面板上放置一个簇壳(Cluster shell)就创建了一个簇。

然后你可以将前面板上的任何对象放在簇中。例如数组,你也

可以直接从Control 工具板上直接拖取对象堆放到簇中。一个簇

中的对象必须全部是Control,或全是Indicator,不能在同一个

簇中组合Control与Indicator,因为簇本身的属性必须是其中之

一。一个簇将是Control或Indicator,取决于其内的第一个对象

的状态。如果需要可以使用工具重置簇的大小。右图所示是一

个含4个Control的簇。也可以在流程图上用类似的方法创建簇

常数。

如果你要求簇严格地符合簇内对象的大小,可在簇的边界上弹出快速菜单选择自动定义大小(Autosizing)

簇的序(Order)

簇的元素有一个序,它与簇内元素的位置无关。簇内第一个元素的序为0,第二个是1,等等。如果你删除了一个元素,序号将自动调整。如果你想将一个簇与另一个簇连接,这两个簇的序和类型必须同一。

如果想改变簇内元素的序,可在快速菜单中选择Claster Order ,这时会出现一个窗口,在该窗口内可以修改序。

3.5.2 使用簇与子VI 传递数据

一个VI 的连接窗口最大有28个端子,如果你不希望使用全部28个端子传递数据,这既烦琐又易出错。通过把控制或显示对象捆绑成一个簇的方法,仅使用一个端子就可以实现该功能。

● 捆绑(Bundle )数据

Bundle 功能将分散的元件集合为一个新的簇,或允许你重置

一个已有的簇中的元素。可以用位置工具拖曳其图标的右下角以

增加输入端子的个数。最终簇的序是取决于被捆绑的输入的顺序。

右图中Bundle 图标中部的Claster 端子用于用新元素重置原簇中的元素。

● 分解(Unbundle )簇

Unbundle 功能是Bundle 的逆过程,它将一个簇分解为若干分

离的元件。如果你要对一个簇分解,就必须知道它的元素的个数。

LabVIEW 还提供一种可以根据元素的名字来捆绑或分解簇的方

法,稍后介绍。

练习 3-4 簇

目的:学习创建簇、分解簇,再捆绑簇并且在另一个簇中显示其内容。

图3-10 练习3-4的面板和框图

1.打开前面板,创建一个簇壳(Array & Cluster palette ),标签改为Input Cluster ,拖曳至

适当大小。

2.在这个簇壳中放置一个数字Control ,两个布尔开关,和一个串Control 。

3.仿照以上步骤,创建Output Cluster 如上。注意将各Control 改为相应的indicator 。

4.用快速菜单查看两个簇的序是否一致,若有差别,改之。

5.在前面板上设置一个[STOP]按钮。注意其缺省值为FALSE ,不要改变它的状态。

6.建立如上面所示的流程图。注意在[STOP]按钮与循环条件端子之间接入了一个NOT 函

数,因为按钮缺省值为FALSE ,经NOT 函数后变为TRUE ,这就意味着当按钮状态不变时,循环继续执行,相反一旦按钮动作,则循环终止。

7.返回前面板并运行VI 。在输入簇中输入不同的值观察输出。

8.关闭并保存程序。Cluster Exercise.vi

练习 3-4 结束

3.5.3 用名称捆绑与分解簇

有时你并不需要汇集或分解整个簇,而仅仅需要对其一、两个元素操作。这时你可以用名称来捆绑与分解簇。在Cluster 工具模板中除了Bundle 及Unbundle 功能外,还提供有Bundle By Name 和Unbundle By Name 功能。它们允许根据元素的名称(而不是其位置)来查询元素。与Bundle 不同,使用Bundle By Name 可以访问你需要的元素,但不能创建新簇;它只能重置一个已经存在的簇的元素,同时你必须给Bundle By Name 图标中间的输入端子一个输入以申明要替换其元素的簇。Unbundle 可返回指定名称的簇元素,不必考虑簇的序和大小。例如,如果你想重置上例中Boolean 2的值,就可以使用Bundle By Name 功能而不必担心簇的序和大小。与此类似如果你要访问串的值,可以使用Unbundle By Name 功能。

图3-11 用名称操作簇

在上面的例子中,Cluster Control 中有两个元素,一个是数据类型(名称是Numeric ),另一个是字符串型(名称是String ),另一个控制是字符串“ABCD ”,框图如右所示,运行该程序,即可将簇内的字符串值重置。

3.5.4 数组和簇的互换

有时你会发现,将数组变为簇(或者相反)很方便。尤其是因为LabVIEW 包括的关于数组的操作功能多于簇。例如,前面板上有一个多按钮的簇,你希望颠倒这些按钮值的序。好了,Reverse 1D Array 功能正好可用,但是它仅可用于数组。这没关系,你可以使用功能Cluster to Array 将簇转换为数组,使用Reverse 1D Array 切换开关的值,最后再利用Array to Claster 变换回簇。

3.6 Waveform 数据类型

在数据采集和信号分析中经常要遇到波形数据,在LabVIEW 6i中增加了Waveform数据类型,使得波形的描述更加简洁。Waveform数据类型包含了波形的数据(Y)、起始时刻(t0)和步长ΔX,使用Waveform 模板的Build Waveform 函数可以建立一个波形。许多用于数据采集和波形分析的VI和函数的缺省状态都接受或返回Waveform数据类型。当你将一个Waveform数据类型连接到Waveform Graph或Chart时,会自动画出相应的曲线。Waveform 数据类型是根据原有的数据类型进一步“打包”组合而成,这种打包也不可避免地带来一些负作用,有时还需要对Waveform数据类型“解包”。有关这一数据类型的函数或VI在Functions?Waveform和Analyze之中。

图3-12使用Waveform的波形发生例子

图3-12是一个使用Waveform函数产生正弦波的例子。其中仅仅调用了Sine Waveform一个函数,只要将有关参数指定,就可产生正弦波。Sine Waveform实际上是一个子VI,点击其图标,就可看到下层的程序,还是比较复杂的。在LabVIEW 6i以前的版本中用户就需要那样去编程。

实验三 数组和字符串

实验三数组和字符串 一、实验目的 1.掌握Java中的数组定义、引用 2.掌握向量的基本概念和应用技术 3.掌握使用字符串String类处理字符串的方法 4.掌握使用字符串StringBuffer类处理字符串的方法 5.掌握Date类以及Calendar类的常用方法; 二、实验内容 1.使用https://www.doczj.com/doc/6910067212.html,ng.Math类,生成100 个100~999 之间的随机整数,找出他们之中的最大的和最小的,并统计随机产生的大于300 的整数个数。 package exercise; publicclass shiyan3_1 { publicstaticvoid main(String [] args) { int count=0; int max=0; int min=Integer.MIN_VALUE; int num[]=newint[100];//声明并创建一个具有100 个元素的整型数组对象num int i; for(i=1;i<=100;i++) { num[i-1]=100+(int)(Math.random()*899); System.out.print(num[i-1]+"\t");//随机产生一个100~999 之间的随机整数 if(i % 10 == 0) System.out.println();//输出当前产生的随机数,并一行输出10 个数 if(num[i-1]>max) max=num[i-1]; if(num[i-1]300) count++; } System.out.println("最大的随机整数是:"+max); System.out.println("最小的随机整数是:"+min); System.out.println("大于300 的整数个数是:"+count); } }

数组与簇的使用

西安文理学院 机械与材料工程学院实验报告课程名称:虚拟仪器 实验项目:数组与簇的操作 专业:测控技术与仪器 班级:2012级02班 姓名:罗蒙 学号:0703110217

一、程序设计思路 本次实验通过三个程序设计,来完成labview的熟悉以及掌握数组与簇的使用和创建方法 1.题目要求: 认识和熟悉数组:创建3行4列的数值。(1)求数组的的最大值和最小值;(2)求出创建数组的大小(3)将该数组倒置;(4)将该二维数组改为一个一维数组设计思路 创建For循环生成数组,使用数组控制控件,完成设计。 2.题目要求 认识和熟悉簇,使用簇实现虚拟温度计:在前面板中显示两个簇,分别是温度适配器和温度显示器。前面板如实验4.2所示 设计思路: 使用条件结构以及簇实现虚拟温度计的设计,其他设计思路与实验二中的虚拟温度计设计思路相同 3.题目要求 设计掷骰子游戏,骰子点数为1~6,可预先设置骰子投掷次数,并统计骰子各点数投掷次数 设计思路 使用For循环,循环次数为预置投掷次数,并使用随机数以及数组控件等合理分配实现设计 二、前面板设计 图1-1-1

图1-2-1 图1-3-1 三、程序框图设计 图1—1—2

图1-2-2 图1-3-2 四、调试运行结果 经过调试运行,各个程序都能够完整的执行相应的程序过程。下面是分别的实验结果:

图1-1-3 图1-2-3 图1-3-3 五、实验小结 通过实验,大致了解到了LabVIEW2012的基本操作流程,掌握了创建、

编辑、运行调试VI程序的方法和步骤。在思路上得到了拓宽,学到了整体化,结构化的思维方式。同时,这个软件很实用,很容易理解,方便学习和操作。

数据结构练习题第三章栈、队列和数组习题与答案

第三章栈、队列和数组 一、名词解释: 1.栈、栈顶、栈底、栈顶元素、空栈 2.顺序栈 3.链栈 4.递归 5.队列、队尾、队头 6.顺序队 7.循环队 8.队满 9.链队10.随机存储结构11.特殊矩阵12.稀疏矩阵13.对称方阵14.上(下)三角矩阵 二、填空题: 1.栈修改的原则是_________或称________,因此,栈又称为________线性表。在栈顶 进行插入运算,被称为________或________,在栈顶进行删除运算,被称为________ 或________。 2.栈的基本运算至少应包括________、________、________、________、________五 种。 3.对于顺序栈,若栈顶下标值top=0,此时,如果作退栈运算,则产生“________”。 4.对于顺序栈而言,在栈满状态下,如果此时在作进栈运算,则会发生“________”。 5.一般地,栈和线性表类似有两种实现方法,即________实现和________实现。 6.top=0表示________,此时作退栈运算,则产生“________”; top=sqstack_maxsize-1表示________,此时作进栈运算,则产生“________”。 7.以下运算实现在顺序栈上的初始化,请在________处用适当的句子予以填充。 int InitStack(SqStackTp *sq) { ________; return(1);} 8.以下运算实现在顺序栈上的进栈,请在________处用适当的语句予以填充。 Int Push(SqStackTp *sq,DataType x) { if(sp->top==sqstack_maxsize-1}{error(“栈满”);return(0);} else{________________: ________________=x; return(1);} } 9.以下运算实现在顺序栈上的退栈,请在________________用适当句子予以填充。 Int Pop(SqStackTp *sq,DataType *x) {if(sp->top==0){error(“下溢”);return(0);} else{*x=________________; ________________; return(1);} } 10. 以下运算实现在顺序栈上判栈空,请在________________处用适当句子予以填充。 Int EmptyStack(SqStackTp *sq) {if(________________) return(1); else return(0); } 11.以下运算实现在顺序栈上取栈顶元素,请在________________处用适当句子予以填充。 Int GetTop(SqStackTp *sq,DataType *x)

第三章lAB VIEW 数组、簇和图形1

第三章数据类型:数组、簇和波形 3.1概述 数组是同类型元素的集合。一个数组可以是一维或者多维, 如果必要,每维最多可有231-1个元素。可以通过数组索引访问 其中的每个元素。索引的范围是0到n – 1,其中n是数组中 元素的个数。图3-1所显示的是由数值构成的一维数组。注意 第一个元素的索引号为0,第二个是1,依此类推。数组的元素 可以是数据、字符串等,但所有元素的数据类型必须一致。 图3-1数组示意图 簇(Cluster)是另一种数据类型,它的元素可以是不同类 型的数据。它类似于C语言中的stuct。使用簇可以把分布在流 程图中各个位置的数据元素组合起来,这样可以减少连线的拥挤 程度。减少子VI的连接端子的数量。 波形(Waveform)可以理解为一种簇的变形,它不能算是一种有普遍意义的数据类型,但非常实用。 3.2数组的创建及自动索引 3.2.1创建数组 一般说来,创建一个数组有两件事要做,首先要建一个数组的“壳”(shell),然后在这个壳中置入数组元素(数或字符串等)。 如果需要用一个数组作为程序的数据源,可以选择 Functions?Array?Array Constant,将它放置在流程图中。然后 再在数组框中放置数值常量、布尔数还是字符串常量。下图显示 了在数组框放入字符串常量数组的例子。左边是一个数组壳,中 间的图上已经置入了字符串元素,右边的图反映了数组的第0个 元素为:”ABC”,后两个元素均为空。 图3-1数组的创建

在前面板中创建数组的方法是,从Controls模板中选择 Array & Cluster,把数组放置在前面板中,然后选择一个对象 (例如数值常量)插入到数组框中。这样就创建了一个数值数组。 也可以直接在前面板中创建数组和相应的控制对象,然后将 它们复制或者拖曳到流程图中,创建对应的常数。 还有很多在流程图中创建和初始化数组的方法,有些功能函 数也可以生成数组。 3.2.2数组控制对象、常数对象和显示对象 通过把数组与数值、布尔数、字符串或者簇组合在一起,可以在前面板和流程图中创建任何一种控制对象、常数对象和显示对象。数组元素不能是数组、图表或者图形。如果您想查看一些数组的例子,请查看Examples\General\arrays.llb中的例子。 3.2.3自动索引 For循环和While循环可以自动地在数组的上下限范围内编索引和进行累计。这些功能称为自动索引。在启动自动索引功能以后,当把某个外部节点的任何一维元素连接到循环边框的某个输入通道时,该数组的各个元素就将按顺序一个一个地输入到循环中。循环会对一维数组中的标量元素,或者二维数组中的一维数组等编制索引。在输出通道也要执行同样的工作――数组元素按顺序进入一维数组,一维数组进入二维数组,依此类推。 在默认情况下,对于每个连接到For循环的数组都会执行自 动索引功能。可以禁止这个功能的执行,方法是用鼠标右键单击 通道(输入数组进入循环的位置),在快捷菜单中选择Disable Indexing。 练习3-1创建一个自动索引的数组 目的:使用 For 循环的自动索引功能创建数组,并用一个图形(Graph)显示该数组。 前面板 图3-2练习3-1的面板 1.打开一个新的前面板。 2.选择Controls?Array & Cluster,在前面板 中放置一个数组。设置它的标签为Waveform Array。 3.选择Controls?Numeric,在

第三章栈和队列习题_数据结构电子教案

习题三栈和队列 一单项选择题 1. 在作进栈运算时,应先判别栈是否(① ),在作退栈运算时应先判别栈是否(② )。当栈中元素为n个,作进栈运算时发生上溢,则说明该栈的最大容量为(③ )。 ①, ②: A. 空 B. 满 C. 上溢 D. 下溢 ③: A. n-1 B. n C. n+1 D. n/2 2.若已知一个栈的进栈序列是1,2,3,…,n,其输出序列为p1,p2,p3,...,pn,若p1=3,则p2为( )。 A 可能是2 B 一定是2 C 可能是1 D 一定是1 3. 有六个元素6,5,4,3,2,1 的顺序进栈,问下列哪一个不是合法的出栈序列?() A. 5 4 3 6 1 2 B. 4 5 3 1 2 6 C. 3 4 6 5 2 1 D. 2 3 4 1 5 6 4.设有一顺序栈S,元素s1,s2,s3,s4,s5,s6依次进栈,如果6个元素出栈的顺序是s2,s3,s4, s6, s5,s1,则栈的容量至少应该是() A.2 B. 3 C. 5 D.6 5. 若栈采用顺序存储方式存储,现两栈共享空间V[1..m],top[i]代表第i个栈( i =1,2)栈顶,栈1的底在v[1],栈2的底在V[m],则栈满的条件是()。 A. |top[2]-top[1]|=0 B. top[1]+1=top[2] C. top[1]+top[2]=m D. top[1]=top[2] 6. 执行完下列语句段后,i值为:() int f(int x) { return ((x>0) ? x* f(x-1):2);} int i ; i =f(f(1)); A.2 B. 4 C. 8 D. 无限递归 7. 表达式3* 2^(4+2*2-6*3)-5求值过程中当扫描到6时,对象栈和算符栈为(),其中^为乘幂。 A. 3,2,4,1,1;(*^(+*- B. 3,2,8;(*^- C. 3,2,4,2,2;(*^(- D. 3,2,8;(*^(- 8. 用链接方式存储的队列,在进行删除运算时()。 A. 仅修改头指针 B. 仅修改尾指针 C. 头、尾指针都要修改 D. 头、尾指针可能都要修改 9. 递归过程或函数调用时,处理参数及返回地址,要用一种称为()的数据结构。 A.队列 B.多维数组 C.栈 D. 线性表 10.设C语言数组Data[m+1]作为循环队列SQ的存储空间, front为队头指针,rear为队尾指针,则执行出队操作的语句为() A.front=front+1 B. front=(front+1)% m C.rear=(rear+1)%(m+1) D. front=(front+1)%(m+1) 11.循环队列的队满条件为 ( ) A. (sq.rear+1) % maxsize ==(sq.front+1) % maxsize; B. (sq.front+1) % maxsize ==sq.rear C. (sq.rear+1) % maxsize ==sq.front D.sq.rear ==sq.front

java第三章上机练习题

习题1. 数据类型转换应用 【案例简介】下例说明了整型、浮点型、字符串型之间的相互转换。 【案例目的】掌握Java中两个不兼容类型能够的数据格式之间的转换。 【技术要点】高精度到低精度的数据转换时候需要进行强制转换,低精度向高精度进行转换的时候的会自动进行,字符串到其他类型的转换需要用到特定的方法。 【代码分析】 public class Conversation { public static void main(String [] args) { String str = "123"; int j; byte b; int i=257; double d = 323.142; System.out.println("\nConversion of int to byte."); //i强制转换成byte型 System.out.println("i and b "+ i + " "+b); System.out.println("\nConversion of double to int."); //d强制转换成int型 System.out.println("d and i "+ d + " "+i); //d强制转换成byte型 System.out.println("d and b "+ d + " "+b); j=Integer.parseInt(str); //str转换成int型 System.out.println("j="+j); } } 【相关知识】 数据类型转换 (1)简单数据类型中各类型数据间的优先关系和相互转换 不同类型数据间的优先关系如下 低----------------------------------------------->高 byte->short->char-> int -> long -> float -> double 自动类型转换规则 整型,实型,字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算,转换从低级到高级。 (2)强制类型转换 高级数据要转换成低级数据,需用到强制类型转换,如: int i; byte b=(byte)i; //把int型变量i强制转换为byte型 (3)其他转换 数字变为字符串 用如下方法转换相应类型的数字: Double.toString(double); Float.toString(float);

lABVIEW关于数据类型的编辑:数组、簇和波形

数据类型:数组、簇和波形 .1概述 数组是同类型元素的集合。一个数组可以是一维或者多维,如果必要,每维最多可有231-1个元素。可以通过数组索引访问其中的每个元素。索引的范围是0到n – 1,其中n是数组中元素的个数。图3-1所显示的是由数值构成的一维数组。注意第一个元素的索引号为0,第二个是1,依此类推。数组的元素可以是数据、字符串等,但所有元素的数据类型必须一致。 图3-1数组示意图 簇(Cluster)是另一种数据类型,它的元素可以是不同类 型的数据。它类似于C语言中的stuct。使用簇可以把分布在流 程图中各个位置的数据元素组合起来,这样可以减少连线的拥挤 程度。减少子VI的连接端子的数量。 波形(Waveform)可以理解为一种簇的变形,它不能算是一种有普遍意义的数据类型,但非常实用。 3.2数组的创建及自动索引 3.2.1创建数组 一般说来,创建一个数组有两件事要做,首先要建一个数组的“壳”(shell),然后在这个壳中置入数组元素(如果需要用一个数组作为程序的数据源,可以选择Functions?Array?Array Constant,将它放置在流程图中。然后再在数组框中放置数值常量、布尔数还是字符串常量。下图显示了在数组框放入字符串常量数组的例子。左边是一个数组壳,中间的图上已经置入了字符串元素,右边的图反映了数组的第0个元素为:”ABC”,后两个元素均为空。 图3-1数组的创建 在前面板中创建数组的方法是,从Controls模板中选择 Array & Cluster,把数组放置在前面板中,然后选择一个对象 (例如数值常量)插入到数组框中。这样就创建了一个数值数组。 也可以直接在前面板中创建数组和相应的控制对象,然它们

第3章 数组

第4章数组 一、一维数组 1.若有说明:int a[][3]={1,2,3,4,5,6,7}; 则a数组第一维的大小是【】 2. 下面程序的运行结果是【5】 #include "stdio.h" main() { int i, f[10]; f[0]=1; f[1]=1; for (i=2; i<10; i++) f[i]=f[i-2]+f[i-1]; for (i=0; i<10; i++) { if (i%4==0) printf("\n"); printf("%3d", f[i]); } } 3.在C语言中,引用数组元素时,其数组下标的数据类型允许是【】A)整型常量B)整型表达式 C)整型常量或整型表达式C)任何类型的表达式 4.若有说明:int a[10];则对数组元素的正确引用是【】 A) a[10]; B)a[3.5] C)a(5) D)a[10-10] 5.以下能正确定义一维数组的选项是 A) int num []; B) #define N 100 Int num [N]; C) int num[0..100]; D) int N=100; 6.以下程序中函数reverse的功能是将a所指数组中的内容进行逆置。 #include "stdio.h" void reverse(int a[ ],int n) { int i,t; for(i=0;i

reverse(b,8); for(i=6;i<10;i++) s+=b[i]; printf(“%d\n”,s); } 程序运行后的输出结果是 A)22B) 10 C) 34 D) 30 7.以下程序的输出结果是 #include "stdio.h" f(int b[],int m,int n) { int i,s=0; for(i=m;i=0;i--) a[i]=10-i; printf(“%d%d%d”,a[2],a[5],a[8]); } A) 258 B) 741 C) 852 D) 369 11.以下程序运行后的输出结果是【】 #include "stdio.h"

labview数组、簇和图形的区别

数组是同类型元素的集合。一个数组可以是一维或者多维, 如果必要,每维最多可有231-1个元素。可以通过数组索引访问 其中的每个元素。索引的范围是0到n – 1,其中n是数组中 元素的个数。图3-1所显示的是由数值构成的一维数组。注意 第一个元素的索引号为0,第二个是1,依此类推。数组的元素 可以是数据、字符串等,但所有元素的数据类型必须一致。 图3-1数组示意图 簇(Cluster)是另一种数据类型,它的元素可以是不同类 型的数据。它类似于C语言中的stuct。使用簇可以把分布在流 程图中各个位置的数据元素组合起来,这样可以减少连线的拥挤 程度。减少子VI的连接端子的数量。 波形(Waveform)可以理解为一种簇的变形,它不能算是一种有普遍意义的数据类型,但非常实用。 3.2数组的创建及自动索引 3.2.1创建数组 一般说来,创建一个数组有两件事要做,首先要建一个数组的“壳”(shell),然后在这个壳中置入数组元素(数或字符串等)。 如果需要用一个数组作为程序的数据源,可以选择 Functions?Array?Array Constant,将它放置在流程图中。然后 再在数组框中放置数值常量、布尔数还是字符串常量。下图显示 了在数组框放入字符串常量数组的例子。左边是一个数组壳,中 间的图上已经置入了字符串元素,右边的图反映了数组的第0个 元素为:”ABC”,后两个元素均为空。 图3-1数组的创建 在前面板中创建数组的方法是,从Controls模板中选择 Array & Cluster,把数组放置在前面板中,然后选择一个对象 (例如数值常量)插入到数组框中。这样就创建了一个数值数组。 也可以直接在前面板中创建数组和相应的控制对象,然后将

实验三.数组与字符串

1.实验三数组与字符串 一、实验目的: 1.熟悉Java的数组的使用,编程练习数组声明、定义、遍历和排 序等操作。 2.熟悉Java的字符串相关类的使用,通过编程实现针对字符串的 一般操作。 二、实验内容: 1.定义一个有10个元素的整型数组,找出最大最小值; 2.定义一个有10个元素的整型数组,用选择法实现由小到大排序; 3.定义一个能实现冒泡法排序的方法bSort(int[] arr),然后定义并 初始化一4*5的二维数组,用bSort(int[] arr)将该二维数组的每 行元素进行升序排序; 4.编程求解一个3*3矩阵每一行的元素之和,每一列元素之和,对 角线元素之和,并输出。 5.接收键盘输入的字符串,使用String类的方法indexOf()来统 计该字符串中各个字符出现的次数。 6.设定并初始化一个字符串数组,并将数组中那些以字母b开头的 元素打印出来。 7.接收键盘输入的字符串,分别按顺序输出该字符串中的大写字符 和小写字符。 8.接收键盘输入的英文字符串(单词之间用空格隔开),将字符串 中出现的单词首字母改成大写后输出。 三、实验要求: 1.通过实验掌握数组的定义和初始化; 2.掌握数组最值求解算法; 3.掌握数组的基本排序算法; 4.掌握遍历数组的算法; 5.通过实验掌握String类的使用; 6.通过实验掌握String类常用方法的使用;

7.从JDK文档中查阅String类的以下方法(与本实验内容相关): split(),startWith(),toUpperCase(),indexOf(),charAt(),并说明 它们的用法; 8.写出实验报告。 四、实验学时:3学时 五、实验步骤: 1.进入Java编程环境; 2.新建一个Java文件,编写main()方法实现一维数组求最值的算 法; 3.新建一个Java文件,编写main()方法实现一维数组选择法排序 算法; 4.新建一个Java类,定义bSort(int[] arr)方法(冒泡法)实现数组 升序排序,然后在main方法里实现对一4*5二维数组每行元素 的升序排序; 5.新建一个Java文件,编写main()方法声明并初始化一两维3*3 数组,设计算法实现行、列和对角线元素的求和操作; 6.编写主方法main(),其中实现接收键盘输入功能、文件操作功能 和文件内容输出功能; 7.调用相应构造方法创建String对象; 8.查阅JDK文档,找出可以实现实验内容的String方法,设计算 法,编写程序; 9.调试运行程序,观察输出结果。

数据结构练习题 第三章 栈、队列和数组 习题及答案备课讲稿

数据结构练习题第三章栈、队列和数组 习题及答案

第三章栈、队列和数组 一、名词解释: 1.栈、栈顶、栈底、栈顶元素、空栈 2.顺序栈 3.链栈 4.递归 5.队列、队尾、队头 6.顺序队 7.循环队 8.队满 9.链队10.随机存储结构11.特殊矩阵12.稀疏矩阵13.对称方阵14.上(下)三角矩阵 二、填空题: 1.栈修改的原则是_________或称________,因此,栈又称为________线性 表。在栈顶进行插入运算,被称为________或________,在栈顶进行删 除运算,被称为________或________。 2.栈的基本运算至少应包括________、________、________、________、 ________五种。 3.对于顺序栈,若栈顶下标值top=0,此时,如果作退栈运算,则产生 “________”。 4.对于顺序栈而言,在栈满状态下,如果此时在作进栈运算,则会发生 “________”。 5.一般地,栈和线性表类似有两种实现方法,即________实现和________ 实现。 6.top=0表示________,此时作退栈运算,则产生“________”; top=sqstack_maxsize-1表示________,此时作进栈运算,则产生 “________”。 7.以下运算实现在顺序栈上的初始化,请在________处用适当的句子予以 填充。

int InitStack(SqStackTp *sq) { ________; return(1);} 8.以下运算实现在顺序栈上的进栈,请在________处用适当的语句予以填 充。 Int Push(SqStackTp *sq,DataType x) { if(sp->top==sqstack_maxsize-1}{error(“栈满”);return(0);} else{________________: ________________=x; return(1);} } 9.以下运算实现在顺序栈上的退栈,请在________________用适当句子予 以填充。 Int Pop(SqStackTp *sq,DataType *x) {if(sp->top==0){error(“下溢”);return(0);} else{*x=________________; ________________; return(1);} } 10. 以下运算实现在顺序栈上判栈空,请在________________处用适当句子予以填充。 Int EmptyStack(SqStackTp *sq) {if(________________) return(1); else return(0); } 11.以下运算实现在顺序栈上取栈顶元素,请在________________处用适当句子予以填充。 Int GetTop(SqStackTp *sq,DataType *x) {if(________________) return(0); else{*x=________________; return(1);} }

第3章数组及矩阵运算

第三章 数组与矩阵及其基本运算 3.1 数组 3.1.1数组与矩阵的输入 1. 直接输入法 对于规模较小的矩阵,可直接在MATLAB 命令窗输入,也可在程序编辑器中写入程序,矩阵元素值还可在变量浏览器修改。 矩阵所有元素包含在“[]”内,同行元素之间用“,”隔开,也可用空格,两行元素用“;”分开,矩阵元素可以是数值,也可以是表达式。 【例3-1】输入矩阵???? ? ?????=987654321A 。 解:(1)在键盘上输入下列内容 A = [1,2,3; 4,5,6; 7,8,9] (2)按【Enter 】键,指令被执行,工作窗将显示以下结果: A = 1 2 3 4 5 6 7 8 9 也可输入:A = [1 2 3; 4 5 6; 7 8 9] %同行元素之间用空格 或 A=[1 2 3; 4 5 6; 7 8 9] 【例3-2】已知B=2+3i ,输入矩阵?? ?? ??????+=9872*6)5(4323 /1B sqrt A 。 解:(1)在键盘上输入下列内容 A = [1/3,2,3; 4,sqrt(5),6*B+2; 7,8,9] (2)按【Enter 】键,指令被执行,工作窗将显示以下结果: A = 0.3333 2.0000 3.0000 4.0000 2.2361 14.0000 +18.0000i 7.0000 8.0000 9.0000 【例3-3】用下面三条指令创建二维数组C 。 解:(1)在键盘上输入下列内容 a=sqrt(2); b=33^0.5; C=[1,1/a+i*b,b*sqrt(a);sin(pi/6),a+b,3+2i] (2)按回车后得: C = 1.0000 0.7071 + 5.7446i 6.8315 0.5000 7.1588 3.0000 + 2.0000i 复数矩阵的输入见例2-2、例2-3。 【例3-4】输入矩阵?? ? ? ??++++++=i i i i i i CN 166155144133122111。 解:在键盘上输入下列内容后,按回车后得CN 矩阵。 M_1=[1,2,3;4,5,6],M_2=[11,12,13;14,15,16]; CN=M_1+i*M_2 【例3-5】将时间轴t 在[-1,6]之间等分,间距为0.2,求等分后的t 数组。

matlab 第三章 字符串、元胞和构架数组

内容简介 本书由纸质媒体和电子媒体有机结合而成。纸质媒体便于读者进行系统、全面、长时间连续地阅读,便于随心的翻阅、浏览;而电子媒体向读者提供色彩信息、动态交互的软件环境,提供读者实践本书内容所需的各种文件。 本书第一章系统讲述MATLAB6.5的集成工作平台,引导读者初会MATLAB基本用法。第二、三章系统叙述MATLAB6.1的四大基本数据类型(数值数组、字符串数组、元胞数组、构架数组),至于其它扩展数据类型(函数句柄、符号数据、内联函数、unit数组、稀疏类)则另辟章节专述。此后,本书用九个独立章分述MATLAB6.5的数值计算、符号计算、函数和数据可视、面向对象编程、GUI交互操作界面设计、EXE独立应用程序生成、实现不同软件平台交互的API、M-book 数据图形文字环境集成等八大通用功能。本书用专门的一章深入浅出地阐明SIMULINK的分层建模、仿真功能、与MATLAB交互的功能。 全书包含390多个计算范例。所有算例的程序是可靠、完整的。读者可以在自己的MATLAB环境中完全准确地重现本书所提供的算例结果。算例的举一反三,将使读者很快掌握要领,从模仿走向灵活应用。 书中正文(包括算例)所涉及的指令全部罗列在附录的“A索引”中,用户很容易根据关键字符找到相关的正文说明和算例应用。 本书随带包含700多个文件的光盘。光盘文件包含:可直接在Notebook中运行的全部算例的M-book DOC文件;可在MATLAB环境中直接运行的算例M和MDL文件;可供读者实践MATLAB编译器及API的所有文件;可在PowrPoint中放映幻灯的PPT文件。它们不仅有效地提供了纸质媒体所不具备的交互能力和色彩感染力,而且弥补了纸质媒体没有SIMULINK模型源码文件、没有PPT源码文件、没有编译源文件和验证文件的缺陷。 本书既可作为理工科院校研究生、本科生系统学习的教材,又可以作为广大科技工作者掌握和精通MATLAB的自学用书和使用手册。 作者简介 张志涌 1944年出生于无锡;教授,获政府专项津贴,IEEE高级会员,中国电子学会高级会员,江苏省自动化学会理事、网络与系统专委会主委;1967年毕业于清华大学自动控制系,1982年初在上海交通大学获控制理论硕士学位,1989—90年在荷兰王国Eindhoven技术大学研修系统辨识、故障诊断;主持并完成国家自然科学基金、省部基金及科研项目近十项,发表论文50余篇,著作1本。现主要从事自动控制教学和计算机控制、计算机仿真、故障诊断等研究。 1989年在荷兰用MATLAB3.0研究系统辩识和故障诊断;1992年对MATLAB3.0实现汉化并编写了相应讲义;在1994、95年借助于MATLAB3.5、4.0先后完成国家自然科学基金和国家教委留学生基金课题研究;1996年在省基金支持下从事MATLAB4.2c建立仿真实验室的研究,并于1997年编写出版《掌握和精通MATLAB》;1997年底获原邮电部预研经费资助开始了以MATLAB5.x为工具的智能技术研究。

簇(labview系列教程之八)

08、簇 簇 簇是一种类似数组的数据结构,用于分组数据。簇和数组有着重要的差别,其中一个重要差别是,簇可以包含不同的数据类型,而数组仅可以包含相同的数据类型。例如,一个数组可以包含10个数字指示器,一个簇却可以包含一个数字控件,一个开关和一个字符串控件。 尽管簇和数组的元素都是有序存放的,但访问簇的元素最好是通过释放的方法同时访问其中部分或全部元素,而不是通过索引一次访问一个元素。簇和数组的另一个差别是簇具有固定的大小。 簇通常用于将出现在框图上的有关数据元素分组管理。因为簇在框图中仅用唯一的连线表示,所以对于减少连线混乱和子VI需要的连接器端子个数,使用簇有着积极的效果。可以将簇看做是一捆连线,线缆中每一个连线表示簇的不同元素。在框图上,只有当簇具有相同类型,相同元素数量和相同元素顺序时,才可以将簇的子端连接。多态性应用于簇时,只需要簇具有同样顺序,同样数量的元素。 下面来向大家介绍簇的创建簇的创建框位于前面板中的控件→新式→数组,矩阵和簇 →簇,如图: 然后就可以往簇的框中添加各种类型的控件了,例如现在要建立一个学生的记录信息,包括学生的姓名,学号,性别和年龄.这就需要在簇外壳里依次放入两个字符串输入控件,一个数字控件和一个布尔控件.如图:

与数组的创建类似,簇也可以从程序框图中创建,先在程序框图上放置一个簇外壳,然后就可以在簇外壳里放置各种数据类型常数。如图: 簇内对象的大小是可以调整的,右击簇边界,在弹出的快捷菜单中可以选择各种调节操作,如图: 选择调整为匹配大小,即可缩小簇的边框,如图为调整后的结果:

簇结构中的元素排列是按照它们放置的先后来排序的,它与簇内元素的位置无关。放入簇内的第一个元素序号为0,第二个元素序号是1,依次向下排列。如果删除了一个元素,序号将重新自动调整。簇的排序很重要,它直接影响着后面将要介绍的“捆绑”以及“接触捆绑”函数的端口顺序,如果你想将一个簇与另一个簇连接,这两个簇的序和类型必须相同。 如果想要改变簇内元素的排列顺序,可以右击簇结构的边框,在弹出的快捷菜单中执行“重新排序簇中控件”,如图: 这时鼠标会变成一个带“#”号的手柄箭头,黑框指出新设置的排列序号,白框表示原先的排列序号,可以改变标题栏上的“单击设置”内容,然后单击簇元素即可设置新的序号。设置完毕后单击工具栏上的“”按钮确定更改,如果想恢复原先设定值,单击 “”取消设置。 b) 簇函数 簇函数的模版如图:

第三章 数组、簇和波形

第三章 数据类型:数组、簇和波形 3.1 概述 数组是同类型元素的集合。一个数组可以是一维或者多维, 如果必要,每维最多可有231-1个元素。可以通过数组索引访问 其中的每个元素。索引的范围是0到n – 1,其中n 是数组中 元素的个数。图3-1所显示的是由数值构成的一维数组。注意 第一个元素的索引号为0,第二个是1,依此类推。数组的元素 可以是数据、字符串等,但所有元素的数据类型必须一致。 图3-1 数组示意图 簇(Cluster )是另一种数据类型,它的元素可以是不同类 型的数据。它类似于C 语言中的stuct 。使用簇可以把分布在流 程图中各个位置的数据元素组合起来,这样可以减少连线的拥挤 程度。减少子VI 的连接端子的数量。 波形(Waveform )可以理解为一种簇的变形,它不能算是一种有普遍意义的数据类型,但非常实用。 3.2 数组的创建及自动索引 3.2.1 创建数组 一般说来,创建一个数组有两件事要做,首先要建一个数组的“壳”(shell ),然后在这个壳中置入数组元素(数或字符串等)。 如果需要用一个数组作为程序的数据源,可以选择 Functions?Array?Array Constant ,将它放置在流程图中。然后 再在数组框中放置数值常量、布尔数还是字符串常量。下图显示 了在数组框放入字符串常量数组的例子。左边是一个数组壳,中 间的图上已经置入了字符串元素,右边的图反映了数组的第0个 元素为:”ABC”,后两个元素均为空。 ABC 0Array Constant ABC 0Array Constant 0Array Constant 图3-1 数组的创建

labview 数组、簇和图形

第三章 数据类型:数组、簇和波形 3.1 概述 数组是同类型元素的集合。一个数组可以是一维或者多维, 如果必要,每维最多可有231-1个元素。可以通过数组索引访问 其中的每个元素。索引的范围是0到n – 1,其中n是数组中元 素的个数。图3-1所显示的是由数值构成的一维数组。注意第 一个元素的索引号为0,第二个是1,依此类推。数组的元素可 以是数据、字符串等,但所有元素的数据类型必须一致。 图3-1 数组示意图 簇(Cluster)是另一种数据类型,它的元素可以是不同类 型的数据。它类似于C语言中的stuct。使用簇可以把分布在流 程图中各个位置的数据元素组合起来,这样可以减少连线的拥挤 程度。减少子VI的连接端子的数量。 波形(Waveform)可以理解为一种簇的变形,它不能算是一种有普遍意义的数据类型,但非常实用。 3.2 数组的创建及自动索引 3.2.1 创建数组 一般说来,创建一个数组有两件事要做,首先要建一个数组的“壳”(shell),然后在这个壳中置入数组元素(数或字符串等)。 如果需要用一个数组作为程序的数据源,可以选择 Functions?Array?Array Constant,将它放置在流程图中。然后 再在数组框中放置数值常量、布尔数还是字符串常量。下图显示 了在数组框放入字符串常量数组的例子。左边是一个数组壳,中 间的图上已经置入了字符串元素,右边的图反映了数组的第0个 元素为:”ABC”,后两个元素均为空。 图3-1 数组的创建

在前面板中创建数组的方法是,从Controls模板中选择 Array & Cluster,把数组放置在前面板中,然后选择一个对象 (例如数值常量)插入到数组框中。这样就创建了一个数值数组。 也可以直接在前面板中创建数组和相应的控制对象,然后将 它们复制或者拖曳到流程图中,创建对应的常数。 还有很多在流程图中创建和初始化数组的方法,有些功能函 数也可以生成数组。 3.2.2 数组控制对象、常数对象和显示对象 通过把数组与数值、布尔数、字符串或者簇组合在一起,可以在前面板和流程图中创建任何一种控制对象、常数对象和显示对象。数组元素不能是数组、图表或者图形。如果您想查看一些数组的例子,请查看Examples\General\arrays.llb中的例子。 3.2.3 自动索引 For循环和While循环可以自动地在数组的上下限范围内编索引和进行累计。这些功能称为自动索引。在启动自动索引功能以后,当把某个外部节点的任何一维元素连接到循环边框的某个输入通道时,该数组的各个元素就将按顺序一个一个地输入到循环中。循环会对一维数组中的标量元素,或者二维数组中的一维数组等编制索引。在输出通道也要执行同样的工作――数组元素按顺序进入一维数组,一维数组进入二维数组,依此类推。 在默认情况下,对于每个连接到For循环的数组都会执行自 动索引功能。可以禁止这个功能的执行,方法是用鼠标右键单击 通道(输入数组进入循环的位置),在快捷菜单中选择Disable Indexing。 练习 3-1创建一个自动索引的数组 目的:使用 For 循环的自动索引功能创建数组,并用一个图形(Graph)显示该数组。 前面板 图3-2 练习3-1的面板 1.打开一个新的前面板。 2.选择Controls?Array & Cluster,在前面板 中放置一个数组。设置它的标签为Waveform Array。 3.选择Controls?Numeric,在

3字符数组及字符串练习题

1.输入一串字符,个数不超过100个,且以"."结束。判断它们是否构成回文。 (所谓回文,是指一串字符从左往右与从右往左读,结果是一致的)。 2.随机输入n个国家的英文名称,每个国家的名称单独占一行,按字母顺序排序后输出,输出时仍然要求每个国家的名称单独占一行。 3.随机输入一些国家的英文名字(输入的数据共占一行且不超过255个字符,以一个空格为分隔符),按字母顺序排序后输出。 比较大小(bj.pas) 输入正整数a,b(<=10250),比较a和b的大小。 【输入文件】bj.in。第一行:a,第二行:b 。 【输出文件】bj.out。如果a>b,输出1;如果a=b,输出0;如果a

相关主题
文本预览
相关文档 最新文档