VB语言程序设计函数、变量及设计规则.ppt
程序设计基础,第二章,本章内容,2.1 数据类型2.2 常量和变量2.3 表达式 2.4 常用内部函数2.5 程序代码编写规则,数据类型,1、数值型(Numeric)整数类型:字节型(Byte)占1个字节(0255)整型(Integer)占2个字节(-3276832767)长整型(Long)占4个字节(-21亿21亿),计算机中无符号数的表示 00000000=0 11111111=255,八位,计算机中符号数的表示方法有3种:原码、补码和反码,1原码一个二进制数同时包含符号和数值两部分,用最高位表示符号,其余位表示数值,这种表示带符号数的方法为原码表示法。,计算机中符号数的表示,符号位:“0”表示正、“1”表示负,符号数的机器数表示,例如:+3原码=0 0000011-3原码=1 0000011,符号位,3补码补码是表示带符号数的最直接方法。对于正数,其补码与原码相同;对于负数,则其补码为反码加1。,2反码反码是另一种表示有符号数的方法。对于正数,其反码与原码相同;对于负数,在求反码的时候,除了符号位外,其余各位按位取反,即“1”都换成“0”,“0”都换成“1”。,(3)补码,假定一个数在机器中占用8位。(1)原码,数据类型,实数类型(定点数,浮点数)浮点型 单精度型(Single)占4个字节 双精度型(Double)占8个字节单精度型(Single):有效位7位 取值范围(-3.4028231038 3.4028231038)双精度型(Double):有效位15位(-1.7976931348623210308 1.7976931348623210308),数据类型,实数类型(定点数)有效位19位 货币型(Currency)占8个字节 货币型:小数点左边有15位数字,右边有4位数字:取值范围(-922337203685477.5808 922337203685477.5807),2、字符型(String):用双引号括起来的一串字符。例:Dim NameA as String 可变长度字符串 Dim Nameb as String*20 固定长度字符串 NameA=“abcdef”变长字符串,长度不固定,最多可包含20亿个字符;定长字符串,长度固定,最多可包含65535个字符.3、逻辑型(Boolean):用于表示逻辑判断结果,其值为真(True)或假(False)0 False,非0 True False 0,True-1,4、日期型(Date):是由双井号(#)括起来用于表示时间的数据。例:#mm/dd/yyyy#08/20/2010#08/20/2010 6:55:10 AM#,5、对象型(Object):可以引用应用程序或其它应用程序中的对象,在声明了(Object)型变量后,要用SET语句去引用该对象。例:Dim a as object set a=Command1 a.Caption=“OK”等价于Command1.Caption=“OK”,6、变体型(Variant):可存放不同类型的数据,在程序运行时VB可完成自动转换。例:Dim X X=“17”X=X-5 X=“A”&X Print x,结果为:A12,例 2-1,编写程序,验证逻辑型数据的取值。,例 2-2,编写程序,在窗体上创建命令按钮Command1,单击命令按钮,可将该按钮的显示文字“Command1”改为“欢迎”,且字体为黑体,字号为 14号。,常量、变量,常量,定义:在程序运行过程中其值始终保持不变的量称为常量。种类:,直接常量 符号常量,用户自定义符号常量系统定义符号常量,直接常量,类型:字符串常量、数值常量 布尔常量、日期常量举例:欢迎使用Visual Basic 6.0 字符串常量23456 整型常量23456&长整型常量12.06、1.206E+1 单精度常量12.06#、1.206D+1 双精度常量True 逻辑型常量#06/11/2006#日期型常量,直接常量,整数型:十进制整型和长整型数:09和+、-号,32768是 Long 八进制整型和长整型数:07,加前缀&、&o、&O,&o327&是八进制长整型数&o7+&o1=&o10,直接常量,十六进制整型和长整型数:09及AF,加前缀&H、&h,&h3AF&是十六进制长整型数。在VB中通常使用十六进制长整型数来表示颜色:Text1.ForeColor=&HFF0000&,符号常量,形式:Const 常量名 AS 类型=表达式说明:省略 AS 类型,常量的类型由表达式值的类型决定。为了便于与变量名区分,一般常量名使用大写字母。举例:Const Pi=3.14159265358979 Const Max As Integer=100 Const Birth=#1/1/06#Const MyString=China,例 2-3,在窗体的通用段声明符号常量pi,在命令按钮command1和command2的单击事件过程中引用pi。,系统定义符号常量,系统常量是VB系统预先定义好的,用户可直接引用。系统常量位于对象库中,可通过“对象浏览器”查看。,例 2-4,编程使用系统符号常量。,变 量,定义:一个有名字的内存单元就叫变量。在程序运行期间变量的值是可以改变的。种类:属性变量和内存变量。说明:变量有名字和数据类型,通过名字引用一个变量,而通过数据类型来确定该变量的存储方式。,变量的命名规则,以字母或汉字开头,后可跟汉字、字母、数字或下划线组成,长度小于等于255个字符;不要使用VB中的关键字;string、integer等 VB中不区分变量名的大小写;变量名不能与过程名或符号常量同名;变量名在同一个范围内必须是唯一的。,变量的声明,(1)用声明语句声明变量格式:Dim|Static 变量名 AS 类型/类型符,变量名 AS 类型/类型符例如:Dim fac As Long Dim fac&Dim addr As String Dim addr$Dim no As String*8 Dim score Dim average As Single Dim average!,(2)用类型说明符表示变量 将类型说明符放在变量名的尾部,可以表示不同的变量。例如:Dim fac As Long Dim fac&Dim addr As String Dim addr$Dim average As Single Dim average!dblNum%表示整型变量 curWage 表示货币型变量,Dim a As Integer,b as integer 可写成:Dim a%,b%,(3)隐式声明 未进行显示声明而通过赋值语句直接使用,或省略了AS 类型/类型符短语的变量,其类型为变体(Variant)类型。(4)强制声明 在Visual BASIC程序的开始处,若出现(系统环境可设置),或写入下面语句:Option Explicit(显示,明确),各种类型变量的初始值,数值型变量初始值为0。逻辑型变量初始值为False(逻辑假)。可变字符串型变量初始值为零长度的字符串();固定长度字符串变量初始值为其长度数量的空格。可变类型(Variant)变量初始值为Empty。,运算符及表达式,在高级语言中,用运算符将操作数(操作数可以是:常量、变量、函数、对象等)连接起来,可以组成各种类型的表达式,从而实现程序编制中所需要的各种操作。,算术运算符与算术表达式,设:ia=3,例:5+10 mod 10 9/3+2 2,结果:10,例:2+3.2*4 mod 17.52 4.32/2,2+12.8 mod 17.52 2.16,2+12.8 mod 9,2+4,字符串运算符与字符串表达式,&123 表示八进制数 123&表示长整型数,例如:abcdef&12345 结果为 abcdef12345 123&456 结果为 123456 123+456 结果为 123456 123+456 结果为 579“abcdef”+12345 出错注意:True转换为数值-1,False转换为数值0 123+True 结果为 122,日期运算符及日期表达式,日期型数据一般进行加“+”和减“-”两种运算。也可以对日期型数据进行比较等运算。例如:#1998-07-23#+5 结果为:1998-7-28#2006-08-17#-30 结果为:2006-7-18#09/23/2006#-#09/18/2006#结果为:5#09/23/2006#09/18/2006#结果为:True,表达式的书写规则,每个符号占1格,所有符号都必须一个一个并排写在同一基准上,不能出现上标和下标。不能按常规习惯省略乘号*,如:2x要写成2*x,也不能写成2x。,a*b*c*d/e/f/g 或 a*b*c*d/(e*f*g),表达式的书写规则,只能使用小括号(),且必须配对,表达式中不能出现方括号和花括号。如数学式:应写成:(a+b)/(c+(d+c)/(d-c)不能出现非法的字符,如。,内部函数是由VB系统提供 函数调用的一般格式为:函数名(参数1,参数2,)函数调用的作用:利用函数返回值。例如:y=Sqr(x)Sqr是内部函数名,x为参数,运行时该语句调用内部函数Sqr来求x的平方根,其计算结果由系统返回给变量y。,常用内部函数,VB的常用内部函数大体上分为四大类:数学函数字符串函数日期/时间函数类型转换函数,常用内部函数,数学函数,单位是弧度,数学函数,随机函数,格式:Rnd(x)功能:产生大于或等于0且小于1的随机数。说明:当 x0或者缺省时:以上一个随机数作种子,产生序列中的下一个随机数;(3)当x=0时:产生与最近生成的随机数相同的数。,例2-5,在立即窗口中用print语句(可以用?代替print)观察Rnd函数的结果。,随机函数,(4)要生成a,b闭区间的随机整数,可以使用以下公式:Int(b-a+1)*Rnd+a),例2-6,在立即窗口中产生0,100、20,50之间的随机数。,注意:产生30-50的随机整数(包括30,不包括50)int(Rnd*(50-30)+30)int(Rnd*(49-30+1)+30),Randomize语句,格式:Randomize n 其中 n是一个整型数,作为随机数生成器的“种子”功能:初始化随机数生成器的“种子”值,产生不相同的随机数序列,Private Sub Form_Click()Dim a As Integer,b As Integer,c As Integer Randomize 初始化随机数生成器 a=Int(90*Rnd+10)产生10,99 内的随机整数 b=Int(90*Rnd+10)c=a+b Print 产生的两个随机数:;a,b Print 和数:;cEnd Sub运行程序后单击窗体,输出结果是:产生的两个随机数:56 71 和数:127,例2.3 通过随机函数产生2个两位正整数,求这2个数 之和并显示出来,编写的窗体单击事件过程代码如下:Private Sub Form_Click()Dim a As Single,b As Single,c As Single a=6 b=9 c=Sqr(a*a+b*b)Print c=;c End Sub 运行程序后单击窗体,输出结果是:c=10.81665,例2.2 已知a=6,b=9,计算c=,用于进行字符串处理 说明:(1)函数Mid(字符串,p,n)从第P个开始取n个字符 示例:Mid(“ABCDEG”,3,2)的结果为”CD”若省略n,则得到的是从P开始的往后所有字符,如 Mid(“ABCDE”,2)的结果为“BCDE”,字符串函数,(2)函数Instr(f,串1,串2,k)查找串2在串1中的位置 f 和 k 均为可选参数,f表示开始搜索的位置(默认值为1),k表示比较方式,若k为0(默认),表示区分大小写;若k为1,则不分大小写。例如 Instr(3,”A12a34A56”,”A”)的结果为7 Instr(3,”A12a34A56”,”A”,1)的结果为4 Instr(”A12a34A56”,”A”)的结果为1,字符串函数,字符函数(1),字符函数(1),字符函数(2),字符函数(2),例2.4 先从字符串a中找出某个指定字符(本例为空格),再以此字符为界拆分成两个字符串,编写的窗体单击过程代码如下:Private Sub Form_Click()Dim a As String,b As String,c As String,n As Integer a=VisualBasic 表示空格 n=InStr(a,)查找空格位置 b=Left(a,n-1)取左边部分 c=Mid(a,n+1)取右边部分 Right(a,Len(a)-n)Print b 显示左边部分 Print c 显示右边部分End Sub 程序运行后单击窗体,输出结果是:VisualBasic,日期/时间函数用于进行日期和时间处理 例如:函数Date返回系统日期,如返回日期为#03/23/2011#函数Time返回系统时间,如返回时间为#10:53:28#,日期与时间函数,日期与时间函数,转换函数用于数据类型的转换 说明:Val函数将数字字符串转换为数值型数字时,会自动将字符串中的空格去掉,并依据字符串中排列在前面的数值常量来定值,例如:Val(12A12)的值为 12 Val(1.2e2)的值为 120 Val(A12)的值为 0 Val(126)的值为 126,类型转换函数,转换函数,(1)一行写多条语句。冒号分隔 Sum=Sum+x:Count=Count+1(2)一条语句写成多行 使用续行符(一个空格后面跟随一个下划线“_”),将长语句分成多行。例如:Print Text1.Text&Text2.Text&Text4.Text _&Left(Text3.Text,3)(3)不区分大小写字母 VB不区分应用程序代码字母的大小写。,代码书写规则,(4)各关键字之间,关键字和变量名、常量名、过程名之间一定要有空格分隔 示例:PrivateSubForm_Click()(5)使用缩进 在编写程序代码时,可以使用缩进来反映代码的逻辑结构和嵌套关系。例如:Private Sub Form_Click()x=4 If x=1 End If End Sub,(6)严格按照VB规定的格式和符号编写程序。与其他高级语言一样,在VB中使用的分号、引号、括号等符号都是英文状态下的符号,而不能使用中文状态下的符号。许多程序错误都是由此而起!,使程序结构清晰,可读性好,也易于查错和修改 结构化程序设计方法有三种基本控制结构:顺序结构、选择结构和循环结构 具有单入口,单出口的特点,结构化程序的基本结构,