版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1,VB程序设计,任课教师:余凌 邮箱:a_k_ 电话2,学时:48(32+16) 教材: VB程序设计教程 周霭如, 清华大学出版社 参考资料: VB6.0入门与提高 张树兵, 清华大学出版社 VB程序设计教程 刘瑞新, 电子工业出版社 VB实用教程 郑阿奇, 电子工业出版社,3,教学内容,第一章 概述 2学时 第二章 数据与表达式 4学时 第三章 顺序结构 2学时 第四章 分支结构 2学时 第五章 循环结构 2学时 第六章 VB常用控件 第七章 数组与记录 2学时 第八章 过程 4学时,4,第九章 文件 2学时 第十章 菜单、多重窗体与多重文档 2学时 第十一章
2、绘图 2学时 第十二章 程序调试与错误处理 2学时 附:ACCESS数据库应用 4学时 总结 2学时,5,教学目的要求: 了解VB的发展过程和特点 掌握VB集成开发环境 理解面向对象程序设计方法 掌握VB工程开发设计步骤,教学重点 VB集成开发环境 VB工程开发设计步骤 面向对象程序设计方法,第1章 概述,6,时间安排: 2学时,教学难点: 面向对象程序设计中对象、属性、方法、事件等概念,7,1.1 VB的发展过程和特点,一、发展过程:,年: . 年秋:. 年: . 年: . 年: . 年: .,Windows操作系统产生初期,人们只能利用Windows API(应用程序接口)的一千多个函数编
3、写程序。微软公司就开发了当今流行的Microsoft Visual Studio工具套件,就是其中一种。,8,VB6.0 版本,学习版: Learning,VB的基础版本,可开发WINDOWS或WINDOWS NT 程序。内容包括所有内部控制以及网络、数据绑定控件。,专业版: Professional,为专业编程人员开发功能强大的分布式应用程序。包括专业版的全部功能,同时具有自动化管理器、部件管理器及数据库管理工具。,企业版: Enterprise,为专业编程人员提供的一套功能完备工具。包括学习版的全部功能和ActiveX控件、Internet控件开发工具、动态HTML页面设计。,9,二、VB
4、主要功能特点,VB是面向对象的可 视化程序设计工具,友好的集成开发 环境,支持多种数据库系统 的访问,支持动态数据交换、 动态链接库、对象的 链接与嵌入技术及 ctiveX技术,10,1.2 VB6.0 集成开发环境,VB6.0启动:,11,12,标题栏,可显示当前VB的工作模式: 设计模式:可进行界面设计和代码编写 运行模式:运行程序 中断模式:程序运行暂时中断,可编辑代码,但不可设计界面,13,工程资源管理窗口,一个工程由多种类型的文件组成,如工程文件、窗体文件、标准模块文件等,在工程资源管理窗口中以树形目录结构的形式列出了当前工程中包括的所有文件。,工程文件(.vbp) 窗体文件(.fr
5、m) 标准模块文件(.bas) 类模块文件(.cls) 工程组文件(.vbg) 资源文件(.res),14,属性窗口,属性窗口主要对窗体和控件设置,15,代码编辑器窗口:,代码窗口,用于显示和编辑代码,16,传统过程化应用程序,从第一行开始执行,并按照预定的路径执行,用户无法改变程序的流程,事件驱动的应用程序,代码不是按预定的路径执行,而是在响应不同事件时执行不同的代码段.,事件触发 由用户触发 由操作系统触发 由其它应用程序的消息触发,采用面向对象、事件驱动方式的编程,程序员不需要考虑精确次序执行的每一步骤,而只需编写响应用户动作的程序即可,工作量相对较少。用VB编程,实际上是与一组标准对象
6、进行交互的过程。,1.3 面向对象程序设计,17,对象,是系统中的基本运行实体,是代码和数据的集合.,用户定义,对象是具有特殊属性(数据)和行为方式(方法)的实体。建立对象后,其操作与该对象有关的属性、事件和方法来描述。,类,是封装数据和隐藏数据的工具,是一组用来定义对象的相关过程和数据的集合.,一个对象就是类的一个实例,类具有封装性、继承性和多态性特征,VB中,对象分,系统定义,如窗体、菜单等,18,属性,是一个对象的特性,不同的对象有不同的属性。,对象常见的属性: 标题(Caption) 名称(Name) 颜色(Color) 字体(Font) 是否可见(Visible),19,通过修改对象
7、的属性,可以改变对象的外观与功能。 在属性窗口上设置 在程序代码中用赋值语句设置,属性设置,格式: .=,例: Command1.Caption=“确定” Command1.Font=19,20,事件,在VB中,系统为每一对象预先定义好一系列的事件,如: 单击(Click) 双击(DblClick) 装入事件(Load) 改变事件(Change) 鼠标移动事件(MouseMove) 获取焦点事件(GotFocus),是指发生在对象上的事情。,事件过程的一般格式: Private Sub _() End Sub 例: Private Sub Command1_Click() Form1.Back
8、Color = vbRed End Sub,21,方法,方法是面向对象程序设计中所特有的,是一种特殊的过程和函数,可供用户直接调用。 如:打印(Print)方法、显示窗体(Show)方法、清除(Cls)方法、移动(Move)方法,对象调用格式: . ,是指对象要执行的动作。,22,1.4 VB程序设计的基本步骤,程序设计的一般过程,分析问题,设计算法,绘制流程图,编制程序,调试程序,23,新建一个工程,设计用户界面,编写事件过程及通用过程代码,保存、调试、运行, 形成可执行文件,以求两数和的程序为例,说明VB工程的建立全过程,VB程序设计的基本步骤,24,1、新建工程,途径有两种: 启动VB后
9、,在系统显示的“新建工程”对话框的“新建”选项卡中选择“标准EXE”,然后单击“打开”按钮。 在“文件”菜单中选择“新建工程”命令,然后在“新建工程”对话框中选择“标准EXE”,然后单击“打开”按钮。,25,2、设计界面,设计对象控件的布局 改变Caption属性的值为“求和” 改变对象标签、命令按钮Caption 属性的值 改变文本框的属性Text为0,窗体,标签,命令按钮,文本框,26,3、编写代码,三种方式: 在窗体上双击命令按钮 在工程管理器窗口单击“查看代码”按钮 在视图菜单中选择“代码窗口”命令,或单击“工具栏”上的“代码窗口”按钮,27,4、运行与调试工程,选择“运行”菜单中的“
10、启动”命令,或单击工具栏中的“启动”按钮,或按F5键,即可运行。,在文本框中输入数据,然后点击“求和”按钮,即可得到两数的和,显示在文本框中。,计算结果,28,5、保存工程,程序代码检查没有错误后,可保存工程。 选择“文件”菜单中的“保存工程”或“工程另存为”命令,或单击工具栏中的“保存工程”按钮。若是第一次保存,则系统弹出“文件另存为”对话框。 在“文件对话框”中选择合适的文件夹后,点击“保存”即可。,保存窗体文件后,系统会弹出“工程另存为”对话框,同样选择文件夹,点击“保存”,29,6、编译工程形成可执行文件,编译成.exe文件,可脱离VB环境运行 选择“文件”菜单中的“生成可执行文件”
11、,则系统弹出“生成工程”对话框。 在“生成文件对话框”中选择合适的文件夹,输入文件名点后,击“确定”即可。,30,输入代码规则:,每行不超过1023个字符 一行写多个语句用“:”隔开 可用续行符“ _”在下一行接着写 不分大小写,关键字及标准函数自动处理成第一母大写 注释行用“”开头,VB程序结构:,窗体模块 标准模块 类模块,31,课后分析: 面向对象程序设计中对象、属性、方法、事件、类等概念的理解随后续课程的学习而逐渐加深,32,教学目的要求: 掌握VB基本数据类型 掌握VB中的常量与变量 掌握运算符与表达式 了解常用标准函数,教学重点 常量与变量 运算符与表达式 常用标准函数,第章 VB
12、程序设计基础,33,时间安排: 4学时,教学难点: 变量的类型定义 运算符的优先级,34,数据类型是程序设计的必要组成部分,也是程序处理的对象。,在不同语言中,数据类型的规定和处理方法不同。 VB提供系统定义 的数据类型 还允许用户自己 定义,VB提供的基本数据类型主要有: 数值型 字符串型(String) 布尔型(Boolean)逻辑型 日期型(Date) 变体型(Variant) 对象型 (Object),2.1 数据类型,35,类型: 整型(Integer) 长整型(Long) 单精度浮点型(Single) 双精度浮点型(Double) 货币型(Currency) 字节型(Byte),2
13、.1.1 数值型数据,36,整型(Integer):以2个字节的二进制码存储。 十进制:由0-9数字组成和正负号,取值范围-32768-32767 八进制:由0-7数字组成,前面冠以 s End Sub Private Sub Command2_C1ick() angle=Sin(20*pi180) Print angle End Sub,符号常量pi在整个窗体模块中有效, 符号常量r只在本事件过程中有效,54,4)由于符号常量可以用其他符号常量定义,因此在两个以上符号常量之间不要出现循环或循环引用。,例如:在标准模块Modulel中定义: Public Const conA= conB*2
14、在整个应用程序中有效 在标准模块Module2中定义: Public Const conB=conA/2 在整个应用程序中有效,当程序中有两个以上的公共符号常量,而且每个公共符号常量都用另一个去定义时就会出现循环。,出现循环引用,在运行此应用程序时,VB就会产生错误信息。为了避免出现循环引用,可以将公共符号常量限制在单一模块内,或最多只存在于少数几个模块内。,55,5)符号常量是有意义的名字,它用于取代永远不变的数值或字符串。 尽管符号常量有点像变量,但不能像对变量那样修改符号常量,也不能对符号常量赋以新值。,56,3 系统定义符号常量,符号常量的定义可以从“对象浏览器”中获得。使用对象浏览器
15、可以显示包括当前工程及对象库在内的过程、模块、类、属性和方法等的描述信息。,从菜单栏视图中选择“对象浏览器”或(F2),57,每个变量都有名字和数据类型,通过名字来引用一个变量,而通过数据类型来确定该变量的存储方式。,变量是指一个有名称的内存单元。,2.2.2 变量,分为属性变量和用户自定义变量,58,VB变量的命名规则: 第一个字符必须是字母。 长度不超过255个字符。 不可以包含小数点或者内嵌的类型声明字符。 不能使用关键字。 不能与过程名或符号常量同名。,1.变量的命名规则,例如: 合法变量名: strMyString、intCount、MyForm、姓名、性别等 非法变量名: 1x、a
16、+b、 、 等,关键字: 又称保留字,在语法上有固定含义,是语言的自称组成部分,用于表示系统提供的标准过程、函数、运算符、常量等;VB中约定关键字的首写字母为大写。,59,2.变量的声明,变量使用之前,一般必须先声明变量名和类型,以便系统为其分配存储单元。,固定格式声明,隐式声明,强制显式声明,VB变量及其类型 声明方式,60,格式:,说明: :可以是VB提供的各种数据类型或用户自定义类型。 As :方括号部分表示该部分可以缺省。缺省时,变量默认为变体类型. Dim:在窗体模块、标准模块或过程中声明变量。 Private:变量仅在该模块或过程中有效。 Static:在过程中定义静态变量,即使该
17、过程结束,也仍然保留变量的值。 Public:标准模块中声明全局变量,使变量在整个应用程序中有效。 Global: 在标准模块中声明全局变量.,Dim|Private|Static|Public|Global As ,格式声明,61,Defbool|DefByte|DefInt|Deflng|Defcur|Defsng|DefDbl|DefDate |DefStr|DefObj|DefVar 字母范围,字母范围.,变量名后加一特定符号来表明数据类型:,% 整型 SomeValue = “ABC”+SomeValue,63,可在窗体模块或标准模块的声明段中加入语句: Option Explici
18、t,强制显式声明,VB可采用强制声明功能,使所有变量都必须先声明后使用. 这样,若运行时遇到一个未经明确声明的变量名,VB就会 发出错误警告。,声明方式:,在“工具”菜单中打开“选项”对话框,单击“编辑器”选择“要求变量声明”选项,即可自动插入 Option Explicit语句.,注:Option Explicit语句的作用范围仅限于语句所在模块. 对于需要强制式变量声明的窗体模块、标准模块及类模块, 必须将Option Explicit语句放在这些模块的声明段中。,64,VB中有以下6类运算符和表达式: 算术运算符与算术表达式 字符串运算符与字符串表达式 关系运算符与关系表达式 逻辑运算符
19、与逻辑表达式 日期运算符与日期表达式 对象运算符与对象表达式,用运算符将运算对象(或操作数)连接起来即构成表达式。表达式表示了某种求值规则。,操作数可以是常量、变量、函数、对象等,而运算符也有各种类型。,2.3 运算符与表达式,65,2.3.1 算术运算符与算术表达式,算术运算符用于对数值型数据执行各种算术运算。 VB提供了7个算术运算符,优先级次序如表所列:,其中,取负()运算符是单目运算符,其余运算符均为双目运算符(需要两个操作数)。,66,乘方运算用来计算乘方和方根。 例: 102 10的平方,结果为100 10(-2) 10的平方的倒数,即1100,结果为0.01 250.5 25的平
20、方根,结果为5 8(1/3) 8的立方根,结果为2 223 运算顺序从左到右,结果为以64 (-8)(-1/3) 错误,当底数为负数时,指数必须是整数,1乘方运算,2整数除法,例: 104 结果为2 25.686.99 先四舍五人再整除,结果为3,执行整除运算,结果为整型值。参加运算的操作数一般为整型数。当操作数带有小数点时,先被四舍五入为整型数,后整除。,67,例: 10 Mod 4 结果为2 25.68 Mod 6.99 先四舍五人再求余数,结果为5 11 Mod -4 结果为3 -11 Mod 5 结果为-1 -11 Mod 3 结果为-2,3.取模运算,取模运算符Mod用于求余数,为第
21、一操作数整除第二操作数所得的余数. 操作数带小数, 先四舍五入取整型数,后求余; 运算结果符号取决于第一个操作数。,68,注意: “ 若x=0,则产生与最近生成的随机数相同的数; 若省略参数x,则以上一个随机数作为种子,产生序列中的下一个随机数,产生N1,N2问随机数,可使用公式: Int(N2-N1+1)*Rnd +N2,随机种子生成器:Randomize time,79,2.4.2 字符串函数,VisualBasic提供了大量的字符串函数,具有很强的字符串处理能力。,1删除空白字符函数 LTrim(s) 去掉字符串s左边的空白字符(即前导空格)。 RTrim(s) 去掉字符串s右边的空白字
22、符(即后置空格)。 Trim(s) 去掉字符串s左右两边的空白字符。,例如: LTrim(”UUUABC”) 结果为“ABC” RTrim(”ABCUUU”) 结果为“ABC” Trim(”UUUABCUUU”) 结果为“ABC”,80,2取子串函数 Left(s,n) 取字符串s左边的n个字符 Right(s,n) 取字符串s右边的n个字符 Mid(s,p,n) 从字字符串s的第p个字符开始取n个字符 例: Left(“ABCDE”,2) 结果为“AB” Right(“ABCDE”,2) 结果为“DE” Mid(“ABCDE”,2,3) 结果为“BCD” Mid(“ABCDE”,2,6) 结
23、果为“BCDE”,3.字符串长度函数 Len(s) 返回字符串s的长度 例: Len(“ABCDE”) 结果为5,81,5生成空格函数 Space(n) 返回n个空格 例:Space(3)的结果为“UUU”,4生成字符串函数 String(n,s) 取字符串s的第一个字符构成长度为n的新字符串。 例: String(3,”ABC”) 结果 “AAA” String(3,65) 结果 “AAA” (字符”A”的ASCII码为65),82,7字母大小写转换函数 UCase(s) 把小写字母转换为大写字母。 LCase(s) 把大写字母转换为小写字母。 例: UCase(”Abc”) 结果为ABC”
24、 LCase(”ABc”) 结果为abc”,6搜索予字符串函数 InStr(S,s1,s2,C) 在字符串s1中第S个位置开始查找字符串s2出现的起始位置 例: InStr(”ABCDE”,”BC”) 结果为2 1nStr(”ABCDECDE”,”DE”,) 结果为4,83,转换函数用于数据类型或形式的转换,包括整型、实型、字符串型之间以及与ASCII码字符之间的转换。 下面介绍常用的转换函数。 1将字符转换成ASCII码 Asc(s) 返回字符串s中第一个字符的ASCII码。 例: Asc(“A”) 结果为65 Asc(“ABC”) 结果为65,2.4.4 转换函数,2将ASCII码转换成字
25、符 Chr(x) 把x的值转换为对应的ASCII字符 例:Chr(65)的结果为”A”。,84,3将数值转换成字符串 Str(x) 把x的值转换为一个字符串。 如果x为正,则返回的字符串前有一前导空格。 例:Str(123)的结果为“ 123”。 ,4将字符串转换成数值 Val(s) 把数字字符串s转换为数值。 例: Val(“123”) 结果为123 Val(“123AB”) 结果为123 Val(“.123AB”) 结果为.123 Val(”a123AB) 结果为0,85,5转换成逻辑型数据 Cbool(x) 非0为True 0为False。 例:Cbool(123)的结果为True。 ,
26、6转换成日期型数据 Cdate(x) 把数字、字符串转换为日期数据。 例: Cdate(“February 20,1999”) 结果为99-2-20 Cdate(“4:30:40 PM”) 结果为16:30:40,86,日期和时间函数可以显示系统的日期和时间,提供某个事件何时发生及持续时间长短等信息。 常用的日期时间函数有: Now 返回系统日期和时间 Date 返回系统日期 Time 返回系统时间 Day(d) 返回参数d中指定月份的第几天 WeekDay(d) 返回参数d中指定的星期几 Month(d) 返回参数d中指定的月份 Year(d) 返回年份 Hour(d) 返回小时(023)
27、Minute(d) 返回分钟(059) Second(d) 返回秒(059) Timer 返回从午夜开始到现在经过的秒数,2.4.3 日期和时间函数,87,格式输出函数可以使数值、日期或字符串按指定的格式输出。其格式为 Format(,),2.4.5 格式输出函数,:要格式化的数值、日期或字 符串表达式。 :指定表达式的值的输出 格式。 格式字符有三类:数值格式、日期格式和字符串格式。 格式字符要加引号。,88,89,2.4.6 其他函数,1条件函数 Iif(,) 如x1值为真,则返回x2的值,否则返回x3 例: Iif(xy,x,y) 返回x,y中较大值 Iif(x=60,“Pass”,”F
28、ailure”) 2选择函数 Choose(n,.) 例:Choose(3,”星期一”,”星期二” ”星期三” ”星期四” ”星期五”))的结果为”星期三”。,90,课后分析: 本节需掌握知识点较多,不需要一下子都记住,以后用到时逐渐记忆。,91,教学目的要求: 掌握顺序结构程序设计方法 掌握选择结构程序设计方法 掌握循环结构程序设计方法,教学重点 顺序、选择、循环结构程序设计,第3章 流程控制,92,时间安排: 6学时,教学难点: 循环结构程序设计,93,VB采用事件驱动方法,但仍需要结构化程序设计方法,用控制结构控制程序执行的流程。 程序流程有三种最基本的结构:顺序、选择、循环。,一个计算
29、机程序通常可分为三部分,即输入、处理和输出。 VB的输入输出有着十分丰富的内容和形式,它提供了多种手段,并可通过各种控件实现输入输出操作,使输入输出更加灵活、多样、方便、直观。,3.1.1顺序结构,94,功能: 先计算“=”号(称为赋值号)右边的表达式的值,然后将此值赋给赋值号左边的变量或对象属性. 说明: 应符合VB的变量命名约定。 可以是常量、变量、表达式及带有属性的对象。,格式: Let =,3.1.1 几个基本语句,1.赋值语句,95,1) “=”赋值号与数学中的等号意义不同。 例如:语句X=X+1表示将变量X的值加1后的结果值再赋给变量X,而不是表示两边的值相等. 2) 赋值号左边必
30、须是变量或对象属性. 例: X=1 MyStr = “Good Morning” Command1.Caption=“确定” X+1=X (错误),注意事项,96,3)变量名或对象属性名的类型应与表达式的类型相容. 即变量名或对象属性名能够正确存取赋值号右边的表达式的值.,例如 Dim A As Integer, B As Single, C As Double, S As String A = 100 S = 123.45“ A = S A=123 S = A S=“123” S = abc” A = S,97,4)变量未赋值时,数值型变量的值为0,字符串变量的值为空串“”。,例4-1交换两
31、个变量的值。 设变量A中存放5,变量B中存放8,交换两个变量的值,使变量A中存放8,变量B中存放5。 分析:交换变量需要借助第三个变量C,才能实现交换。,代码如下: A = 5 B = 8 C = A A = B B = C,98,2. 注释语句,格式: Rem|注释内容,1)如使用Rem则在Rem与注释内容之间要加空格;以开头,可不加 2)允许使用GoTo或GoSub语句转到一个有行号或标号的注释语句,程序从该注释行下面的第一条可执行语句继续执行 3)在其他语句行后使用Rem,用冒号,注意事项:,99,. 停止程序执行语句,格式: End,功能:结束程序的执行。 一个程序没有End语句,对运
32、行没有什么影响。但如果没有End语句,或者虽然有,却没执行,程序都不能正常结束,此时要结束程序必须执行“运行”菜单中的“结束”命令或单击工具栏中的“结束”按钮。为了保持程序的完整性,应当在程序中含有End语句,并且通过End语句来结束程序的运行。,100,InputBox函数产生一个对话框,作为输入数据的界面,等待用户输入正文或按下按钮,并返回所输入的内容。,格式:InputBox(,),3.1.2 输入数据,1 输入框函数(InputBox),101,例如,假设某程序中有如下代码: MyStr=InputBox(“提示” | , 可以是窗体、图片框、打印机或立即窗口。如果省略“对象名”,则在
33、当前窗体上输出。 中的表达式可以是算术表达式、字符串表达式、关系表达式或者布尔表达式,多个表达式之间的分隔符为逗号(,)或分号(;)。,3. 用Print方法输出数据,1. Print方法,123,例: Form1Print “欢迎使用Visual Basic” 在窗体Forml上显示字符串“欢迎使用Visual Basic” Picture1Print “欢迎使用Visual Basic” 在图片框Picturel上显示字符串“欢迎使用Visual Basic” PrinterPrint “欢迎使用Visual Basic” 在打印机上打印字符串“欢迎使用Visual Basic”,124,
34、Print方法具有计算和输出双重功能。 对于表达式,先计算表达式的值,然后输出。输出时,数值型数据前面有一符号位(正号不显示),后面留一个空格位;字符串原样输出,前后无空格。,125,Print方法有两种显示格式:区分格式和紧凑格式。 当各表达式之间用逗号作为分隔符时,则按区分,显示数据个字为单位把一个输出行分成 若干区个表达式的值。 当各表达式之间用分号作为分隔符时,则按紧凑格式输出数据,后一项紧跟前一项输出。,126,一般情况下,每执行一次Print方法都要自动换行,即每一次执行Print时,都会在新的一行上输出数据。若要在同一行上输出数据,则可以在末尾加上分号或逗号。,127,2. 与P
35、rint方法有关的函数,格式: Tab(n) 功能: 在指定的第n个位置 上输出数据.,1) Tab函数,说明: 若n小于当前显示位置, 则自动移到下一个输出行的第n列上; 若n小于1,则打印位置在第1列; 若n大于输出行的宽度,则利用公式n Mod width计算下一个打印位置; 若省略此参数,则将插入点移到下一个打印区的起点.,128,2) Spc函数,格式: Spc(n) 功能: 跳过n个空格. 说明: n是一个数值表达式,表示空格.,例如: Print “Hello”; Spc(3); “World” 输出结果: HelloUUUWorld Spc函数与输出项之间用分号分隔. Spc函
36、数表示两个输出项之间的间隔, Tab函数总是从对象的左端开始计数.,129,3.1.4 举例,例3-3 使用文本框输入圆的半径,计算圆的面积并用标签 输出。运行界面如下图所示。,Private Sub Command1_Click() Dim r As Double,s As Double Const pi = 3.1415926 r = Val(Text1.Text) s=pi * r * r Label2.Caption = “圆的面积:” Y 当X=4时,条件X0成立,执行Then之后的语句X=1+X,使X的值成为5,然后执行条件语句之后的语句Y=1+X,使Y的值成为-4,所以输出Y=-
37、4。 当X的值为-4时,条件X=0不成立,执行Else之后的语句X=5-X,使X的值成为9,然后同样执行条件语句之后的语句Y=1-X,使Y的值成为-8,所以输出Y=-8。 即无论条件X=0是否成立,都要执行If语句后面的语句Y=1-X。 3)单行结构条件语句可以嵌套,也就是说,在或中可以包含另外一个单行结构条件语句。,133,2 块结构条件语句,格式: If Then ElseIf Then Elself Then Else EndIf,功能:执行该块结构条件语句时,首先判断是否成立,若成立,则执行,若不成立,则继续判断ElseIf子句后的是否成立,若成立,则执行,否则,继续判断以下的各个条件
38、,依此类推。如果到都不成立,则执行Else子句后面的。 当某个条件成立而执行了相应的语句组后,将不再继续往下判断其他条件,而直接退出块结构,执行EndIf之后的语句。,134,注意:整个块结构必须以If语句开头,EndIf语句结束。除了第一行的If语句和最后一行的EndIf语句是必须的以外,ElseIf子句和Else子句都是可选的。,块结构条件语句的两种常见的简化形式: 形式一: If Then Else End If 形式二: If Then End lf 形式一的功能与单行结构条件语句功能相同,用于处理两个条件分支的情况;而形式二仅在条件成立时执行一定的操作,当条件不成立时则不做任何处理。
39、,135,注意: 1)使用块结构条件语句时,关键字Elself不能写成 Else If,即中间不能有空格。 2)在书写时,可以将If语句、ElseIf语句、Else子句和EndIf语句左对齐,而各语句组向右缩进若干空格,以使程序结构更加清楚,便于阅读和查错。 3)要注意严格按格式要求进行书写,不可以随意换行或将两行合并成一行。 4)块结构条件语句可以嵌套。,136,格式如下: Select Case Case Case Case Else End Select,3 多分支选择语句,功能: 根据的值,按顺序匹配Case后的表达式表,如果匹配成功,则执行该Case下的语句组,然后转到EndSele
40、ct语句之后继续执行;如果的值与各表达式表都不匹配,则执行CaseElse之后的,再转到EndSelect语句之后继续执行。,137,可以是任何数值表达式或字符表达式。Case后的表达式表可以有如下形式之一: 1) ,如:Case l,3,5 表示的值为1或3或5时将执行该Case语句之后的语句组。 2) TO :Case l0 TO 30 表示的值在10到30之间(包括10和30)时将执行该Case语句之后的语句组。 3)Is :Case Is=10 表示的值大于或等于10时将执行该Case语句之后的语句组。 以上三种方式可以同时出现在同一个Case语句之后,各项之间用逗号隔开。 如:Cas
41、e l,3,10 T0 20, Is0,138,设从文本框Textl输人X的值,单击命令按钮Commandl计算Y的值,结果显示于文本Text2中: Private Sub Command1_Click() X=Val(Text1.Text) Select Case X Case Is 0 Y = Log(X)/Log(10) End Select Text2Text=Format(Y, ”0.000000”) 保留6位小数 End Sub,按以下公式求分段函数y的值,139,注意: 1)的类型应与Case后的表达式类型一致。 2)不可以在Case后的表达式中使用中的变量。 3)只能是一个变量
42、或表达式,而不能是变量表或表达式表。 4)语句也可以嵌套,但每个嵌套的Select Case语句必须要有相应的语句。 5)不要在Case后直接使用布尔运算符来表示条件,例如,要表示条件00 And X100 End Select 对于较复杂的条件,可以用块If语句来实现,而有些条件完全可以转换成Case语句允许的几种形式之一.,140,以上三种条件结构都能解决需要多分支处理的问题,但根据不同的要求选择适当的结构进行编程,可以简化编程,使程序结构更加清楚,便于阅读和查错。 对于简单的两个分支的情况,使用单行结构条件语句就比较方便; 使用块结构条件语句可以处理分支较多,条件较复杂的情况;而多分支选
43、择结构更适合于对单一表达式进行多种条件判断的情况。 编程时,使用条件结构语句尤其要注意两个问题, 一是条件的书写, 二是不同语句结构之间的格式区别。,141,3.2.2举例,Private Sub Command1_Click() If Text1.Text = 王刚 Then If UCase(Text2.Text) = ABCDE Then MsgBox 口令正确! Else MsgBox 口令错误! End End If Else MsgBox 用户名错误! End End If Print Print Spc(20); 欢迎使用! End Sub,142,例:运费计算.规则如下: 50
44、km以内: 运费=运量(t)*距离(km)*1(元) 50100km: 运费=运量(t)*距离(km)*0.8(元) 101300km:运费=运量(t)*距离(km)*0.6(元) 300km以上:运费=运量(t)*距离(km)*0.5(元),Private Sub Command2_Click() Dim y1, j1, yf As Single y1 = Text1.Text j1 = Text2.Text Select Case j1 Case Is 300 yf = y1 * j1 * 0.5 End Select Text3.Text = CStr(yf) End Sub,Priva
45、te Sub Command1_Click() Text1.Text = Text2.Text = Text3.Text = End Sub Private Sub Command3_Click() Unload Me End Sub,143,3.3 循环结构程序设计,和顺序结构、选择结构一样,循环结构是结构化程序中的三种基本程序结构之一。在程序中,凡是需要重复相同或相似的操作步骤,都可以用循环结构来实现。 循环结构由两部分组成: 循环体,即要重复执行的语句序列; 循环控制部分,即用于规定循环的重复条件或重复次数,同时确定循环范围的语句。 要使计算机能够正常执行某循环,由循环控制部分所规定的循
46、环次数必须是有限的,即循环体可以重复0次到若干次。,3.3.1实现循环结构的语句,144,VB支持的循环结构有: ForNext循环 DoLoop循环 For EachNext循环 While Wend循环 本章将介绍ForNext循环结构和DoLoop循环结构。其中ForNext循环结构常用于设计已知循环次数的程序,而DoLoop WhileWend循环结构更适合于设计循环次数未知,而只知道循环结束条件的程序。For EachNext循环将在数组中介绍。,145,1. ForNext循环语句,在已知循环要执行多少次时,最好使用ForNext循环。在ForNext循环中使用一个起计数器作用的循
47、环变量,每重复一次循环之后,循环变量的值就会按一定的步长增加或者减少,直到超过某规定的终值时退出循环。 格式如下: For = To Step Exit For Next ,146,VisualBasic按以下步骤执行ForNext循环: 1)首先将设置为。 2)若为正数,则测试是否大于, 若是,则退出循环,执行Next语句之后的语句,否则继续下一步。 若为负数,则测试是否小于,若是,则退出循环Next语句后的语句,否则继续下一步。 3)执行循环体部分,即执行For语句和Next语句之间的语句组。 4)的值增加值。 5)返回步骤2)。,147,以下面循环为例,以框图形式说明For循环执行过程:
48、 For I= to step 循环体 Next I,148,说明: 、和都是数值型的,其中,、和是必需的。 可正可负,也可以省略。若为正,则必须小于或等于,否则不能执行循环体内的语句;若为负,则必须大于或等于,否则不能执行循环体内的语句;若省略,则默认为1。 Exit For 可选, 语句用于退出循环体,执行Next语句之后的语句。必要时,循环体中可以放置多条Exit For语句。该语句一般放在某条件结构中,用于表示当某种条件成立时,强行退出循环。 Next语句中的必须与For语句中的一致,也可以省略。,149,例: 求1+2+3+n的值。 分析: 在程序设计中,求取一批数据的“和”是一种典
49、型的操作,通常称为“累加”。 “累加”问题可以很方便地用循环来实现。设计时,一般引入一个存放和”值的单元,如变量Sum。首先设置该“和”值为0,然后通过循环重复执行: 和值=和值+累加项 即 Sum=Sum+I,程序代码如下: For I =1 to n Sum=Sum+I Next,150,DoLoop循环结构有几种演变形式,但每一种都是通过判断某条件以决定循环是否继续执行。所不同的是,是先判断条件后执行循环体,还是先执行循环体后判断条件;是条件成立时执行循环(当型循环) ,还是条件不成立时执行循环(直到型循环) 。,2. DoLoop循环语句,Do循环,当型,直到型,前测式,后测式,前测式
50、,后测式,151,格式一 :前测式当型循环 Do While Exit Do Loop,格式二:前测式直到型循环 Do Until Exit Do Loop,格式三 :后测式当型循环 Do Exit Do Loop While,格式四:后测式直到型循环 Do Exit Do Loop Until,DoLoop循环结构的四种格式,152,四种格式的区别在于的书写位置不同,可以写在Do语句之后,也可以写在Loop语句之后,另外,之前的关键字可以是While,也可以是Until。 使用While时,当指定的条件为True时,执行循环体中的语句组,而当条件为False时则退出循环,执行循环终止语句Lo
51、op之后的语句。 使用Until时,当指定的条件为False时,执行循环体中的语句组,而当条件为True时则退出循环,执行循环终止语句Loop之后的语句。 使用While和使用Until的区别是: While表示当条件成立时执行循环体, Until则是在条件不成立时执行循环体。,153,四种格式中,格式一和格式二在循环的起始语句Do之后判断条件,属于当型循环; 格式三和格式四在循环的终止语句Loop处判断条件,属于直到型循环。 Exit Do语句用于退出循环体,执行Loop语句之后的语句。必要时,循环体中可以放置多条ExitDo语句。该语句一般放在某条件结构中,用于表示当某种条件成立时,强行退
52、出循环 也可以在Do语句和Loop语句之后都没有条件判断,这时循环将无条件地重复,因此在这种情况下,在循环体内必须有强行退出循环的语句,如Exit Do语句,以保证循环在执行有限次数后退出。,154,例:从键盘输入一正整数,判断是否是素数。,程序代码如下: Input “n=”;n k=int(sqr(n) I=2 flag=0 do while I=k and flag=0 if n mod I=0 then flag=1 else I=I+1 end if loop if flag=0 then print n;”is a prime number.” else print n;”is n
53、ot a prime number.” end if,155,3. WhileWend循环语句,格式如下: While Wend 功能:当条件为True时,反复执行循环,为False时退出循环。,156,通常,把循环体内不再包含其他循环的循环结构叫做单层循环。在处理某些问题时,常常要在循环体内再进行循环操作,而在内嵌的循环中还可以再包含循环,这种情况叫多重循环,又称为循环的嵌套。 VB对循环的嵌套层数没有限制,当循环的层数太多时,程序的可读性会下降。 习惯上,为了使循环结构更具可读性,总是用缩排的方式书写循环体部分。,4. 循环的嵌套,157,多层循环的执行过程是,外层循环每执行一次,内层循环
54、就要从头开始执行一轮。 如: For I=1 To 9 For J=1 To 9 Print I; ”*”;J;“=”;I*J Next J Next I 在以上的双重循环中,外层循环变量I取1时,内层循环就要执行9次(J依次取1、2、3、9),接着,外层循环变量I=2,内层循环同样要重新执行9次(J再依次取1、2、3、9),所以循环共执行81次。,158,同类循环可以嵌套,ForNext循环和DoLoop循环也可以互相嵌套。嵌套时,内层循环必须完全嵌套在外层循环之内。例如,以下的嵌套都是允许的,For I=1 To 10 For J=1 To 20 Next J Next I,Do For
55、J=1 To 20 Next J Loop While I=10,For I=1 To 10 Do While J=20 Loop Next I,Do Do While J10,159,交叉是不允许的,For I=1 To 10 For J=1 To 20 Next I Next J,Do For J=1 To 20 Loop While I=10 Next J,For I=1 To 10 Do While J=20 Next I Loop,160,当多重ForNext循环的Next语句连续出现时,Next语句可以合并成一条,而在其后跟着各循环控制变量,内层循环变量写在前面,外层循环变量写在后
56、面,例如,以下两个三重循环的写法是完全等价的。,注意,Next语句之后的循环变量的次序,只能按先内层循环变量,后外层循环变量的次序。如果将以上的Next语句写成Next I, J, K则是错误的。,写法一 For I=1 To 10 For J=1 To 20 For K=1 To 30 Next K Next J Next I,写法二 For I=1 To 10 For J=1 To 20 For K=1 To 30 Next K, J, I,161,在多重循环的任何一层循环中都可以使用Exit Do或Exit For退出循环,注意只能退出Exit Do或Exit For语句所对应的最内层循
57、环,而不是一次退出多层循环。 例如,下例的循环退出位 置如箭头所示:,F=1 For I=1 To 10 For J=1 To 10 F=F*I*J If F1000 Then Exit For Next J Print I; J; F F=1 Next I,F=1 Do While I1000 Then Exit Do Next J Print F F=1 I=I+1 Loop Print F,162,3.3.2 举例,例1:打印九九乘法口诀表,程序如下: Private Sub Form_Click() Dim i As Integer, j As Integer For i = 1 To
58、 9 For j = 1 To 9 Print i; *; j; =; Format(i * j, ); Next j Print Next i End Sub,163,若打印格式改进如下:,程序修改如下: Private Sub Form_Click() Dim i As Integer, j As Integer For i = 1 To 9 For j = 1 To i Print i; *; j; =; Format(i * j, ); Next j Print Next i End Sub,164,若打印格式修改如下:,程序修改如下: Private Sub Form_Click() Dim i As Integer, j As Integer For i = 1 To 9 For j = 1 To i Print j; *; i; =; Format(i * j, ); N
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 海参购销合同签订流程
- 主体防护工程分包合同签订方式
- 售后翻译服务合同
- 盈利模式润滑油销售合同的商业盈利
- 2024年度电梯门套施工技术指导与监督合同2篇
- 2024年度影视制作与版权转让合同
- 南京理工大学紫金学院《国际贸易实务》2022-2023学年第一学期期末试卷
- 2024年度国际农业技术转让与合作合同3篇
- 南京理工大学紫金学院《电子商务概论》2023-2024学年第一学期期末试卷
- 南京理工大学紫金学院《博弈论与信息经济学》2023-2024学年第一学期期末试卷
- 学生学情分析报告道法
- 二胡课件完整版本
- 25题战略规划岗位常见面试问题含HR问题考察点及参考回答
- 山东师范大学语言学概论期末考试复习题
- MOOC 寄生人体的恶魔-医学寄生虫学-南方医科大学 中国大学慕课答案
- 数学(基础模块)中职数学课程全套教学课件
- 护理人员中医中药灌肠技术
- 《预防传染病》 完整版课件
- 电梯日管控、周排查、月调度内容表格
- 京东管理者手册
- 学习软件行业pest分析
评论
0/150
提交评论