下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第1章 Visual Basic 语言概述,第2页,【教学目的要求】: 1、了解VB6.0的功能和特点; 2、Visual Basic6.0 中文版的安装、启动和退出; 3、掌握:主窗口、窗体窗口、工具箱窗口、属性窗口和工程资源管理器窗口的使用。 【教学重点】: 主窗口、属性窗口、工具箱窗口和代码窗口、工程管理器的使用。 【教学难点】: 面向对象与事件驱动的概念。 【教学进程与章节学时分配】:讲授2学时,上机2学时,共4学时,第3页,1.1 VB主要功能和特点,1.2 VB的启动与退出,1.3 VB集成开发环境,第4页,1.1 VB 主要功能和特点,1. 具有面向对象的可视化设计工具; 2.
2、事件驱动的编程机制; 3. 提供了易学易用的应用程序集成开发环境; 4. 结构化的程序设计语言; 5. 支持多种数据库系统的访问; 6. Active技术; 7. VB 6.0在开发环境上、网络功能等的增强; 8. 完备的help联机帮助功能。,第5页,1.2 VB的启动与退出,1VB的启动 2VB的运行方式: VB编程时,同时解释生成伪代码,执行时经解释变成目标码,生成EXE文件,即可脱离VB环境直接在Windows下运行。 3VB的退出,第6页,1.3 VB集成开发环境,第7页,1. 主窗口 应用程序窗口,由标题栏、菜单栏和工具栏组成。 2. 窗体(form)窗口 设计VB程序的界面。 3
3、. 代码(code)窗口 编辑窗体、标准模块中的代码。 4. 属性(properties)窗口 所有窗体或控件的属性设置。 5. 工程资源管理器(project expror)窗口 保存一个应用程序所有的文件。 6. 工具箱(toolbox)窗口 显示各种控件的制作工具,供用户在窗体上设计。,第8页,第9页,第10页,第11页,【小结】: 介绍了VB6.0的功能和特点,Visual Basic6.0 中文版的安装、启动和退出;应掌握Visual Basic6.0主窗口、窗体窗口、工具箱窗口、属性窗口和工程资源管理器窗口的使用。 【作业】: 1、 书本P9页 一、选择题 2、熟悉VB6.0集成开
4、发环境的组成,第2章 Visual Basic6.0 集成开发环境,第13页,【教学目的要求】: 1、介绍类、对象及对象的属性、事件和方法的概念; 2、掌握建立用户界面对象; 3、掌握标准控件的画法和基本操作; 4、掌握对象属性的设置; 5、掌握对象的事件、事件过程和事件驱动; 6、VB6.0工程的管理及环境设置; 7、程序的调试。 8、应用程序开发示例:创建应用程序界面、设置属性、编写代码、保存应用程序、调试、运行应用程序、生成可执行文件; 【教学重点】:对象属性的设置。 【教学难点】:对象与事件驱动的概念。,第14页,【教学进程与章节学时分配】: 讲授5学时,上机2学 时,共7学时 2学时
5、: 2.1 对象的概念 2.2 建立简单的应用程序 3学时: 2.3 窗体和控件的基本属性 2.4 工程的管理及环境的设置 2.5 程 序 调 试 2学时: 实验二 建立简单的VB6.0应用程序,第15页,2.1 对象的概念,2.2 建立简单VB应用程序,2.3 窗体和控件的基本属性,2.4 工程的管理及环境的设置,2.5 程序调试,第16页,【教学进程】: 第2章第1、2学时 【授课类型】: 理论课 【教学目的要求】: 1、介绍类、对象及对象的属性、事件和方法的概念; 2、掌握建立用户界面对象; 3、掌握标准控件的画法和基本操作; 4、掌握对象属性的设置; 【教学重点、难点】:对象属性的设置
6、。,第17页,2.1 对象的概念,1. 类 类是创建对象实例的模板, 包含了创建对象的属性描述和行为特征的定义。 2. 对象 是类的一个实例,继承了类的属性、方法。 VB中常用的对象有:窗体、控件等。 3. 对象的建立和命名 4. 对象的三要素 (1)属性 对象的性质,即用来描述和反映对象特征的参数。 (2)方法 对象的行为,即将一些通用的过程编写好并封装起来,作为方法供用户直接调用。,第18页,2.1 对象的概念,(3)事件 响应对象的动作称为事件,它发生在用户与应用程序交互时。如单击控件、鼠标移动、键盘按下等。 事件过程 指附在该对象上的用户编写的程序代码,是事件的处理程序。 事件驱动过程
7、 是图形用户界面的本质,由用户控制而代码作出响应。 5. VB程序的执行步骤如下: 1)启动应用程序,装载和显示窗体; 2)窗体(或窗体上的控件)等待事件的发生; 3)事件发生时,执行对应的事件过程; 4)重复执行步骤(2)和(3) ; 5) 直到遇到END结束语句结束程序的运行; 或按“结束”强行停止程序的运行。,第19页,以【 例2-2-1 】为例: 1. 建立用户界面的对象; 2. 对象属性的设置; 3. 对象事件过程及编程; 4. 程序运行和调试; 5. 保存文件。,2.2 建立简单的应用程序,第20页,简单设计实例,【 例2-2-1 】,第21页,源程序,第22页,一、常用属性 1.
8、 Name名称属性 创建的对象名称,有默认的名。在程序中,控件名是作为对象的标识而引用,不会显示在窗体上。 2. Caption标题属性 该属性决定了控件上显示的内容。 3. Height、width、top和left属性,2.3 窗体和控件的基本属性,第23页,4. Enabled属性 控件是否可操作。当设置为false时,呈暗淡色,禁止用户进行操作。 5. Visible属性 控件是否可见。当设置为false时,用户看不到,但控件本身存在。 【 例2-3-1 】 Visible属性和Enabled属性 的比较。,第24页,7Font(字体)属性 FontName:设置字体类型,属性值为字符
9、型。如:“宋体”、“楷体”。 FontSize:设置字体大小,属性值为整型。如:28、32。 FontBold:设置字体是否粗体,属性值为逻辑型。 FontItalic:设置字体是否斜体,属性值为逻辑型。 FontStrikethru:设置文本是否加删除线,属性值为逻辑型。 FontUnderline:设置文本是否加下划线,属性值为逻辑型。,【例2-3-2】设计一个程序,程序运行后在窗体上显示2个文本框,文本框中显示“沈阳”二字。,第25页,8BackColor(背景色)属性 例如:Form1.BackColor= 窗体的二进制数据文件(.frx),自动产生同名.frx文件; 标准模块文件(.
10、bas); 类模块的文件(.cls); 资源文件(.res); ActiveX控件的文件(.ocx). 二、创建、打开和保存工程,第47页,三、添加、删除和保存文件 1. 窗体名和窗体文件名概念 窗体名:窗体的Name属性, 在代码中用来引用该窗体,同一 工程不能有相同的窗体名; 窗体文件名:窗体存放在磁盘上的文件名,该文件包含了该窗体的所有控件属性和代码,同一文件夹不能有相同的文件名。 2. 在工程中添加现存的窗体时,只是对该窗体文件的引用纳入工程。因此,如果更改窗体并保存它,会影响包含此窗体文件的任何工程。 3. 在工程中删除窗体时,仅将此窗体从工程里删除掉,但是窗体文件仍存在于磁盘上。但
11、是,如果在VB之外删除一个窗体文件,VB不能更新此工程文件,当打开此工程时,将显示一个文件丢失的错误信息。 4. 对窗体文件改名方法 1) 打开工程 “另存为Form”实现文件的复制保存工程文件。 2) 利用编辑程序打开工程文件,修改FORM=XXX的文件名。,第48页,四、 生成可执行文件和制作安装盘,1. 生成可执行文件 文件/生成V6B2-11.exe文件,然后关闭Visual Basic6.0。 2. 制作安装盘 在向导的指导下运行V B6.0中文版工具“Package i Next i 3当步长为正,初值大于终值时, 或步长为负,初值小于终值时,循环体将不执行。 For i=9 to
12、 0 Print Line;i Next I 欲使其运行,需要将循环语句的步长设置为负值。改写为: For i=9 to 0 Step -1 Print Line;i Next I,第203页,【例6-2-1】求1到100之间自然数列之和。 【例6-2-2】输入任意10个数,统计其中正数和负数的个数。 【例6-2-3】找出所有平方小于200的正整数。 【例6-2-4】求解斐波那契(Fibonacci)数列的前100项。,第204页,DoLoop语句,1Do WhileLoop语句 格式: Do While 循环体 Loop 说明: 语句执行过程。,假,循环体,真,条件,【例6-2-5】用Do语
13、句编写程序,求1到100的累加和。,第205页,【例6-2-6】我国有13亿人口,按人口年增长0.8%计算,多少年后我国人口超过26亿。 分析:解此问题两种方法,可根据公式:26=13*(1+0.008)n 直接利用标准对数函数求得;也可利用循环求得,程序如下: Private Sub Command1_Click() x = 13 n = 0 Do While x 26 x = x * 1.008 n = n + 1 Loop Print n, x End Sub,第206页, Do循环需要有能够改变循环条件表达式值的语句,否则循环永远不会结束,即死循环。 Exit Do语句用于强制跳出循环
14、。 Do.Loop 语句的另一种形式格式: Do 循环体 Loop While 这种形式可以保证循环体至少执行一次。,假,循环体,真,条件,第207页,2Do UntilLoop语句 格式: Do Until 循环体 Loop 说明: 语句执行过程,真,循环体,假,条件,第208页, 另一种语句形式是把测试条件放在Loop语句中,这种形式可以保证循环至少执行一次。 格式: Do 循环体 Loop Until ,真,循环体,假,条件,【例6-2-7】用Do UntilLoop语句改写例6.15。,第209页,WhileWend语句,由WhileWend语句构成的循环称为当循环或While循环。
15、格式: While 循环体 Wend,假,循环体,真,条件,【例6-2-8】用公式/41 - 1/3 + 1/5 - 1/7 + 求的近似值(计算到最后一项的绝对值小于10-6)。,【例6-2-9】求e的近似值,第210页,求自然对数e的近似值,要求其误差小于0.00001,近似公式为: 该例题涉及两个问题: (1)用循环结构求级数和的问题。本例根据某项值的精度来控制循环的结束与否。 (2)累加:e=e+t 循环体外对累加和的变量清零 e=0 连乘:n=n*i 循环体外对连乘积变量置1 n=1 Private Sub Form_Click() Dim i%,n e End Sub,第211页,
16、几种循环语句的比较,1.ForNext语句 s = 0 For i = 1 To 10 s = s + i Next Print s,2.WhileWend语句 s = 0 i = 1 While i = 10 s = s + i i = i + 1 Wend Print s,3.Do WhileLoop语句 s = 0 i = 1 Do While i = 10 s = s + i i = i + 1 Loop Print s,4.DoLoop While语句 s = 0 i = 1 Do s = s + i i = i + 1 Loop While i = 10 Print s,5. Do
17、 Until Loop语句 s = 0 i = 1 Do Until i 10 s = s + i i = i + 1 Loop Print s,6. DoLoop Until语句 s = 0 i = 1 Do s = s + i = i + 1 Loop Until i 10 Print s,第212页,多重循环,在循环语句中使用另一个循环语句称为循环的嵌套。 两个For语句嵌套的形式: For i=m1 To m2 For j=n1 To n2 内循环 外循环 Next j Next i,第213页,例如: For i = 1 To 3 For j = 1 To 3 Print i, j
18、Next Next 执行过程: i=1 j=1 输出1,1 j=2 输出1,2 j=3 输出1,3 (内层循环完毕,进行外层的下一次循环) i=2 j=1 输出2,1 j=2 输出2,2 j=2 输出2,2 i=3 j=1 输出3,1 j=2 输出3,2 j=3 输出3,3,第214页,【例6-2-10】打印九九乘法表. For i = 1 To 9 For j = 1 To 9 se = i Next j Picture1.Print Next i,思考:打印上三角或下三角程序如何改动?要打印下三角?,For j = 1 To i,第215页,For ii =1 To 10 For jj=1
19、 To 20 Next ii Next jj,For ii =1 To 10 For ii=1 To 20 Next ii Next ii,For ii =1 To 10 For jj=1 To 20 Next jj Next ii,For ii =1 To 10 Next ii For ii =1 To 10 Next ii,对于循环的嵌套,要注意以下事项: 内循环变量与外循环变量不能同名; 外循环必须完全包含内循环,不能交叉; 不能从循环体外转向循环体内,反之则可以。 正确错误,第216页,1、【例6-2-11】用辗转相除法求两自然数m,n的最大公约数和最小公倍数。 分析:求最大公约数的算
20、法思想: (1)对于已知两数m,n,使得mn; (2) m除以n得余数r; (3)若r=0,则n为最大公约数结束;否则执行(4); (4)mn,nr,再重复执行(2)。 例 求 m=14 ,n=6 的最大公约数. If m 0) m=n n=r r= m mod n Loop Print 最大公约数=, n,m n r 14 6 2 6 2 0,辗转相减法 m=m-n mn n=n-m nm m、n为公约数 m=n Do While m n m n If m n Then 14 6 m = m n 8 6 Else 2 6 n = n m 2 4 End If 2 2 Loop,第217页,素
21、数是一个大于2,且不能被1和本身以外的整数整除的整数。 判别某数m是否为素数最简单的方法是: 对于m 从 i=2,3,m-1判别m能否被i整除,只要有一个能整除,m不是素数,否则m是素数。 【例6-2-12】求100以内素数的代码: For m = 2 To 100 For i = 2 To m - 1 If (m Mod i) = 0 Then GoTo NotNextM Next i Print m NotNextM: Next m,m是否为素数,求100以内的素数,思考: 此例用Go To语句对非素数不作判断,若不用GoTo语句,如何修改程序?,2. 求素数,第218页,“穷举法”也称为
22、“枚举法”或“试凑法”,即将可能出现的各种情况一一测试,判断是否满足条件,一般采用循环来实现。 【例6-2-13】百元买百鸡问题。假定小鸡每只5角,公鸡每只2元,母鸡每只3元。现在有100元钱要求买100只鸡,编程列出所有可能的购鸡方案。 设母鸡、公鸡、小鸡各为x、y、z只,根据题目要求,列出方程为: x+y+y=100 3x+2y+0.5z=100 三个未知数,两个方程,此题有若干个解。 解决此类问题采用“试凑法”,把每一种情况都考虑到。 方法一:最简单三个未知数利用三重循环来实现。 方法二:从三个未知数的关系,利用两重循环来实现。,3.穷举法,第219页,4.递推法 “递推法”又称为“迭代
23、法”,其基本思想是把一个复杂的计算过程转化为简单过程的多次重复。每次重复都从旧值的基础上递推出新值,并由新值代替旧值。 【例6-2-14】猴子吃桃子。小猴在某天摘桃若干个,当天吃掉一半多一个;第二天吃了剩下的桃子的一半多一个;以后每天都吃尚存桃子的一半多一个,到第7天要吃时只剩下一个,问小猴共摘下了多少个桃子? 分析:这是一个“递推”问题,先从最后一天推出倒数第二天的桃子,再从倒数第二天的桃子推出倒数第三天的桃子。设第n天的桃子为xn,那么它是前一天的桃子数的xn-1 的一半减1,即xn =( xn-1 +1)2,第220页,在若干个数中求最大值,一般先假设一个较小的数为最大值的初值,若无法估
24、计较小的值,则取第一个数为最大值的初值;然后将每一个数与最大值比较,若该数大于最大值,将该数替换为最大值;依次逐一比较。 例 随机产生10个100200之间的数,求最大值。,Private Sub Command1_Click() Max = 100 For i = 1 To 10 x = Int(Rnd * 101 + 100) Print x; If x Max Then Max = x Next i Print Print 最大值=; Max End Sub,5.最小、最大值,第221页,GoTo语句,GoTo语句可以无条件地转移到过程中指定的行。 格式:GoTo 行号|标号 说明: 行
25、号和标号都是用来标记程序语句的,行号是一个整数,例如: 15 标号是以冒号结尾的标志符,例如: Start : 程序中遇到GoTo语句,便要转向它所标记的位置执行语句。GoTo只能跳到它所在过程中的行。 利用Goto语句与条件语句的结合可以实现循环功能。,第222页,例如: i = 1 Start: Print *; i = i + 1 If i = 10 Then GoTo Start End If,第223页,【小结】: 介绍For、While、Do循环语句的使用、循环结构的嵌套使用培养学生利用循环结构解决实际问题的能力。 【作业】: 1、历次等级考试真题中相关部分练习题 2、书本P132
26、页 选择题10-15 3、书本P105页 操作题7、9、10、14,第224页,【教学进程】: 第6章第7、8、9、10学时 【授课类型】: 理论课 【教学目的要求】:数组的基本概念、静态数组的声明;动态数组的声明;数组的初始化、释放存储空间、输入、输出、保留动态数组的内容;控件数组的表示、建立及使用。 【教学重点】: 静态数组。 【教学难点】: 动态数组。,第225页,6.3.1 一维静态数组,6.3.2 二维和多维静态数组,6.3.3 动态数组,6.3.4 控件数组,6.3 数组,第226页,1.引例 【例6-3-1】若我们要求一个班100个学生的平均成绩,然后统计高于平均分的人数。 按以
27、前简单变量的使用和循环结构相结合,求平均成绩程序段如下: aver = 0 For i = 1 To 100 mark = InputBox(输入 + i + 位学生的成绩) aver = aver + mark Next i aver = aver / 100 但若要统计高于平均分的人数,则无法实现。mark是一个简单变量,存放的是最后一个学生的成绩。 已有知识解决方法:再重复输入成绩,带来两个问题: (1)输入数据的工作量成倍增加; (2)若本次输入的成绩与上次不同,则统计的结果不正确。 解决此问题的根本方法,引入数组,始终保持输入的数据,一次输入,多次使用。,第227页,6.3.1 一维
28、静态数组,1一维数组的定义 格式: Public (下标上界) As 数据类型 说明: 用Public定义数组表示数组为公用数组 用Dim在模块中定义表示模块级数组 用Static或Dim在过程中定义为局部数组 例如: Public test(4) As Integer Dim S(2) As Long “数组名”在程序中用来代表数组的名称。,第228页, “下标上界”是待定义数组元素的最大下标。 在VB中数组的第一个元素的下标是0。 例如: Public test(4) As Integer 数组元素分别为:test(0)、test(1)、test(2)、test(3)、test(4)。 强
29、制改变数组的起始下标,使其变为1 “数据类型”用于指定数组元素的数据类型。默认为变体型。,第229页, 另一种数组定义格式: Public (下界 To 上界)As 类型名称 例如: Public Arr(2 To 5) 数组元素为Arr(2) 、Arr(3)、Arr(4)、Arr(5)共4个元素 Public Arr(-1 To 3) 数组元素为Arr(-1)、Arr(0) 、Arr(1) 、Arr(2) 、Arr(3) 使用这种定义格式可以更好地反映对象的特性,例如: Dim age(18 To 40) 用来存储年龄从18岁到40岁的人的数组 Dim production(1998 To
30、2004) 用来存储1998年到2004年的产量的数组,第230页,2多维数组的定义 格式:Public (第一维下标,第二维下标) As 数据类型 例如: Public Arr(2,3) As Integer 定义一个二维数组,名字为Arr,数据类型为Integer,该数组有 3行(02)、4列(03),共12个元素。,另一种定义方式,例如: Public A(1 To 2,1 To 3)As Integer 定义后数组元素为:A(1,1) A(1,2) A(1,3) A(2,1) A(2,2) A(2,3),共6个元素。,6.3.2 二维和多维静态数组,第231页,数组元素的操作,1数组的
31、引用 方法:在数组名后面的括号中指定被引用元素的下标,例如: A(2),x(1,3) 数组元素以被赋值也可以参加表达式的运算。 例如: A(2) = a X(5) = 5 x(3) = x(2) + x(1),第232页,2数组元素的输入输出 用InputBox函数为数组元素赋值。例如: Dim A(5) For i = 0 To 5 A(i) = Val(InputBox(请输入一个数, 数组输入) Next i 将数组元素赋值为有规律的数列。例如: Dim A(5) For i0 To 5 A(i)i Next i 将数组元素存储为奇数数列: For i1 To n A(i)2*i-1 N
32、ext i,第233页, 输出数组元素的值。 例如: For i=0 To 5 Print A(i); Next i 【例6-3-2】从10个数中找出最大数。 【例6-3-3】将n个数从大到小排序。 【例6-3-4】二维数组的输入/输出。 【例6-3-5】 求二维数组每行元素之和。,第234页,6.3.3 动态数组,动态数组可以在任何时候改变元素个数。 创建动态数组步骤: 1首先定义一个没有下标的数组,这样就将数组定义为动态数组。例如: Dim Arr() As Integer 2使用数组时,用ReDim语句分配实际的元素个数。例如: ReDim Arr (10) ReDim Arr (2 T
33、o10) 注意:ReDim语句不能改变数组的维数。 可以多次使用ReDim语句定义同一个数组。例如: Dim s As Integer Dim a() As Integer 定义一个动态数组 s = InputBox(Input a number:) 将输入的数值作为数组下标上界 ReDim a(s) 过程中给数组分配空间,第235页,动态数组实例:,第236页,6.3.4 控件数组,1控件数组的概念 控件数组是一组具有相同名称、类型和事件过程的控件,例如,Label1(0)、Label1(1)、Label1(2)等。 控件数组具有以下特点: 相同的控件名称(即Name属性); 控件数组中的控
34、件具有相同的一般属性; 所有控件共用相同的事件过程。 用下标索引值(Index)来标识各个控件,第一个下标索引号为0,第二个下标索引号为1,依此类推。 2控件数组的建立 方法一:复制已有的控件并将其粘贴到窗体上。 方法二:将窗体上已有的类型相同的多个控件的Name属性设置为相同的值。,第237页,3控件数组的使用 【例6-3-6】建立含有4个命令按钮的控件数组,单击某个按钮时,显示所选按钮名称。,第238页,【例6-3-7】建立含有四个命令按钮的控件数组,当单击某个命令按钮,分别显示不同的图形或结束操作。,Private Sub Command1_Click(Index As Integer)
35、 Select Case Index Case 0 画直线 Case 1 画矩形 Case 2 画圆 Case Else End End Select End Sub,第239页,建立的步骤如下: 在窗体上画出某控件,设置该控件的Index值为0,表示该控件为数组,这是建立的第一个元素。 在编程时通过Load方法添加其余的若干个元素,也可以通过Unload方法删除某个添加的元素 每个新添加的控件数组通过Left和Top属性确定其在窗体的位置,并将Visible 属性设置为True。,【例6-3-8】利用在运行时产生控件数组,构成一个国际象棋棋盘。 当单击棋格,显示对应的序号,并且将所有棋格颜色
36、变反。,第240页,1. 统计 【例6-3-9】输入20个学生的成绩(显示在第一个文本框中),将其中高于平均分的成绩显示在第二个文本框中。,For i = 1 To 20 a(i) = InputBox(输入a( a,,b=; b End Sub,6.4.2 子 过 程,第254页,2.子过程定义 Sub 子过程名(参数列表) 局部变量或常数定义 语句 Exit Sub 语句 End Sub 3.子过程的调用 子过程名 参数列表 或 Call 子过程名(参数列表) 4.子过程与函数过程区别: (1)函数过程名有值,有类型,在函数体内至少赋值一次; 子过程名无值,无类型,在子过程体内不能对子过程
37、名赋值; (2)调用时,子过程调用是一句独立的语句。 函数过程不能作为单独的语句加以调用,必须参与表达式运算。 (3)一般当过程有一个函数值,使用函数过程较直观; 反之若过程无返回值,或有多个返回值,使用子过程较直观。,第255页,【例6-4-4】分别编一计算某级数部分和的子过程和函数过程,并调用。 级数为: 精度为:,函数过程实现求部分级数和 Function jishu1(x!, eps#) As Double Dim n%, s#, t# n = 1: s = 0: t = 1 Do While (Abs(t) = eps) s = s + t t = t * x / n n = n +
38、 1 Loop jishu1 = s End Function,子过程实现求部分级数和 Sub jishu2(s#, x!, eps#) Dim n%, t# n = 1: s = 0: t = 1 Do While (Abs(t) = eps) s = s + t t = t * x / n n = n + 1 Loop End Sub,f1 = jishu1(2#, 0.000001) 调用函数过程 Call jishu2(f2, 2#, 0.000001) 调用子过程 或 jishu2 f2,2#,0.00001,第256页,程序运行流程: Private Sub Command1_Cl
39、ick() Dim f1#, f2# f1 = jishu1(2#, 0.000001) Call jishu2(f2, 2#, 0.000001) Print f1=; f1, f2 = ; f2 End Sub,第257页,6.4.3 参数传递,Visual Basic中过程的参数传递有两种方式: 1按地址传递参数(ByRef) 实际上是对实际参数操作,过程中的运算结果将永远改变实际参数的值。 2按值传递参数(ByVal) 过程执行时,传递的只是实际参数的副本,过程中都是在对形式参数操作,如果过程改变了这个值,则所作变动不会影响到实际参数的本身。 【例8-5】测试按地址传递参数与按值传递参
40、数的区别。,第258页,使用过程注意事项: 1. 确定自定义的过程是子过程还是函数过程 函数过程名有值,子过程名无值。 2过程中形参的个数和传递方式的确定 过程中参数的作用是实现过程与调用者的数据通信。 (1)从主调程序获得初值,值传递。 (2)将结果返回给主调程序,地址传递。 3. 实参与形参结合时对应问题 个数、类型、位置、次序一一对应。 形参是值传递,对应实参可以是表达式、常量、数组元素。 形参是地址传递,对应实参只能是简单变量。 数组、记录类型、对象只能是地址传递。,第259页,作用域:变量、过程随所处的位置不同,可被访问的范围。 1.过程的作用域 窗体/模块级:加Private关键字
41、的过程,只能被定义的窗体或模块中的过程调用。 全局级:加Public关键字(缺省)的过程,可供该应用程序的所有窗体和所有标准模块中的过程调用。,6.4.4 变量的作用域,第260页,2. 变量的作用域 局部变量:在过程内用声明的变量,只能在本过程中使用。 窗体/模块级变量:在“通用声明”段中用Dim语句或用Private语句 声明的变量,可被本窗体/模块的任何过程访问。 全局变量:在“通用声明”段中用Public语句声明的变量,可被本应用程序的任何过程或函数访问。,第261页,例如在下面一个标准模块文件中不同级的变量声明: Public Pa As integer 全局变量 Private M
42、b As string *10 窗体/模块级变量 Sub F1( ) Dim Fa As integer 局部变量 End Sub Sub F2( ) Dim Fb As Single 局部变量 End Sub,第262页,若在不同级声明相同的变量名,系统按局部、窗体/模块、全局次序访问如: Public Temp As integer 全局变量 Sub Form_Load() Dim Temp As Integer 局部变量 Temp=10 访问局部变量 Form1.Temp=20 访问全局变量必须加窗体名 Print Form1.Temp, Temp 显示 20 10 End Sub,第2
43、63页,Sub f1(x) x=f2(xx)*3 End Sub,Sub Command1_Click() Call f1(y) End Sub,Function f2(x) f2=f3(x)+3 End Sub,Function f3(x) f3=x*x End Sub,Sub f1(x) Call f1(y) End Sub,过程的直接调用,Sub Command1_Click() Call f1(y) End Sub,过程的递归调用,6.4.5 递归,第264页,1.递归的概念 用自身的结构来描述自身就称为“递归”。例对阶乘的定义:,2. 递归过程 过程在自身定义的内部调用自己。 【例6
44、-4-6】编fac(n)=n! 的递归函数 Function fac(n As Integer) As Integer If n = 1 Then fac = 1 Else fac = n * fac(n - 1) End If End Function,Sub Command1_Click() Print “fac(4)=”;fac(4) End Sub 结果:fac(4)=24,第265页,递推,回归,在递归处理中,用栈来实现。栈中存放形参、局部变量、返回地址。 递推过程:每调用自身,当前参数压栈,直到达到递归结束条件。 回归过程:不断从栈中弹出当前的参数,直到栈空。 递归算法设计简单,但
45、消耗的机时和占据的内存空间比非递归大。 思考: 若上述fac函数中少了 : If n = 1 Then fac = 1 即仅有语句:fac = n * fac(n - 1) 或 n=0 程序运行将造成何结果?由此可见构成递归的结构如下: 递归结束条件及结束时的值; 能用递归形式表示,并且递归向终止条件发展。,fac(2)=2*fac(1),fac(1)=1,fac(4)=4*6,fac(3)=3*2,fac(2)=2*1,fac(3)=3*fac(2),fac(4)=4*fac(3),第266页,【小结】:主要介绍了函数过程的定义和调用、Sub过程的定义和调用、过程之间的参数传递(按值传送、按
46、地址传送)、过程的作用域(模块级过程、全局级过程)、变量的作用域(局部变量、模块级变量、全局变量)及变量的生存期(动态变量、静态变量)培养综合应用的能力。 【作业】: 1、历次等级考试真题中相关部分练习题 2、书本P195页 选择题1-12 3、书本P197页 操作题2、8、10,第7章 菜单程序设计,第268页,【授课类型】:理论课、实践课 【教学目的要求】: 1、下拉式菜单的设计 2、弹出式菜单的设计 3、工具栏、状态栏的设计。 【教学重点】: 菜单编辑器、菜单应用程序设计。 【教学难点】: 菜单项的增减、菜单的各项属性。,第269页,【教学进程与章节学时分配】: 讲授3学时,上机2学时,
47、共5学时 2学时: 7.1 用菜单编辑器建立菜单 7.2 菜单项的控制 7.3 菜单项的增减 7.4 弹出式菜单 2学时: 实验十一 菜单程序设计,第270页,下拉式菜单 弹出式菜单 设计菜单的步骤 菜单编辑器,7.1 菜单概述,第271页,下拉式菜单,下拉式菜单位于窗口的顶部,它有一个包含多个菜单项的主菜单,称为菜单栏。菜单栏中的菜单项称为菜单标题。,第272页,弹出式菜单,单击鼠标右键弹出的菜单称为弹出式菜单,或称为“快捷菜单”、“上下文相关菜单” 。,第273页,设计菜单的步骤,设计菜单的一般步骤为: 1界面设计,包括顶级菜单中的各菜单项,各级子菜单中 的菜单项,以及它们各自的事件过程。
48、 2打开菜单编辑器,建立各级菜单,并设置相应的属性。 3编写程序代码。为相应的菜单项编写Click事件代码。,第274页,菜单编辑器,1打开菜单编辑器的方法 2菜单编辑器的组成 菜单编辑器窗口由3部分组成:数据区、编辑区和菜单显示区。,第275页,菜单编辑器的使用 工具菜单编辑器(Ctrl+E); 窗体上快显菜单菜单编辑器。,常用属性: 1. 标题(Caption) 热键 前面加& 2. 名称(Name)文本框 分隔符也应有名称 3. 快捷键(Shortcut) 菜单名没有快捷键 4. 复选(Checked)检查框 TRUE 有 5. 有效(Enabled)检查框 6. 可见(Visible)
49、检查框,第276页,7.2 下拉式菜单的设计,【例7-2-1】用下拉式菜单设计一个具有加、减、乘、除、清除和退出功能的程序。,第277页,7.3 菜单项的控制,1.有效性控制 实现菜单项的有效性控制的两种方法: 在设计阶段,选中菜单编辑器窗口中的“有效(E)”选项。 在编写代码阶段,通过设置Enabled属性来实现。 格式:菜单项名称Enabled=True | False 例如:Mul.Enabled = False 2. 菜单项标记 实现菜单项标记的两种方法: 在设计阶段,选中菜单编辑器窗口中的“复选(C)”选项。 在编写代码阶段,通过设置Checked属性来实现。 格式:菜单项名称Che
50、cked =True | False,第278页,例如: Private Sub Mul_Click() Mul.Checked=Not Mul.Checked End Sub 若要判断菜单项是否处于活动状态,可用下面的IF语句格式: If Mul.Checked Then 在这里编写Mul菜单项处于活动状态时,要执行的代码。 End If,第279页,菜单项的键盘选择,访问键:同时按下Alt键和加下划线的字母键,就可以弹出菜单 。 快捷键:直接执行菜单命令 访问键的建立方法: 在设计菜单时,在菜单项的标题中加入一个由“&”引导的字母。 例如:在例10.1中将“计算1”改为“计算1&A”或“&
51、A计算1”,第280页,菜单项的增减,Load方法加入新的菜单项 Unload方法删除已有的菜单项 【例7-3-1】下面程序为增加或减少菜单项的程序。运行程序时,单击“增加”将增加一个新菜单项,依次为“新增1”、“新增2”,单击“减少”将从最下面的菜单项开始删除菜单项。,第281页,7.4 弹出式菜单,建立弹出式菜单的步骤: 1用菜单编辑器建立菜单,并把主菜单项的Visible(可见性)属性设置为False。 2用PopupMenu方法弹出显示。一般将此方法放入窗体的MouseDown事件过程中。 格式:对象名.PopupMenu 菜单名,Flags,X,Y, BoldCommand 说明:
52、Flags:位置参数,用来指定弹出式菜单的位置及行为。包含位置常数和行为常数。 X,Y:坐标值,表示弹出式菜单在窗体上显示的位置,默认为鼠标坐标。 BoldCommand:用于指定菜单中要以粗体显示的菜单名称 【例7-4-1】用弹出菜单命令改变窗体颜色。,第282页,【小结】:主要介绍了下拉式菜单、弹出式菜单、工具栏、状态栏的设计,与常用控件相结合学生培养综合应用的能力。 【作业】: 1、历次等级考试真题中相关部分练习题 2、书本P226页 选择题 3、书本P228页 操作题1,第8章 多重窗体与多文档界面,第284页,【授课类型】:理论课、实践课 【教学目的要求】: 1、多文档界面设计 2、
53、对话框的设计。 【教学重点】:多窗体操作有关的属性和方法、设计多窗体应用程序、多窗体应用程序的保存和加载 【教学难点】:设计多窗体应用程序。 【教学进程与章节学时分配】: 讲授3学时,上机2学时,共5学时,第285页,8.1 多重窗体和多文档窗体,一、多重窗体 1. 添加窗体 “工程|添加窗体”,新建,现存,添加“现存”窗体时要注意: 防止多个窗体的Name相同而不能添加; 添加的窗体实际是将其他工程中已有的窗体加入,多个工程共享窗体; 通过“另存为”命令以不同的窗体文件名保存,断开共享。 2. 保存窗体 一个工程中有多个窗体,应分别取不同文件名保存在磁盘上,VBP工程文件中记录了该工程的所有
54、窗体文件名。,第286页,3. 设置启动窗体,设置启动对象,4. 窗体语句 (1)Load语句:装入窗体到内存但没有显示窗体 形式: Load 窗体名称 (2)Unload语句:从内存删除窗体 形式: Unload 窗体名称,“工程/属性” “启动对象”,第287页,5. 窗体方法 (1)Show方法:显示一个窗体(当窗体没有Load,自动Load) 窗体名称.Show 模式 0 Modal:关闭才能对其他窗体进行操作。 1 Modeless,可以对其他窗体进行操作。 (2) Hide方法:隐藏窗体,没有Unload删除 窗体名称. Hide 6. 不同窗体间数据的存取 (1)存取控件的属性
55、另一窗体名.控件名.属性 (2)存取变量的值 另一窗体名.全局变量名,第288页,例8-1-1 输入和计算学习成绩。,模块: Public MATH As Single Public PHYSICS As Single Public CHEMISTRY As Single Public CHINESE As Single Public ENGLISH As Single,第289页,例8-2-1 1. 创建和设计MDI窗体及其子窗体 (1) 创建和设计MDI窗体 创建: “工程/添加MDI窗体”命令,设计:一般有菜单栏、工具栏、状态栏,8.2 多文档界面(MDI),第290页,(2) 创建和设
56、计MDI子窗体 创建: MDI子窗体是一个MDIChild属性为True的普通窗体。 要创建多个子窗体,通过窗体类来实现: Public Sub FileNewProc() Dim NewDoc As New frmMDIChild No = No + 1 NewDoc.Caption = no & No NewDoc.Show End Sub 设计:可有菜单栏,但必须有文本框。,MDI子窗体的Name,第291页,2. MDI窗体与子窗体的交互 (1)活动子窗体和活动控件 MDI窗体的两个属性:ActiveForm 和ActiveContro。l 例:将子窗体的文本框中所选文本复制到剪贴板上
57、。 ClipBoard.SetText frmMDI.ActiveForm.ActiveControl.SelText (2)显示MDI窗体及其子窗体 显示任何窗体的方法为show,还有有关规则: 加载子窗体时,其父窗体会自动加载并显示;反之则无。 MDI窗体有AutoShowChildren属性,决定是否自动显示子窗体。 (3)维护子窗体的状态信息 (4)用QueryUnload卸载MDI窗体,第292页,3. 多文档界面应用程序中的“窗口”菜单 (1)显示打开的多个文档窗口 要在某个菜单上显示所有打开的子窗体标题,只需利用菜单编辑器将该菜单的WindowList属性设置为True。 (2)排列窗口 利用Arrange方法进行层叠、平铺和排列图标。 形式: MDI窗体对象.Arrange 的排列方式:,第293页,8.3对话框,1. 对话框的分类 预定义对话框 通用对话框 自定义对话框 2. 对话框的特点 一般情况下,对话框窗口的边框不能改变大小的。 对话框中通常没有最大化按钮、最小化按钮和控制菜单框。 对话框中一般有“确定”、“取消”等类似按钮。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- php课程设计考试系统
- 一型糖尿病治疗新进展
- 万以内的加减法
- 眼部聚合物材料植入术后护理培训
- 耳鼻喉科鼻窦炎药物治疗方案
- 风湿免疫科类风湿关节炎药物管理教程
- 手机界面对比设计分析
- 皮肤科湿疹护理常规流程
- 设计变更程序管理规范
- 学雷锋精神 弘扬互帮互助
- 2025年电工电子技术试卷附答案
- 2025广东深圳市福田区选用劳务派遣人员308人笔试历年备考题库附带答案详解试卷3套
- 人力资源业务伙伴人力资源BP团队建设与管理方案
- 小学六年级数学下册2025年模拟训练试卷(含答案)
- DB13∕T 5674-2023 生产储存类小微企业消防安全管理规范
- 5年(2021-2025)北京中考物理真题分类汇编:专题07 运动和力(原卷版)
- TCSCA120034-2020医院物业管理服务认证要求
- 含砂雾封层施工技术指南
- 触电的避险与自救
- 注塑技术员试题与答案
- 小儿推拿治疗便秘
评论
0/150
提交评论