Visual Basic 6.0第二章电子教案

任务十

教学内容:

统计家庭支出情况 教学过程:

一、动态数组

? 动态数组是指计算机在执行过程中才给数组开辟存储空间的数组,可以用ReDim语句再次分配动

态数组占据的存储空间,也可以用Erase语句删除它,收回分配给所占存储空间。动态数组可以用变量作为下标值,在程序运行过程中完成声明,动态数组可以在任何时候改变大小。

? 创建动态数组通常分为两步。首先在窗体级别、标准模块或过程中,用Dim语句(模块级数组)、

Public语句(公用数组)、Private或Static(局部数组)声明一个没有下标的数组(括号不能省略),然后在过程中用ReDim语句定义带下标的数组。 ReDim该语句:

ReDim [Preserve] 变量(下标,下标) As 数据类型名称

说明:1、可以用ReDim语句在过程内直接声明数组。对于用ReDim声明的数组,如果用ReDim重新声明只能修改数组中元素的个数,不能修改数组的维数。

2、用Private、 Public或Dim语句声明过的已经用带空圆括号(没有维数下标)的动态数组,在一个程序中,可以根据需要使用ReDim语句修改数的维数或元素的个数,但不能修改数据的类型。

3、重新分配动态数组时数组中的内容将被清除,如果在ReDim语句用了Preserve选项,则保留数组内容。

4、 ReDim语句只能出现在事件过程或通用过程中,用它定义的数组是一个临时数组,即在执行数组所在的过程时为数组开辟一定的内存空间,当过程结束时,这部分内存立即被释放。 二、访问数组的方法

建立一个数组这后,可以对数组或数组元素进行操作。数组的基本操作包括输入、输出及复制,这些操作都是对数组元素进行的。 数组的引用:

引用数组元的方法是,在数组名后面的括号中指定下标。引用数组时应注意以下几点: 1、引用数组元素是在数组名后的括号内指定下标。

2、在引用数组元素时,数组名、类型和维数必须与声明数组时一致。

3、如果建立的是二维或多维数组,那么在引用时必须给出两个或多个下标。 4、引用数组元素时,要注意下标值要在声明的范围之内。 5、一般情况下,出现常量或变量的地方都可以引用数组元素。 三、 访问数组的常用方法

1、当数组较小或者只需要对数组中的指定元素操作时,可以通过直接引用数组来实现对数组指定元素的操作。

2、对于元素较多的一维数组,通常采用一重循环来实现对数组各个元素的遍历。 3、对于元素较多的二维数组,通常采用二重循环来实现对数组各个元素的遍历。 4、对于多维数组,通常采用多重循环来实现对数组各个元素的遍历。 四、操作举例:

? 制作一个家庭年度支出情况表,要求统计出月度支出的总金额、人均金额并打印出来,如图2-12

所示。

【任务分析】

? 定义一个二维数组,考虑到月份、月度支出的总金额、人均金额需要保存,数组的两个下标上界

分别是12、6。

布置作业:

1、如何定义动态数组? 2、如何引用数组的元素?

3、访问数组的常用方法有哪些?

任务十一 制作猜宝游戏

教学内容:第二章、VB6.0编程语言 任务十一制作猜宝游戏戏

教学目的和要求:掌握Sub过程子程序的语法结构和调用方法,理解参数传递的形式。 教学重点: Sub过程子程序的语法结构和调用方法 教学难点:参数传递的形式

课时安排:讲授1学时, 实习1学时 教学过程:

一、导入新课:VB的通用过程包括两大类:它们是Sub过程(即子程序)和Function过程(即函数)。 二、讲授新课: (一) 过程的定义 自定义子过程有两种方法:在“工具”菜单中定义和在代码窗口中定义。 1.在“工具”菜单中定义2.在代码窗口中定义 自定义子过程的格式如下: [Public|Private][Static]Sub子过程名([形参表列]) 〈语句块〉 [Exit Sub] [语句块] End Sub 功能:定义一个Sub过程。 (二) 过程的定义说明:

(1)Public:表示Sub过程是“公用”过程,可在整个程序范围被调用(但需要指明该子程序所在的对象名,如果在窗体 Form1中定义了一个程序Sub1,在窗体From2中调用它,应该用:Call Form1.Sub1。

(2)Private:表示Sub过程是“私用”过程,只能被本窗体中的其他过程访问,不能被其他模块的过程访问。

(3)Static:表示该过程中的局部变量是静态变量,在过程被调用后其值仍然保留;如果省略“Static”,则局部变量就默认为“自动”的,即在每次调用过程时,局部变量被初始化为0或空字符串。Static对在过程之外的变量没有影响,即使这些变量在过程中使用。

(4)形参表列:是含在调用时传给该过程的简单变量名或数组名,各名字之间用逗号隔开。 “形参表列”指明了调用时传送给过程的参数的类型和个数,每个参数的形式: [ByVal](变量名[()][As 类型,]??]) 参数也称形参或哑元,在定义时没有值。ByVal表示该过程被调用时,参数是值传递,否则引用传递。定义子过程或子函数时,都可以无参数,但函数过程无参数时,函数过程名后的括号不能省略。这是函数过程与子过程的区别。

(5)过程名:是长度不超过255个字符的变量名。其命名规则与变量命名规则相同。不要与VB中的关键字重名,也不要与Windows API函数重名,也不能与同一级别的变量同名。在同一个模块中,同一个名称,不能既用作Sub过程名,又用作Function过程名。 (6)[Exit Sub]:表示退出子过程。

(7)Static:表示静态,Public:表示全局,Private:表示局部。 【例5.36】编写一个计算加减乘除的Sub过程。 (三) 过程的调用

? 在VB中可以用两种方法调用Sub过程。 – (1) 使用Call语句调用Sub过程。 – 格式: Call 过程名([实参表列]) – 功能:调用过程。 说明:实参的个数、数据类型都要与被调用过程的参数一一对应。

例如下面是调用Compute过程的语句: a1=10.5 b1=10.5 Call Compute(a1,b1) 如果过程不带参数,Call语句中过程后的一对括号可以省去,例如有一过程Sum不带参数,调用语句只是一行: Call Sum 这是合法的。 (2) 直接使用过程名调用Sub过程,而不必有Call。 格式: 过程名[实参[实参]??] 功能:调用过程。 说明:不用括号把实参括起来。例如,也可以这样调用上面的过程: Compute a1,b1 不带参数的过程可以直接写过程名即可,假如Compute过程没有参数,以下调用是符合VB语法的: Compute 【例5.37】编写一个过程调用上面的过程Compute程序。 (四) 退出过程 在过程中可以对给出的条件测试,并根据测试的结果确定是否退出过程,如果要退出过程,则使用Exit Sub语句。 一进入过程,首先测试变量b的值是否等于0,如果b的值为0,立即退出Compute过程。避免在执行过程中出现错误(被零除)。 (五) Sub Main过程 如果一应用程序只包含一个窗体,则程序从执行窗体Form的Load过程开始。如果有多个窗体,则从设计阶段建立的第一个窗体开始执行。有时,希望在运行窗体程序之前先执行一些操作,此时,可以将这些操作写在Sub Main过程中。 Sub Main是在模块中定义的,如果一个程序中包含有多个模块,只能允许有一个Sub Main过程。Sub Main过程中可以包含若干语句。但它与其他语言中的主程序不同,程序启动时不会自动执行。人们可以指定程序从哪一个窗体或是Sub Main开始执行。方法如下: 方法为:

(1)选择VB主窗口中的“工程”菜单中的“属性”命令,打开“工程属性”对话框,单击“通用”选项,如图5.17所示。

(2)单击对话框中的“启动对象”框右端的箭头,显示出当前工程中各窗体的名字和Sub Main,可以定义启动工程时先启动的窗体或Sub Main。如果选择了Sub Main,则程序运行时从模块的Sub Main过程开始。常常用Sub Main来完成一些初始处理。 【例5.38】 Sub Main过程的应用。 Sub Main也可以被其他过程调用,如: Call Main (六)、参数的传递:

声明过程时,参数列表应遵循以下语法格式:

[Optional] [ByVal | ByRef] [ParamArray] 变量名[( )] [As 数据类型名称] (1) ByVal选项表示按值传递参数。 (2) ByRef选项表示按地址传递参数。 三、课堂小结:

四、布置作业:P64 第二题

任务十二 实现金额大写小转换

教学内容:第二章、VB6.0编程语言 任务十二 实现金额大写小转换(讲授2学时, 实验2学时) 教学目的和要求:掌握常用函数的功能和调用方法。 教学重点难点:常用函数的功能和调用方法。 课时安排:讲授2学时, 实习2学时 教学过程: 一、常用函数

函数是任何一种语言必不可少的部分,VB的函数十分丰富,本节只介绍一些常用的函数,及内部函数和字符串函数。

VB提供了大量的内部函数。在这些函数中,有些是通用的,有些与某些操作有关。大体上可分为5类:转换函数、数学函数、日期函数、时间函数和随机函数。 1、数学函数,如下表 函数 功能 返回类型 示例 与x相同 Abs(-5)=5 Integer Double Double Double Double Double Single Double Double Double Asc(“BDG”)=66 Atn(1)=0.7853975 Cos(3.14159/3)=0.5 Exp(1)=2.71828183 Fix(6.8759)=6 Int(-5.824)=-6 Log(2.71828183)=1 Rnd() Sin(3.14159/6)=0.5 Sqr(16)=4 Tan(3.14159/4)=1 Abs(x) 绝对值 Asc(x) 字符串首字符的ASCII码 Atn(x) 反正切函数 Cos(x) 余弦函数(x是弧度) Exp(x) 求以e为底的指数 Fix(x) Int(x) 取不大于x的最大整数 去掉一个浮点数的小数部分 Double Log(x) 有以e为底的对数 Rnd(x) 产生0~1之间的随机小数 Sin(x) Sqr(x) Tan(x) 正弦函数(x是弧度) 平方根 正切函数(x是弧度) 2、字符串函数,如下表

3、日期和时间函数,如下表

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4