VB第6章 复习资料

合集下载

VB第6章课后练习答案

VB第6章课后练习答案

第6章过程与函数一、填空题1.数组名作为过程或函数实参,相应的形参传递方式为____按地址传递____。

2.一维长整型数组a作过程形参写作:a() As Long,二维长整型数组b作过程形参写作:____b() As Long ____。

3.过程形参为整型,对应实参为5.64,传递给形参的值为____6____。

4.调用过程时对形参的改变不会导致相应实参变量的改变,则该形参采用____按值传递____方式。

5.调用过程时对形参的改变就是对相应实参变量的改变,则该形参采用____按地址传递____方式。

6.声明Single类型全局变量x,写作____Public x As Single(或 Publicx!)____;声明Integer类型静态变量x,写作____Static x As Integer (或Static x%)____。

7.在窗体Form1的过程中引用窗体Form2中的全局变量y,写作____Form2.y____。

8.阅读如下代码,单击窗体后,窗体上的显示结果为____s = 2 s = 5 s = 9____。

Dim i As Integer, n As IntegerPrivate Sub Form_Click()Dim i As IntegerFor i = 1 To 3s = sum(i): Print "s ="; s;Next iEnd SubPrivate Function sum(n As Integer)Static j As Integerj = j + n + 1: sum = jEnd Function二、选择题1.VB程序设计语言中,函数过程与子过程必须分别用关键字( C)声明。

(A)Private,Public (B)Public,Private(C)Function, Sub (D)Sub, Function2.要调用一个已经定义好的函数myfunction( ),用语句的方式调用函数,下列写法哪个是正确的( D)(A)Call myfunction (B)myFunction(C)myFunction ( ) (D)CallmyFunction( )3.定义过程时,如果在过程名前加关键字Private,则该过程为( A)。

VB教程 第六章 过程、模块与类

VB教程 第六章 过程、模块与类

2.按地址传递参数 按地址传递参数使过程用变量的内存地址去访问实际变量 的内容。结果,将变量传递给过程时,通过过程可永远改 变变量值。按地址传递参数在 Visual Basic 中是缺省的。 例如: Sub PostAccounts (intAcctNum as Integer) . '这里放语句。 End Sub 3.使用可选的参数 4.提供可选参数的缺省值 5.使用不定数量的参数
下面分别对被调用过程在窗体模块、类模块和标准模块三种 情况说明: ① 窗体中的过程 ② 类模块中的过程 ③ 标准模块中的过程
一个很好的例子: 交通信号灯控制的例子
一个重要的思想(递归 一个重要的思想 递归) 递归
递归就是一个过程调用自己来完成某个特定的 任务。在递归过程中,一个过程的某一步要用 到其自身的上一步或几步的结果。递归分为两 种类型:直接递归和间接递归。Visual Basic的 过程具有递归调用功能。 递归可能会导致堆栈上溢。通常 Static 关键字 和递归过程不在一起使用。使用递归过程要特 别小心,不加控制的递归通常会引起溢出堆栈 空间错误信息。如下例:
作用域不同([Private | Public | Friend]) 生命期不同([Static]) 但是arglist语法较简单:可选的。代表在调用时要传递给 Function 过程的参数变量列表。多个变量应用逗号隔开。 一点注意:若 Function 过程会改变某个数学表达式中变 量的值,则应避免在此表达式中使用该函数。例如: I=2 J=3 X=(Sum (I,J)+1)/Sum(I,J) Function Sum (A As Integer, B As Integer) As String A=A+2 Sum=A+B End Function 结果如何?怎么修改?

VB程序设计教程 第四版 第6章

VB程序设计教程 第四版 第6章
10 a 执行过程体 ByVal 传值 x a 20 a 的地址 10 20
a
10
执行过程体
x a
20 10
返回
返回
20 Integer a = = : y b10 的地址 b 10 = 20 : b 10 aCall = Swap 10 : y b 的地址 2(a, b 10 = b) 20 : 10 b Call a = Text Swap b
汉字的机内码最高位为1,Asc函数码值为小于0(补码)
西文字符的最高位为0,Asc函数求其码值为大于0
Function CountC%(ByVal s$) Dim i%, k% Dim c As Char For i = 1 To Len(s) c = Mid(s, i, 1) If Asc(c) < 0 Then k = k + 1 Next CountC = k End Function Sub Command1_Click() Dim c1% c1 = CountC(Text1.Text) 显示 Text1.Text 和 C 1 End Sub
Functioc Count%(st$) Dim i% Count = 0 i = InStr(st, “ the ") Do While (i > 0) Count = Count + 1 st = Mid(st, i + 1) i = InStr(st, “ the ") Loop VB 程序设计教程 End Function
Z←gcd
例6.2 设断点演示过程
调用形式:函数过程名([参数列表])
参数列表(称为实参或实元):必须与形参个数相同,位置与 类型一一对应。可以是同类型的常量、变量、表达式。

VB课件第6章Visual Basic 循环结构

VB课件第6章Visual Basic 循环结构
End Sub
Do Until i = 100
例6-3:求 1+22+32+……n2大于1000的最小值。
选Do … Loop语句: 不知道要加到第几项,但知道累加和大于 1000,并且,第一次超过1000时就不再累 加了,所以选Do … Loop语句。
求项数(计数i): i=0(初值) ,i=i+1(重复执行)
例: 利用随机函数10个产生[20,90]的整数, 求其平均值.
界面设计: 单击窗体, 显
示结果如图.
例: 利用随机函数10个产生[20,90]的整数, 求其平均值.
分析: 产生数X 求和s
求平均a
产生一个X: X=Int(Rnd*71+20)
显示产生的值: Print x
计算和: s=s+x
重复10次 求得这10 个数的和s
Private Sub Form_Click( ) Dim i As Integer i=0 Do While i < 100 i=i+1 Print i; If i Mod 10 = 0 Then Print Loop
End Sub
用Do Until … Loop循环来编制 例6-2的程序
Private Sub Form_Click() Dim i As Integer i=0 Do While i < 100 i=i+1 Print i; If i Mod 10 = 0 Then Print Loop
If Max <= x Then Max = x Next i Print Print “最大值为:”; Max End Sub
6.4 循环嵌套
循环嵌套:在一个循环语句的循环体中又包含有另一 循环语句。 VB的三种循环可以自身嵌套与相互嵌套 要求:内层结构一定包含在外层结构中,不能交叉

VB第6章 数组

VB第6章 数组

教案讲稿第六章数组[旧课复习]:复习内容:1.循环语句2.多重循环使用复习目的:学生掌握两种基本循环结构语句的使用以便在数组中能正确使用循环语句复习时长:大约5分钟[新课导入]:导入方式:引入日常生活中的实例让学生理解数组的功能导入目的:增强学生的理解能力导入时长:大约10分钟[新课讲授]:重点:静态数组、动态数组的基本操作及列表框和组合框的使用难点:控件数组方法:运用多媒体辅助教学,采用讲授法和启发式教学法6.1数组的概念6.1.1数组概念数组并不是一种数据类型,而是一组相同类型数据的集合。

用一个统一的名字(数组名)代表逻辑上相关的一批数据,每个元素用下标变量来区分;下标变量代表元素在数组中的位置。

数组中的各个变量称为数组元素,数组中的每个元素用一个唯一的下标(索引)来标识。

如m(5),表示名为m的数组中下标为5的那个元素。

数组元素的个数称为数组的长度(大小)。

数组的各个元素在内存中是连续存放的,如图6-1所示。

数组名表示这个连续数据区域的起始位置,下标表示对应元素在内存区域中的相对位置。

图6-1 数组在内存中的存放方式6.1.2数组的分类Visual Basic中的数组,按不同的方式可分为以下几类:按数组的大小(元素个数)是否可以改变分为:静态(定长)数组、动态(可变长)数组。

按元素的数据类型可分为:数值型数组、字符串数组、日期型数组、变体数组等。

按数组的维数可分为:一维数组、二维数组、多维数组。

对象数组:菜单对象数组、控件数组。

6.2静态数组6.2.1 静态数组的声明1.一维数组静态一维数组的声明格式如下:Dim数组名(下标) [ As <类型> ]说明:(1)数组的命名与简单变量的命名规则相同。

(2)下标的格式为:[<下界> to <上界>]<下界>和<上界>不能使用变量,必须是常量,常量可以是直接常量、符号常量,一般是整型常量。

Visual Basic6

Visual Basic6

第6章 VB控制结构6.1 选择结构6.2 循环结构6.3综合实例6.1选择结构6.1.1 If条件语句6.1.2 Select Case6.1.3 条件函数6.1.1 If条件语句 条件语句1.单分支条件结构(If...Then语句)2.双分支结构(If...Then...Else语句)3.多分支结构(If…Then…ElseIf语句)4.If语句的嵌套1.单分支条件结构(If...Then语句) .单分支条件结构( 语句) 语句用 If...Then 结构有条件地执行一个或多个语句。

单行语法和多行块 语法都可以使用: (1)If < 表达式> Then <语句块> (2)If < 表达式> Then <语句块> End If 下面两个例子等价: (1)If todayDate < Now Then todayDate = Now (2)If todayDate < Now Then todayDate = Now End If 注意:If...Then 的单行格式不用 End If 语句。

如果 <表达式>为 True 时要执行多行代码,则必须使用多行块 If...Then...End If 语法。

例如: If todayDate < Now Then todayDate = Now Timer1.Enabled = False ' 定时器控制失效。

End If2. 双分支结构(If...Then...Else语句) 双分支结构( 语句) 语句可以用 If...Then...Else 块定义几个语句块,执 行其中一个语句。

其语法格式也有两种形式: (1)If <表达式> Then <语句块1> Else <语句块2> End If (2)If <表达式> Then<语句1>Else<语句2> 当<表达式>的值为真时,执行Then后面的语句块1( 或语句1),否则执行Else后面的语句块2(或语句2)。

vb第6章

vb第6章
9
第 六 章 Visual Basic 控 制 结 构
Private Sub Command1_Click() C = 5 / 9 * (Val(Text1.Text) - 32) Text2.Text = Format(C, "0.00") If C > 40 Then Label2.Caption = "HOT" ElseIf C >30 Then Label2.Caption = "WARM" ElseIf C >20 Then Label2.Caption = "ROOM TEMPERATURE" ElseIf C >10 Then Label2.Caption = "COOL" ElseIf C >0 Then Label2.Caption = "COLD" Else Label2.Caption = "FREEZING" End If End Sub
【例6-4】求函数Y的值 第 六 章 Visual Basic 控 制 结 构
Y=
ex+e-x x<0 1.25 x=0 lgx x>0
X = Val(Text1.Text) Select Case X Case X < 0 Y = Exp(X) + Exp(-X) Case X =0 Y = 1.25 Case X > 0 Y = Log(X) / Log(10) End Select Print "Y="; Y
19
第 六 章 Visual Basic 控 制 结 构
Delta = B ^ 2 - 4 * A * C Select Case Delta Case 0 Print "X1=X2="; Format(-B / (2 * A), "0.000") Case Is > 0 X1 = (-B + Sqr(Delta)) / (2 * A) X2 = (-B - Sqr(Delta)) / (2 * A) Print "X1="; Format(X1, "0.000") CurrentX = 600: CurrentY = 1300 Print "X2="; Format(X2, "0.000") Case Is < 0 A1 = -B / (2 * A) A2 = Sqr(Abs(Delta)) / (2 * A)

VB教程第6章

VB教程第6章
第6章 菜单,状态栏和工具栏 章 菜单,
6.1 菜单 6.2 状态栏 6.3 工具栏
前 言
一个典型的Windows应用程序,例如Word,Access等 一个典型的Windows应用程序,例如Word,Access等,通常 Windows应用程序 Word 都有菜单,工具栏和状态栏.如图6 所示. 都有菜单,工具栏和状态栏.如图6-1所示.这是所有 Windows应用程序的最主要的特征 应用程序的最主要的特征. Windows应用程序的最主要的特征.用户可以通过菜单控制操 也可以通过工具栏中的选项(或按钮)操作, 作,也可以通过工具栏中的选项(或按钮)操作,还可以通 过状态栏读取提示信息. 过状态栏读取提示信息. 本章主要介绍VB 2005中菜单,工具栏和状态栏的设置以及 本章主要介绍VB 2005中菜单, 中菜单 使用. 使用.
6.1.2 计时器(Timer)组件 计时器( )
2005提供了计时器 Timer)组件来通过时间计时 提供了计时器( 时间计时控制 VB 2005提供了计时器(Timer)组件来通过时间计时控制 程序的执行.计时器控件是一个非常重要, 程序的执行.计时器控件是一个非常重要,也是一个比较特 殊的控件. 殊的控件. 该控件在应用中以设定的时间间隔引发同一个事件. 设定的时间间隔引发同一个事件 该控件在应用中以设定的时间间隔引发同一个事件.在动 画制作或定期执行某种操作等方面比较有用. 画制作或定期执行某种操作等方面比较有用. 计时器控件在设计时显示为一个小时钟图标,而在运行时 计时器控件在设计时显示为一个小时钟图标, 则看不到,所以常用来做一些后台的处理. 后台的处理 则看不到,所以常用来做一些后台的处理.
【例6-1】编写一个下拉菜单,该菜单包含2个菜单标题,即 编写一个下拉菜单,该菜单包含2个菜单标题, 操作,控制,以及一些菜单项和子菜单项, 操作,控制,以及一些菜单项和子菜单项,通过子菜单选项 操作窗体上标签的移动. 操作窗体上标签的移动.

VB程序设计第6章对话框的设计

VB程序设计第6章对话框的设计
• Title是可选参数。该字符串表达式 作为标题显示在消息框的标题栏中。
• MsgBox函数返回值为1~6之间的 一个整数,表示用户按下了“确定”、 “取消”、“终止”、“重试”、“忽略”或 “是”按钮。
VB程序设计第6章对话框的设计
2、通用对话框 (1)通用对话框的使用 把“通用对话框(Common
VB程序设计第6章对话框的设计
(3)“保存”对话框 • “保存”对话框也是在Windows应用
程序中经常用到的。用ShowSave 方法显示对话框,它同样能指定文件 的驱动器、目录、文件扩展名和文件 名,其使用方法和“打开”对话框的使 用方法基本相同。
VB程序设计第6章对话框的设计
(4)“颜色”对话框 • “颜色”对话框用来在调色板中选择颜
对出现,指出对话框左上角的屏幕坐标。 • InputBox函数返回文本框中输入的内容,
为字符串类型。
VB程序设计第6章对话框的设计
(2)消息框 • 创建消息框的标准函数是MsgBox
函数,该函数在对话框中显示消息, 等待用户按下按钮,并返回一个整数 来表示用户按下了哪一个按钮。 • MsgBox函数的语法格式为:
VB程序设计第6章对话框的设计
其中: • Prompt为必需的字符串表达式参数,提
供显示在对话框中的提示文本。 • Title为可选字符串表达式参数,提供标题
显示在对话框的标题栏中。 • Default为可选字符串表达式参数,提供
输入框的缺省输入文本。 • Xpos和Ypos都是可选的数值表达式,成
VB程序设计第6章对话框的设计
• ⑧过滤器索引(FilterIndex属性): 用索引值来指定对话框使用哪一个过 滤器。
• ⑨取消引发错误(CancelError属 性):决定当用户单击对话框上的 “取消”按钮时,是否会显示一个报错 信息的消息框。

vb考试复习5章-6章习题

vb考试复习5章-6章习题

计第5章选择结构程序设-、选择题1.下列语句正确的是【】。

(多选)(A)IfX≠YThenPrint"X不等于Y"(B)IfX<>YThenPrint"X不等于Y"(C)IfX><YThenPrint"X不等于Y"(D)IfX=YPrint"X不等于Y"2.下列语句正确的是【】。

(A)IfA≥BThenT=AA=BB=T(B)IfA≥BThenT=A;A=B;B=T(C)IfA>=BThenT=AA=BB=T(D)IfA>=BThenT=A:A=B:B=T3.下列语句正确的是【】。

(A)IfX<3*YAndX>YThenY=X^3(B)IfX<3*YAndX>YThenY=X3(C)IfX<3*Y:X>YThenY=X^3(D)IfX<3*YAndX>YThenY=X**34.关于语句Ifx=lTheny=1,下列说法正确的是【】。

(A)x=1和y=1均为赋值语句(B)x=1和y=1均为关系表达式(C)x=1为关系表达式,y=1为赋值语句(D)x=1为赋值语句,y=1为关系表达式5.执行以下语句后显示结果为【】。

DimxAsIntegerIfxThenPrintxElsePrintx-1(A)1(B)O(C)一1(D)不确定6.如果X的值小于或等于Y的平方,则打印"OK",表示这个条件的单行格式If语句是【】。

(A)Ifx<=y2ThenPrint"OK"(B)Ifx<=y^2Print"OK"(C)Ifx<=y^2Then"OK"(D)Ifx<=y^2ThenPrint"OK"7.如果A为整数且|A|=100,则打印"OK",否则打印"Error",表示这个条件的单行格式If语句是【】。

vb第六章(过程).ppt

vb第六章(过程).ppt

If a<b Then
call swap(a,b)
‘过程的调用, 或swap a,b
End If
(主调过程)
Print a,b
End Sub
求组合数
Cmn
m! n!(m
n)!
'定义求阶乘的Sub子过程fac Private Sub fac(ByVal n As Integer, f As Long) ‘过程定义
End If j=j+2 Loop End Sub
‘用For循环如何实现?
四、参数的传递
参数传递:调用时把实参的值或地址传递给形参 。
1. 形参和实参 2. 按值传递与按地址传递 3. 数组参数的传递
1.形参和实参 (1)形参(形式参数)
出现在被调过程(定义Sub子过程或 Function函数过程)的形参表中的变量名 (除定长字符串变量外)、数组名。
见 求组合数 .vbp
三. Function函数过程的定义及其调用
函数过程是带有返回值的特殊过程。
1、定义
[Public|Private][Static] Function 函数名([参数列表]) [AS 类型]
局部变量或常数定义 语句块 函数名=表达式 [Exit Function ] 语句块 函数名=表达式
Dim i As Integer f=1 For i = 1 To n
f=f*i Next i End Sub
' “=”的click事件
Private Sub Command1_Click()
Dim m As Integer, n As Integer
Dim fm As Long, fn As Long

VB6.0基础教程 之 第6章 Visual Basic常用标准控件

VB6.0基础教程 之 第6章 Visual Basic常用标准控件
第6 章
6.1 6.2 6.3 6.4 6.5 6.6 6.7 6.8 6.9
Basic常用标准控件 Visual Basic常用标准控件
概述 图形控件 单选按钮和复焦点与Tab Tab顺序 焦点与Tab顺序
1
6.2 图形控件
图片框(PictureBox)和图像框(Image) 功能:用于显示图形 Picture属性:设置图片框或图像框中要显示的图像文件名。可以在设计阶段设置 或在程序中设置。 LoadPicture函数一般格式: [对象.]Picture= LoadPicture(“文件名”)
复选框
2.复选框(CheckBox) Caption属性:文本标题。 Alignment属性 0:控件钮在左边,标题显示在右边。 1:控件钮在右边,标题显示在左边。 Value属性 0--Unchecked:未被选定 1--Checked:选定 2--Grayed:灰色,禁止选择 Style属性 0--Standard:标准方式 1--Graphical:图形方式 事件 Click
6.4 框架
用途:将窗体中的控件按功能或类别分组。
框架
6.4 框架
Caption属性:框架标题 Enabled属性 False,不允许对框架内的对象进行操作。 Visible属性 True:框架及其控件可见。 False:框架及其控件被隐含起来。 事件 Click、DblClick 一般不需要编写框架的事件过程。
例如:Dir1.Path=“C:\Mydir” 重要事件——Change事件 在程序运行时,每当改变当前目录,即目录列表框的Path属性发生变化时,都要触 发其Change事件。
文件列表框(FileListBox)
功能:显示当前目录中指定类型的所有文件。 Path属性:用于返回和设置当前目录。 要从文件列表框(File1)中获得全路径的文件名Fname,用下面的程序代码: If Right(file1.path,1) ="\" Else Fname=file1.path &"\"& file1.filename End If Then Fname=file1.path & file1.filename

VB第六章

VB第六章
第六章
文件管理
本章内容及要求: 本章内容及要求:
1.掌握 中文件的概念,种类及其结构; 掌握VB中文件的概念 种类及其结构; 掌握 中文件的概念, 2.掌握顺序文件的操作:打开,读/写,关闭; 掌握顺序文件的操作: 掌握顺序文件的操作 打开, 写 关闭; 3.了解随机文件的操作:打开,读/写,关闭; 了解随机文件的操作: 了解随机文件的操作 打开, 写 关闭; 4.掌握文件系统控件(驱动器列表框 掌握文件系统控件( 掌握文件系统控件 驱动器列表框DriveListBox, , 目录列表框DirListBox,文件列表框 目录列表框 ,文件列表框FilelistBox. . 5.了解二进制文件的操作:打开,读/写,关闭. 了解二进制文件的操作: 了解二进制文件的操作 打开, 写 关闭.
6.2 文件的基本操作
(2)模式用来指定文件的输入输出方式,可以为下述 )模式用来指定文件的输入输出方式, 操作之一: 操作之一: Output:指定顺序输出方式. :指定顺序输出方式. Input:指定顺序输入方式. :指定顺序输入方式. Append:指定顺序输出方式.与Output不同的是,用 :指定顺序输出方式. 不同的是, 不同的是 Append方式打开文件时,文件指针被定位在文件末尾. 方式打开文件时, 方式打开文件时 文件指针被定位在文件末尾. 如对文件进行写操作, 如对文件进行写操作,则写入的数据附加到原来文件 的后面,也称为追加. 的后面,也称为追加. Random:指定随机存取方式. :指定随机存取方式. Binary:指定二进制方式文件,这种方式下,可以用 :指定二进制方式文件,这种方式下, Get或Put语句对文件中的任何字节位置的信息进行读 或 语句对文件中的任何字节位置的信息进行读 写. 如果没有指定文件的输入输出方式, 如果没有指定文件的输入输出方式,则以缺省的 Random方式打开文件. 方式打开文件. 方式打开文件

VB第6章 《菜单和工具栏设计》总结

VB第6章 《菜单和工具栏设计》总结

VB第6章《菜单和工具栏设计》总结一、菜单控件(Menu):1、功能:用于显示应用程序的自定义菜单。

2、组成:命令、子菜单、分隔符条。

3、创建:“工具”菜单——“菜单编辑器”4、常用属性:(1)Caption:菜单项标题对应菜单编辑器中“标题”文本框。

访问键字母前加“&”符号快速选中:顶级菜单:Alt+字母键子菜单:单击字母键(2)Checked:显示复选标记。

对应菜单编辑器中“复选”复选框。

(3)Enabled:有效性。

对应菜单编辑器中“有效”复选框。

(4)Index:当菜单项组成控件数组时,用于区分数组内的各个菜单控件。

对应菜单编辑器中“索引”文本框。

(5)Name:指定菜单控件的名称。

对应菜单编辑器中“名称”文本框。

(6)Shortcut:指定菜单项的快捷键。

对应菜单编辑器中“快捷键”文本框。

(7)Visible:决定菜单项是否可见。

对应菜单编辑器中“可见”复选框。

(8)WindowList:决定菜单控件是否维护当前MDI子窗口的列表。

对应菜单编辑器中“显示窗口列表”复选框。

5、事件:只有一个单击事件,即Click事件。

二、RichTextBox控件:1、功能:创建能输入和编辑大量文本的、能设置字符格式、段落格式的文本框。

2、打开、保存的文件格式:RTF格式和ASCII文本格式两种。

3、常用属性:(1)FileName:返回或设置装入RichTextBox控件的文件名。

只能指定文本文件或有效的.rtf文件名。

(2)MaxLength:最大字符数。

(3)MultiLine:是否显示和接受多行文本。

(4)RightMargin:文本右边距。

(5)ScrollBars:自带水平或垂直滚动条。

0——无1——水平滚动条2——垂直滚动条3——两者都有(6)SelAlignment:段落对齐方式。

设计时无效。

0——左对齐1——右对齐2——居中对齐(7)选定文本的字体样式:设计时无效。

SelBold:粗体;SelItalic:斜体;SelStrikethru:删除线;SelUnderline:下划线。

VB教程第6章数组

VB教程第6章数组

第6章 数组和用户自定义类型 章
6.1数组的概念 ■数组、数组元素 数组、 数组是用统一的名字,不同下标、顺序排列的一组变量。 数组是用统一的名字,不同下标、顺序排列的一组变量。 数组中的成员(每个变量)称为数组元素。数组元素通过 数组中的成员(每个变量)称为数组元素。 不同的下标来加以区分。因此数组元素又称为下标变量。 不同的下标来加以区分。因此数组元素又称为下标变量。 可以用数组名和下标来唯一地识别一个数组中的某个具体 元素。 元素。 例如a(5)表示名称为 的数组中的序号为 的那个元素。 表示名称为a的数组中的序号为 的那个元素。 例如 表示名称为 的数组中的序号为5的那个元素
第6章 数组和用户自定义类型 章
6.1数组的概念
类型:基本数据类型和构造数据类型。到目前为止, 两种数据类型:基本数据类型和构造数据类型。到目前为止, 我们使用的数据都属于基本数据类型,如数值型、逻辑型、 我们使用的数据都属于基本数据类型,如数值型、逻辑型、 字符型等。该类数据具有一个共同的特点: 字符型等。该类数据具有一个共同的特点:在程序运行的 任一时刻,每个变量名代表一个确定的数据, 任一时刻,每个变量名代表一个确定的数据,用户可以通 过变量名访问该变量的值。 过变量名访问该变量的值。本章我们学习构造数据类型数 数组和用户自定义类型的数据。 据——数组和用户自定义类型的数据。数组是一组相同类 数组和用户自定义类型的数据 型的数据的有序集合; 型的数据的有序集合;而用户自定义类型数据由若干基本 数据类型可不同的元素组成。 数据类型可不同的元素组成。
第6章 数组和用户自定义类型 章
第6章 数组和用户自定义类型 章 6.1数组的概念 数组的概念 6.2定长数组和动态数组的定义 定长数组和动态数组的定义 6.3 数组的基本操作 6.4控件数组 控件数组 6.5滚动条控件 滚动条控件(ScrollBar) 滚动条控件 6.6用户自定义类型和用户自定义 用户自定义类型和用户自定义 类型数组

vb教学第6章

vb教学第6章

[As 数据类型 数据类型]
静态数组说明
数组名的命名规则与变量命名相同。 一维数组的元素个数பைடு நூலகம்上界 下界 上界-下界 上界 下界+1。多维数组的元素个数等于各 各 维元素个数相乘。 维元素个数相乘 缺省下界为0 缺省下界为 。若要将缺省下界设为1,可在模块的通用部分使用 语句: Option Base 1 定义数组时,下界和上界 上界不能使用变量,必须是常量(整型常量) 定义数组时,下界 上界 数组定义后自动获得默认值:数值为0,字符为“”,逻辑为False
For each … Next语句 Next语句
For Each … Next 语句与 For … Next 语句类似,都是实现循环结 构的语句,只是 For Each … Next 语句只能用于数组和对象集合。 语法格式: 示例: For Each 成员 In 数组 Dim A(1 To 4) For Each x In A … Print x ; [ Exit For ] Next x …
二、动态数组的定义
动态数组定义时不指定维数和大小,使用时才指定维数和大小。 动态数组的定义
格式:Dim Dim 数组名( 数组名( ) [As 数据类型 数据类型]
指定动态数组的大小
格式:Redim [preserve] 数组名( [下界 To] 上界 [,…] ) Redim [preserve] 数组名( [,… Redim语句可以多次使用,但只能改变数组的维数和大小。不能改变 数组的类型。 Preserve :选择Preserve参数时,保留数组中原来的数据,但此时 只允许ReDim 语句改变动态数组最后一维的上界,其他的都不能改。
动态数组定义示例
Option Base 1 Dim A() AS integer Redim A(4) Redim Preserve A(UBound(A)+1 UBound(A)+1)
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第6章补充资料习题解答1.简述子过程和函数过程的共同点和不同之处.解答:子过程和函数过程的共同点:函数过程和子过程都是功能相对独立的一种子程序结构,它们有各自的过程头、变量声明和过程体。

在程序中使用它们不但可以避免书写重复的程序语句,缩短代码,而且可以使程序条理清晰,容易阅读。

子过程和函数过程的不同点:(1)过程声明的关键字不同,子过程用的是Sub,函数过程用的是Function。

(2)子过程名无值就无类型声明,函数过程名有值就有类型声明。

(3)函数过程名兼作结果变量,因此在函数过程体内至少对函数过程名赋值;而子过程名在过程体内不能赋值。

(4)调用方式不同,子过程是一条独立的语句,可用Call子过程名或省略Call直接以子过程名调用;函数过程不是一条独立的语句,是一个函数值,必须参与表达式的运算。

(5)一般来说,一个函数过程可以被一个子过程代替,代替时只要改变函数过程定义的形式,并在子过程的形参表中增加一个地址传递的形参来传递结果。

2.什么是形参,什么是实参?什么是值引用?什么是地址引用?地址引用时,对应的实参有什么限制?解答:形参是在定义过程时的一种形式虚设的参数,只代表了该过程参数的个数、类型、位置、形参的名字并不重要,也没有任何值,只表示在过程体内进行某种运算或处理。

实参是调用子过程时提供给过程形参的初始值或通过过程体处理后获得的结果。

调用时用实参代替形参,实参与形参在个数、类型、位置一一对应,实参与形参名相同与否无关。

实参与形参的结合有两种方法,即传地址(ByRef)和传值(ByVal),或称地址引用和值引用,缺省为地址引用。

值引用时,系统将实参的值传递给对应的形参,实参与形参断开了联系。

如果在过程体中改变形参的值,不会影响到实参。

地址引用时,实参与形参变量共用同一个存储单元,如果在过程中改变了形参的值,对应的实参也将发生改变。

地址引用时,实参只能是变量,不能是常量或表达式。

3.指出下面过程语句说明中的错误:(1)Sub f1(n%)As Integer(2)Function f1 % (f1%)(3)Sub f1(ByVal n%())(4)Sub f1(x(i)as Integer)解答:(1)错误为Sub子过程名无返回值,也就没有类型。

(2)函数名与形参名相同。

(3)形参n为数组,不允许声明为ByVal值传递。

(4)形参x(i)不允许为数组元素。

4.已知有如下求两个平方数和的fsum子过程:Public Sub fsum(sum%,ByVal m%,ByVal n%)sum = a * a + b * bEnd Sub在事件过程中若有如下变量声明:Private Sub Command1_Click()Dim a%,b%,c!a = 10:b = 20则指出如下过程调用语句的错误所在:(1)fsum 3,4,5(2)fsum c,a,b(3)fusm a + b,a,b(4)Call fsum(Sqr(c),Sqr(a),Sqr(b))(5)Call fsum c,a,b解答:(1)fsum子过程的第一个形参是地址传递,因此对应的实参3不应该是常量。

(2)fsum子过程的第一个形参是整形而且是地址传递,对应的实参c是单精度,类型不匹配。

(3)fsum子过程的第一个形参是地址传递,因此对应的实参a+b不应该是表达式。

(4)fsum子过程的第一个形参是地址传递,因此对应的实参Sqr(c)不应该是表达式。

(5)用Call语句调用fsum子过程,必须加圆括号括起实参。

5.利用迭代法求方程x^2 - a = 0的近似根,要求精度为10^-5,迭代公式为Xi+1 =1/2(Xi + a/Xi)。

编制三个过程:迭代函数过程、迭代子过程和递归法函数过程。

解答:假定a为10,三种过程的执行效果如图6.6所示,程序代码如下:Private Sub Command1_Click()Print"函数过程";f1(10)Call s1(x!,10)Print"子过程";x!Print"递柜调用";dgf(x,10)End SubPublic Function f1!(a!)'函数过程Dim X!,X1!x1 = aDox = (x + a/x)/2If Abs(x - x1) < 0.00001 Then Exit Dox1 = xLoopEnd SubPublic Function dgf!(x,a!) '递归调用x1 = (x + a/x)/2If Abs(x - x1)< 0.00001 Thendgf = xElsedgf = dgf(x1,a)End IfEnd Function6.要使变量在某事件过程中保留值,有哪几种变量声明的方法?解答:声明变量为全局(Public)、通用声明段或标准模块声明的模块级变量、局部过程声明的静态变量(Static)。

7.为了使某变量在所有的窗体中都能使用,应在何处声明该变量?解答:在标准模块声明为全局变量。

8.在同一模块、不同过程中声明的相同变量名,两者是否表示同一个变量?两者间有没有联系?解答:表示不同的变量,没有任何关系。

常见错误和难点分析1.程序设计算法的问题该章程序编写难度较大,主要是算法的构思有困难,这也是程序设计中最难学习的阶段。

但是对每一位程序设计的初学者,没有捷径可走,一定要多看、多练、知难而进。

上机前一定要先编写好程序,仔细分析、检查,才能提高上机调试的效率。

2.确定自定义的过程是子过程还是函数过程实际上过程是一个具有某种功能的独立程序单位,可供多次调用。

子过程与函数过程的区别是前者子过程名无值;后者函数过程名有值。

若过程有一个返回值,则习惯使用函数过程;若过程无返回值,则使用子过程;若过程返回多个值,一般使用子过程,通过实参与形参的结合返回结果,当然也可通过函数过程名返回一个,其余结果通过实参与形参的结合返回。

3.过程中确定形参的个数和传递方式对初学者,在定义过程时较难确定形参的个数和传递方式。

过程中参数的作用是实现过程与调用者的数据传递。

一方面,调用者为子过程或函数过程提供初值,这是通过实参传递给形参实现的;另一方面,子过程或函数过程将结果传递给调用者,这是通过地址传递方式实现的。

因此,决定形参的个数就是由上述两方面决定的。

对初学者,往往喜欢把过程体中用到的所有变量全作为形参,这样就增加了调拥者的负担和出错概率;也有的初学者全部省略了形参,因此无法实现数据的传递,既不能从调用者得到初值,也无法将计算结果传递给调用者。

VB中形参与实参的结合有传值和传地址两种方式。

区别如下:(1)在定义形式上前者在形参前加ByVal关键字,后者在形参前加ByRef关键字或缺省。

(2)在作用上值传递只能从外界向过程传入初值,但不能将结果传出;而地址传递既可传入又可传出。

(3)如果实参是数组、自定义类型、对象变量等,形参只能是地址传递。

4.实参与形参类型对应的问题在地址传递方式时,调用过程实参与形参类型要一致。

例如:函数过程定义如下:Public Function f!(x!)f = x + xEnd Function主调程序如下:Private Sub Command1_Click()Dim y%y = 3Print f(y)End Sub上例形参x是单精度型、实参y是整形,程序运行时会显示"ByRef参数类型不符"的编译提示信息。

在值传递时,若是数值型,则实参按形参的类型将值传递给形参,例如:函数过程定义如下:Public Function f!(x!)f = x + xEnd Function主调程序如下:Private Sub Command1_Click()Dim y%y = 3.4Print f(y)End Sub程序运行后显示的结果是6。

5.变量的作用域问题局部变量,在对该过程调用时,分配该变量的存储空间,当过程调用结束时,回收分配的存储空间,也就是调用一次,初始化一次,变量值不保留;窗体级变量,当窗体装入时,分配该变量的存储空间,直到该窗体从内存卸掉,才回收该变量分配的存储空间。

例如,要通过文本框输入若干个值,每输入一个按Enter键,直到输入的值为9999,输入结束,求输入数的平均值。

Private Sub Text1_KeyPress(KeyAscii As Integer)Dim sum!,n%If KeyAscii = 13 ThenIf Val(Text1) = 9999 Thensum = sum / nPrint sumElsesum = sum + Val(Text1)n = n + 1Text1 = ""End IfEnd IfEnd Sub该过程没有语法错,运行程序可输入若干个数,但当输入9999时,程序显示“溢出”的错误。

因为sum和n是局部变量,每按一个键,局部变量初始化为0,所以会有上述错误产生。

改进方法:将要保值的局部变量声明为Static静态变量,也可将要保值的变量在通用声明段进行声明为窗体级变量。

6.递归调用出现“栈溢出”如下求阶乘的递归函数过程:Public Function fac(n As Integer)As Integer]If n = 1 Thenfac = 1Elsefac = n * fac(n - 1)End IfEnd FunctionPrivate Sub Command1_Click() '调用递归函数,显示出fac(5)=120 Print "fac(5)=";fac(5)End Sub当主调程序调用时,n的值为5时,显示结果为120;当n的值为-5时,显示“溢出堆栈空间”的提示信息。

实际上每递归调用一次,系统将当前状态信息(形参、局部变量、调用结束时的返回地址)压栈,直到到达递归结束条件。

上例中当n = 5 时,每递归调用一次,参数n - 1,直到n = 1 时递归调用结束,然后不断从栈中弹出当前参数,直到栈空。

而当n = -5 时,参数n - 1 为-6,压栈,再递归调用n - 1 永远到不了n = 1 的终止条件,直到栈满,产生栈溢出的提示信息。

所以设计递归过程时,一定要考虑过程中有终止的条件和终止时的值或某种操作,而且每递归调用一次,其中的参数就要向终止方向收敛,否则就会产生栈溢出。

测试题一、选择题1.设有如下程序段:Public Sub F1(n%)...n = 3 * n + 4...End SubPrivate Sub Command1_Click()Dim n% , m%n = 3m = 4...'调用F1语句...End Sub则在Command1_Click事件中有效的调用语句是______。

相关文档
最新文档