VB程序设计电子教案第4章:VB程序设计语法基础.ppt
第4章 VB程序设计语法基础,VB表达式 VB基本语句 数组编程 子程序编程,VB表达式,基本数据类型 常量与变量运算符和表达式常用函数,VB表达式由常量、变量、函数、运算符以及圆括号按照一定的规则组成,基本数据类型,常量与变量,标识符命名规则 常量(直接常量、符号常量)变量用户自定义数据类型,标识符命名规则,必须以字母开头,由字母、数字和下划线组成,中间不能有空格;最多不能超过255个字符,控件、窗体、类和模块的名字不能超过40个字符;不能使用Visual Basic保留字,如Case,End,If,Then等;在有效作用范围内必须是惟一的;不区分大小写,如ABC,abc表示同一标识符。,直接常量,字节型、整型和长整型常量单精度和双精度浮点型常量字符串常量 日期型常量 逻辑型常量,符号常量,用户自定义符号常量 Private|Public Const As 类型 系统预定义符号常量可以通过“视图对象浏览器”查看VB中所有的内部预定义常量,变量,变量的声明 强制变量声明,变量的声明,用Dim语句 用Static语句 用Private语句 用Public语句,变量声明主要有以下几种形式:,强制变量声明,在程序通用声明段设置Option Explicit语句 自动设置变量强制声明。设置方法为:对新建一个工程,选择“工具”“选项”命令,再在“编辑器”标签项片中选中“要求变量声明”复选框,于是在程序的通用声明段会自动出现Option Explicit语句。,用户自定义数据类型,PrivateType 各元素说明 End Type,Type person 自定义person类型 name as String*10 age as Integer End Type Private Sub Form_Click()Dim man As person 定义类型为person的变量manman.name=张小龙 man.age=20Print man.name,man.ageEnd Sub,运算符和表达式,算术运算符 字符串运算符关系运算符 逻辑运算符 表达式,算术运算符,字符串运算符,字符串的连接是指把两个字符串首尾拼接在一起形成一个新的字符串,在Visual Basic中提供了“&”和“+”两种操作符来实现此功能。“+”和“&”的区别。当两个被连接的数据都是字符型时,它们的作用相同。当数字型和字符型连接时,“&”把数据都转化成字符型然后连接;“+”把数据都转化成数字型然后相加。,关系运算符,逻辑运算符,常用函数,数学函数 字符串函数 日期时间函数 转换函数,字符串函数,日期时间函数,转换函数,VB基本语句,简单语句 分支语句 循环语句 基本语句运用综合实例,简单语句,注释语句 停止程序执行语句 赋值语 句Print输出方法,分支语句,条件语句 多路分支语句,分支语句是用于根据某一表达式的值来决定执行某一组特定语句的语句。有以下二种形式的分支语句。,单行条件语句,格式:If Then Else 功能:若条件表达式为True,则执行语句组1中的各语句,否则执行语句组2中的各语句。语句组可以是单个语句,也可以是用冒号分开的多个语句,但必须写在同一行上。,多行条件语句,格式:If Then Else End If,嵌套条件语句,格式:If Then ElseIf Then Else End If,多路分支语句,格式:Select Case Case Case Case Case Else End Select,功能:计算测试表达式的值,然后与Case子句中的值域进行比较。当测试表达式的值与Case子句中的值域相匹配时,则执行对应的语句组,并跳出Select Case结构。如果测试表达式的值与所有的值域均不匹配,则执行Case Else之后的语句组。,Case子句中值域,程序简例,【简例4-1】求解一元二次方程Ax2+Bx+C=0的根【简例4-2】输入百分制的成绩,把它们转换成等级制。,循环语句,For.Next循环While.Wend循环 Do.Loop 循环 多重循环 程序简例,For.Next循环,格式:For=To Step 循环体 Next 功能:当循环控制变量的值在初值和终值所限定的范围内时,执行循环体。省略Step子句时,默认步长为1。,循环执行流程图,While.Wend循环,格式:While 循环体 Wend功能若条件表达式的值为True时,执行循环体,否则退出。实现让扬声器发出5声响铃,DoLoop循环的不同形式,Do while 循环体Loop Do Until 循环体Loop Do 循环体 Loopwhile Do 循环体 LoopUntil,DoLoop循环有四种不同格式,各自有不同的功能和执行流程,多重循环,一个循环体内又包含另一个循环,称为循环的嵌套。内嵌的循环中还可以再嵌套循环,形成多重循环。采用不同的循环形式实现1!+2!+10!,程序简例菱形打印程序,For i=1 To n 打印菱形的上半部分 For k=1 To n-i+1 打印空格 Print;Next k For j=1 To 2*i 1 打印星号 Print*;Next j Print 另起一行Next iFor i=n-1 To 1 Step 1 打印菱形的下半部分 For k=1 To n-i+1 打印空格 Print;Next k For j=1 To 2*i 1 打印星号 Print*;Next j Print 另起一行Next i,程序简例打印九九乘法表,Dim i,j As IntegerFor i=1 To 9 外层循环控制行数 For j=1 To I 内层循环控制每行的列数 Print Tab(5*j);i*j;Next j Print 另起一行Next i,基本语句运用综合实例,【实例4-1】编写一个英文打字训练程序,基本语句综合实例.vbp,实例4-1的改进,【思考题4-1】若连续运行两遍该程序会发生什么情况?如何解决?【思考题4-2】若在用户输入过程中,不允许用户中途放弃并重新开始输入,应如何修改程序?,数组编程,大小固定数组编程示例 控件数组编程示例,VB中有两种类型的数组:大小固定的数组和动态数组,前者指运行时数组中元素的个数保持不变;而后者则指运行时其元素个数可以发生变化。,大小固定数组编程示例,固定大小数组示例.vbp,设计一个简单数组的应用程序,产生10个1100之间的随机整数,并用“选择法”按从小到大的顺序输出,大小固定数组相关知识点,大小固定数组的声明语句 数组初始化 数组的引用,大小固定数组的声明语句,一维数组:说明符(下界 to 上界)As 类型二维数组:说明符(下界1 to 上界1,下界2 to 上界2)As 类型多维数组:说明符(下界1 to 上界1,下界2 to 上界2,)As 类型,数组初始化,对于数组的初始化一般可采用对数组的各下标元素进行赋初值进行,通常用循环语句实现。对于变体类型的数组变量,还可以用Array函数直接赋初值。格式:数组变量名=Array(初值列表)功能:将初值列表中的数值分别赋给一个一维数组的各个元素。,【注意】变量必须声明为变体类型,但作为数组使用;初值列表中的数值多于一个时,使用逗号分隔;若未提供任何初值,则创建一个长度为的数组;数组下界由Option Base语句指定。,数组的引用,格式:数组名(下标1,下标2.)下标可以是数值型常量、变量或表达式,对于非整数,系统自动四舍五入取整;下标必须在规定的范围内,否则出现“下标越界”错误。一维数组一般用单重循环处理,二维数组和多维数组一般用双重循环和多重循环处理。,动态数组编程示例,编程在窗体上输出Fibonacci数列的前n项:1,1,2,3,5。要求每行输出5个数。相关知识点,动态数组相关知识点,建立动态数组的一般步骤,声明一个没有下标参数的数组。格式:说明符()As 类型引用数组前用 ReDim语句重新定义。格式:ReDim Preserve(下界1 To 上界1,下界2 To 上界2)As 类型功能:重新声明动态数组的维数和元素个数。,控件数组编程示例,设计一个简易计算器程序,能够进行加、减、乘、除四则运算,简易计算器实现方法,界面设计代码设计(1)程序运行初始状态的设置(2)输入操作数的处理(3)点击运算符的处理(4)点击“=”按钮的处理,控件数组相关知识点,控件数组概述 控件数组的特点 控件数组的建立,控件数组概述,控件数组由一组相同类型的控件组成,这些控件共用一个控件名字,具有相似的属性设置,共享同样的事件过程。控件数组中各个控件相当于普通数组中的各个元素,同一控件数组中各个控件的Index属性相当于普通数组中的下标。,控件数组的特点,各控件具有相同的名称;以索引值(Index)来识别各个控件。由于具有相同的名称,单击控件数组中的任一个控件,都会执行相同的代码,同时又可运用返回的索引值让程序识别是由哪个控件所引发的。,控件数组的建立,子程序编程,子程序的定义与调用函数的定义和调用 变量的作用域和生存期 子程序的作用域 子程序综合实例,子程序的定义与调用,通用过程的定义(1)利用“工具”“添加过程”菜单定义通用过程(2)利用代码窗口直接定义通用过程 通用过程的调用 格式1:格式2:Call 过程名()参数的传递 子过程的嵌套调用,参数的传递,定义子过程时,其中的形参并没有确切的值,也不占用内存空间,只有在调用子过程时,通过传递实参的值或地址给形参,形参才能真正获得内存空间和确切的值。参数传递的两种形式,子过程的嵌套调用,嵌套调用是指在调用一个子过程的过程中,又调用另一个子过程,图4-17表示的是三层嵌套调用,其执行过程如右图子程序(包括子过程和函数)嵌套调用的一般原则:“逐层调用,逐层返回”,函数的定义和调用,函数的定义 函数的调用 程序简例,定义一个求n!的函数Fact。Private Function Fact(n As Integer)Dim i%,p&p=1 For i=1 To n p=p*i Next i Fact=pEnd Function,例如:以下几条语句都可以正确调用上面定义的Fact函数。Print Fact(5)x=Fact(5)Call Fact(5)在该调用形式下,VB自动放弃函数返回值Fact 5在该调用形式下,VB自动放弃函数返回值,程序简例,输入一个正整数n,在下拉列表框中选择公式进行计算,变量的作用域和生存期,代码模块的三种类型 变量的作用域 变量的生存期,代码模块的类型,VB的代码存储在模块中,模块有三种类型:窗体模块(Form)、标准模块(Module)和类模块(Class),具体参见 教材,变量的作用域,全局变量 模块级变量 局部变量 全局变量、模块级变量和局部变量作用域总结变量作用域简例,变量作用域总结,变量的生存期,变量的作用域是从变量起作用的空间角度而言的,只有在生存期内,变量才能够保持它的值。根据变量生存期的不同,可以把变量分为动态变量和静态变量。动态变量 静态变量 变量生存期简例,动态变量,指程序运行进入变量所在的过程时,才分配给该变量内存单元,在退出该过程时,该变量所占用的内存单元自动释放,其值消失,其内存单元可能被其它变量占用,下次调用该过程时,所有的动态变量将重新被初始化。声明的特征:用Dim关键字在过程中声明的局部变量均是动态变量。,静态变量,指程序进入该变量所在的过程,修改变量的值后,退出该过程其值仍被保留,即变量所占的内存单元没有释放,以后再次进入该过程时原来变量的值仍可继续使用。声明的特征:用Static关键字在过程中声明的局部变量、所有全局变量和模块级变量都是静态变量。,变量生存期简例,设计一个统计选票的程序,子程序的作用域,VB中的子程序有子过程和函数两种,它们都有作用域,可以分为模块级(也称文件级)和全局级(也称工程级)两种。,子程序综合实例,【实例4-2】编写程序,完成十进制正整数转换成216任意进制的字符串,或216任意进制的字符串转换成十进制正整数。,【实例4-2】,实现分析 实现步骤 代码清单,