1、学习程序设计的基本方法多练模仿第第2 2章章 程序设计基础程序设计基础 程序中的大部分实际工作是采用程序代码来处理的程序中的大部分实际工作是采用程序代码来处理的 任何一个程序设计语言都有一套严格的编程规定任何一个程序设计语言都有一套严格的编程规定 本章主要内容本章主要内容 数据类型数据类型 常量与变量常量与变量 表达式表达式 常用内部函数常用内部函数 程序代码编写规则程序代码编写规则 2.12.1 数据类型数据类型 数数据据是是程程序序处处理理的的对对象象。为为了了更更好好地地处处理理各各种种各各样样的的数数据据,VB定义了多种数据类型定义了多种数据类型 数值型数值型 数据类型数据类型 字符型
2、字符型 逻辑型逻辑型 日期型日期型 对象型对象型 变体型变体型整数整数:整型整型/长整型长整型字节型字节型浮点型浮点型:单单/双精度双精度货币型货币型 1.1.整型整型(Integer)(Integer)和长整型和长整型(Long)(Long)不带小数部分的数,表示正整数、负整数和零不带小数部分的数,表示正整数、负整数和零 整型数整型数:-32768-327683276732767 长整型数:长整型数:-2147483648-214748364821474836472147483647 2.2.字节型字节型(Byte)(Byte)字节型数可以表示无符号的整数字节型数可以表示无符号的整数 0 0
3、255255 3.3.单精度型单精度型(Single)(Single)和双精度型和双精度型(Double)(Double)浮点数。表示带有小数部分的数浮点数。表示带有小数部分的数 表示数的范围大,但有误差。表示数的范围大,但有误差。如超出某个表示范围,则用科学记数法如超出某个表示范围,则用科学记数法 例如:例如:4.53E8(4.53104.53E8(4.53108 8),8.173E-148.173E-14,3.14D233.14D23 4.4.货币型货币型(Currency)(Currency)专门为处理货币而设计的数据类型专门为处理货币而设计的数据类型 它可最多保留小数点右边它可最多保留
4、小数点右边4 4位和小数点左边位和小数点左边1515位位 5.字符型字符型(String)用双引号括起来的一串字符。用双引号括起来的一串字符。例如,例如,“Canton”、”1+2=?”、”GoodMorning”等等 “”称为起止界限符。称为起止界限符。字符串长度。分变长字符串字符串长度。分变长字符串(长度不固定长度不固定)和定长字符串和定长字符串(长度长度固定固定)在在VB中,把汉字作为一个字符来处理。中,把汉字作为一个字符来处理。6.逻辑型逻辑型(Boolean)逻辑型又称布尔型,其数据只有逻辑型又称布尔型,其数据只有True(真真)和和False(假假)两个值两个值 7.日期型日期型(
5、Date)表示日期和时间表示日期和时间 用两个用两个“#”符号把日期和时间的值括起来符号把日期和时间的值括起来 如:如:#08/20/2001#、#2001-08-20#8.对象型对象型(Object)对象型数据可用来表示应用程序中的对象对象型数据可用来表示应用程序中的对象 9.变体型变体型(Variant)变体型数据是一种可变的数据类型,可以存放任何类型的数变体型数据是一种可变的数据类型,可以存放任何类型的数据据 当指定变量为当指定变量为Variant变量时,变量时,VB会自动完成必要的转换会自动完成必要的转换 在程序中不特别说明时,在程序中不特别说明时,VB会自动将该变量默认为会自动将该变
6、量默认为Variant型变量。型变量。例:例:Temp=“22”字符串字符串 Temp=Temp-1 数值数值 Temp=#01/01/2002#日期日期 说明:说明:(1)不同类型的数据,所占的存储空间不一样。不同类型的数据,所占的存储空间不一样。(2)数据的类型可在数据之后加上一个类型符来表数据的类型可在数据之后加上一个类型符来表示,例如,示,例如,413&,86!,104.67#等。等。2.2 2.2 常量与变量常量与变量 2.2.1 常量常量 在程序运行期间其值始终保持不变的量在程序运行期间其值始终保持不变的量 两种形式的常量:一般常量和符号常量两种形式的常量:一般常量和符号常量 1.
7、一般常量一般常量 在在程程序序代代码码中中直直接接给给出出的的数数据据。例例如如:123,-263,“Visual Basic”,“12.57”等等 2.符号常量符号常量 符号常量是在程序中用符号表示的常量。符号常量是在程序中用符号表示的常量。格式:格式:PublicPrivate Const 常量名常量名 As 数据类型数据类型=表达式表达式 例如:例如:Const PI=3.14159 As Single 2.2.22.2.2 变量变量 变量是在程序运行期间其值可以发生变化的量变量是在程序运行期间其值可以发生变化的量 1.变量的命名规则变量的命名规则 应遵守一些规则:应遵守一些规则:(1)
8、变量名必须以字母开头;变量名必须以字母开头;(2)只只能能由由字字母母、数数字字和和下下划划线线组组成成。不不能能含含有有小小数数点点、空空格等字符;格等字符;(3)字符个数不得超过字符个数不得超过255个;个;(4)不不能能使使用用VB的的关关键键字字(如如语语句句名名、函函数数名名等等)。例例如如,Print、Sub、End等;等;(5)不区分变量名中字母的大小写不区分变量名中字母的大小写 变量的声明就是向程序说明要使用的变量变量的声明就是向程序说明要使用的变量 有以下有以下2种方法种方法(显式声明与隐式声明显式声明与隐式声明)(1)声明变量声明变量(显式声明显式声明)用用Dim、Publ
9、ic、Private或或Static语句来声明变量语句来声明变量 例如:例如:Dim sum As Integer 把把sum定义为整型变量定义为整型变量 (2)隐式声明隐式声明 不加说明就直接使用变量,此时默认的变量类型为变体类不加说明就直接使用变量,此时默认的变量类型为变体类型型(Variant)也允许使用类型符来声明变量的类型,如也允许使用类型符来声明变量的类型,如Num%,Sum!2.2.变量的声明变量的声明 五类表达式:五类表达式:算术表达式算术表达式、字符串表达式字符串表达式、日期表达式日期表达式、关系表达式关系表达式和和逻辑表达式逻辑表达式2.3.1 算术表达式算术表达式 算术表
10、达式也称数值表达式,是用算术运算符把数值型常算术表达式也称数值表达式,是用算术运算符把数值型常量、变量、函数连接起来的式子量、变量、函数连接起来的式子 表达式的运算结果是一个数值表达式的运算结果是一个数值 VB有有8种算术运算符种算术运算符(表表2.2)运算符优先级运算符优先级 (乘方乘方)-(求负求负)*/Mod+-同级左到右同级左到右 2.3 2.3 表达式表达式说明:说明:(1)/和的区别:和的区别:1/2=0.5,12=0 (2)Mod用来求整型数除法的余数。用来求整型数除法的余数。例如:例如:9 Mod 7 结果为结果为 2 (3)在表达式中乘号不能省略,在表达式中乘号不能省略,如如
11、a*b不能写不能写成成ab(或或ab)(4)括号不分大、中、小,一律采用圆括号。括号不分大、中、小,一律采用圆括号。可以嵌套使用可以嵌套使用 例如,例如,xx(x+1)+1 x*(x*(x+1)+1)字符串表达式是采用连接符将两个字符串常量、字符串表达式是采用连接符将两个字符串常量、字符串变量、字符串函数连接起来的式子。字符串变量、字符串函数连接起来的式子。连接符有两个:连接符有两个:&和和+其作用都是将两个字符串连接起来,运算结果是其作用都是将两个字符串连接起来,运算结果是一个字符串。一个字符串。例如:例如:”计算机计算机”&”网络网络”的结果是:的结果是:”计算机网络计算机网络”123”+
12、”45”的结果是:的结果是:”12345”123&”ABC”的结果是:的结果是:”123ABC”2.3.2 2.3.2 字符串表达式字符串表达式 日期表达式是用运算符日期表达式是用运算符(+或或-)将算术表达式、日期型常量、将算术表达式、日期型常量、日期型变量和函数连接起来的式子。日期型变量和函数连接起来的式子。有以下有以下3种运算方式:种运算方式:(1)两个日期型数据相减,其结果是一个数值型数据两个日期型数据相减,其结果是一个数值型数据(相差相差的天数的天数)。例如:例如:#8/8/2001#-#6/3/2001#的结果为:的结果为:66 (2)日期型数据加上天数,其结果为一个日期型数据。日
13、期型数据加上天数,其结果为一个日期型数据。例如:例如:#12/1/2000#+31 的结果为的结果为:#01/01/2001#(3)日期型数据减去天数,其结果为一个日期型数据。日期型数据减去天数,其结果为一个日期型数据。例如:例如:#12/1/2000#-32 的结果为:的结果为:#10/30/2000#2.3.3 2.3.3 日期表达式日期表达式 内部函数是由内部函数是由VB系统提供的,每个内部函数完成某个特系统提供的,每个内部函数完成某个特定的功能。在程序中使用函数称为调用函数定的功能。在程序中使用函数称为调用函数 函数调用的一般格式为:函数调用的一般格式为:函数名函数名(参数参数1,参数
14、,参数2,)参数参数(也称自变量也称自变量)放在圆括号内,若有多个参数,以逗号放在圆括号内,若有多个参数,以逗号分隔。分隔。函数调用后,一般都有一个确定的函数值,即返回值。函数调用后,一般都有一个确定的函数值,即返回值。例如:例如:y=Sqr(289)Sqr是内部函数名,是内部函数名,289为参数,运行时该语句调用内部为参数,运行时该语句调用内部函数函数Sqr来求来求289的平方根,其计算结果由系统返回给变量的平方根,其计算结果由系统返回给变量y VB的内部函数大体上分为四大类:的内部函数大体上分为四大类:数学函数数学函数,字符串函字符串函数数,日期与时间函数日期与时间函数和和转换函数转换函数
15、。2.4 2.4 常用内部函数常用内部函数 VB中备有各种计算算术函数的子程序,在程序中要使用某个中备有各种计算算术函数的子程序,在程序中要使用某个函数时,只要调用该函数就行了。函数时,只要调用该函数就行了。使用数学函数的几点说明:使用数学函数的几点说明:(1)三角函数的自变量单位是弧度三角函数的自变量单位是弧度 如如Sin47应写成应写成 Sin(47*3.14159/180)。(2)函数函数Int是求小于或等于是求小于或等于x的最大整数。的最大整数。例如例如 Int(2)=2,Int(-2.5)=-3 当当x0时就直接舍去小数,若时就直接舍去小数,若x0则舍去小数位后再减则舍去小数位后再减
16、1 利用利用Int函数可以对数据进行四舍五入。例如,对一个正数函数可以对数据进行四舍五入。例如,对一个正数x舍去小数位时进行四舍五入,可采用如下式子:舍去小数位时进行四舍五入,可采用如下式子:Int(x+0.5)当当x=9.4时,时,Int(9.4+0.5)=9 当当x=9.5时,时,Int(9.5+0.5)=102.4.1 2.4.1 数学函数数学函数 (3)随机函数可以模拟自然界中各种随机现象,它随机函数可以模拟自然界中各种随机现象,它所产生的随机数,可以提供给各种运算或试验使用所产生的随机数,可以提供给各种运算或试验使用 Rnd通常与通常与Int函数配合使用函数配合使用 生成生成a,b区
17、间范围内的区间范围内的随机整数,可以采用随机整数,可以采用 Int(b-a+1)*Rnd+a)例如例如 Int(4*Rnd+1)可以产生可以产生14之间之间(含含1和和4)的随机整数。的随机整数。可以是可以是1,2,3或或4,这由,这由VB运行时随机给定运行时随机给定 使用使用Rnd函数之前,先用函数之前,先用Randomize语句来初始化语句来初始化随机数生成器随机数生成器编写的窗体单击事件过程代码如下:编写的窗体单击事件过程代码如下:Private Sub Form_Click()Dim x As Integer,a As Integer Dim b As Integer,c As Int
18、eger x=36 a=Int(x/10)求十位数求十位数 b=x Mod 10 求个位数求个位数 c=b*10+a 生成新的数生成新的数 Print 处理后的数处理后的数:;c End Sub运行程序后单击窗体,输出结果是:运行程序后单击窗体,输出结果是:处理后的数:处理后的数:63 例例2.1 给定一个两位正整数给定一个两位正整数(如如36),交换个位数和十位数,交换个位数和十位数的位置,把处理后的数显示在窗体上的位置,把处理后的数显示在窗体上Private Sub Form_Click()Dim x As Integer,a As Integer Dim b As Integer,c A
19、s Integer x=36 a=x 10 求十位数求十位数 b=x 10*a 求个位数求个位数 c=b*10+a Print 处理后的数处理后的数:;cEnd Sub 把上述程序改为以下形式,效果是否一样?把上述程序改为以下形式,效果是否一样?想一想想一想 通常,解决某个问题的程序方法有多种,通常,解决某个问题的程序方法有多种,我们应该从中选择较优的一种方法。我们应该从中选择较优的一种方法。编写的窗体单击事件过程代码如下:编写的窗体单击事件过程代码如下:Private Sub Form_Click()Dim a As Integer,b As Integer,c As Integer Ran
20、domize 初始化随机数生成器初始化随机数生成器 a=Int(90*Rnd+10)产生产生10,99区间内的随机整数区间内的随机整数 b=Int(90*Rnd+10)c=a+b 求两数之和求两数之和 Print 产生的两个随机数产生的两个随机数:;a,b Print 和数和数:;c End Sub运行程序后单击窗体,输出结果是:运行程序后单击窗体,输出结果是:产生的两个随机数:产生的两个随机数:56 71 和数:和数:127例例2.2 通过随机函数产生通过随机函数产生2个两位正整数,求这个两位正整数,求这2个数个数 之和并显示出来之和并显示出来 再次运行程序,单击窗体后输再次运行程序,单击窗
21、体后输出另一组结果是:出另一组结果是:产生的两个随机数:产生的两个随机数:18 37 和数:和数:55内部函数是由VB系统提供的,每个内部函数完成某个特定的功能。Instr(3,”A12a34A56”,”A”,1)的结果为 4 Instr(”A12a34A56”,”A”)的结果为 1运行程序后单击窗体,输出结果是:n=InStr(a,)查找空格位置例如 String(6,42)与 String(6,”*”)作用相同应遵守一些规则:Dim x As Integer,a As Integer4 使用日期/时间函数示例 (留给学生分析)说明:(1)不同类型的数据,所占的存储空间不一样。日期型(Dat
22、e)表示日期和时间 用两个“#”符号把日期和时间的值括起来 如:#08/20/2001#、#2001-08-20#Print c 显示右边部分任何一个程序设计语言都有一套严格的编程规定程序运行后单击窗体,输出结果是:Visual FoxPro字符型(String)用双引号括起来的一串字符。日期表达式是用运算符(+或-)将算术表达式、日期型常量、日期型变量和函数连接起来的式子。(3)在表达式中乘号不能省略,如a*b不能写成ab(或ab)字符串表达式是采用连接符将两个字符串常量、字符串变量、字符串函数连接起来的式子。字符串函数用于进行字符串处理字符串函数用于进行字符串处理 使用字符串函数的几点说明
23、:使用字符串函数的几点说明:(1)函数函数Mid(“ABCDEG”,3,2)的结果为的结果为”CD”若省略若省略n,则得到的是从,则得到的是从P开始的往后所有字符,如开始的往后所有字符,如 Mid(“ABCDE”,2)的结果为的结果为“BCDE”(2)插入字符串语句插入字符串语句Mid,该语句格式如下:,该语句格式如下:Mid(字符串字符串,p,n)=子字符串子字符串 用用“子字符串子字符串”替换替换“字符串字符串”中从中从P开始的与开始的与“子字子字符串符串”等长的一串字符。等长的一串字符。例如,假设例如,假设S=“ABCDE“,执行语句执行语句Mid(S,3)=“99“后,后,S的值为的值
24、为“AB99E“2.4.22.4.2 字符串函数字符串函数 (3)(3)在函数在函数InstrInstr中,中,f f和和k k均为可选参数,均为可选参数,f f表示表示开始搜索的位置开始搜索的位置(默认值为默认值为1)1),k k表示比较方式,若表示比较方式,若k k为为0(0(默认默认),表示区分大小写;若,表示区分大小写;若k k为为1 1,则不分大小,则不分大小写。写。格式:格式:Instr(f,Instr(f,字符串字符串1,1,字符串字符串2,k)2,k)例如例如 Instr(3,Instr(3,”A12a34A56A12a34A56”,”A A”)的结果为的结果为 7 7 Ins
25、tr(3,Instr(3,”A12a34A56A12a34A56”,”A A”,1,1)的结果为的结果为 4 4 Instr(Instr(”A12a34A56A12a34A56”,”A A”)的结果为的结果为 1 1 (4)在函数在函数String中,字符也可以用中,字符也可以用ASCII代码代码(附附录一录一)来表示来表示 例如例如 String(6,42)与与 String(6,”*”)作用相同作用相同 先从字符串先从字符串a中找出某个指定字符中找出某个指定字符(本例为空格本例为空格),再以此,再以此字符为界拆分成两个字符串。编写的窗体单击过程代码如下:字符为界拆分成两个字符串。编写的窗体
26、单击过程代码如下:Private Sub Form_Click()Dim a As String,b As String,c As String,n As Integer a=VisualFoxPro 表示空格表示空格 n=InStr(a,)查找空格位置查找空格位置 b=Left(a,n-1)取左边部分取左边部分 c=Mid(a,n+1)取右边部分取右边部分 Print b 显示左边部分显示左边部分 Print c 显示右边部分显示右边部分 End Sub 程序运行后单击窗体,输出结果是:程序运行后单击窗体,输出结果是:Visual FoxPro例例2.32.3 使用字符串函数示例使用字符串函
27、数示例 Private Sub Form_Click()Dim a As String,b As String,c As String,n As Integer a=VisualFoxPro 表示空格表示空格 n=InStr(a,)查找空格位置查找空格位置 b=Left(a,n-1)取左边部分取左边部分 c=Right(_,_)取右边部分取右边部分 Print b 显示左边部分显示左边部分 Print c 显示右边部分显示右边部分 End Sub 程序运行后单击窗体,输出结果是:程序运行后单击窗体,输出结果是:Visual FoxPro 若用若用 RightRight函数来代替函数来代替 Mi
28、dMid函数函数,应如何改动?应如何改动?想一想想一想答案:答案:a,Len(a)-n 日期日期/时间函数用于进行日期和时间处理时间函数用于进行日期和时间处理 说明:说明:函数函数Weekday返回值返回值17,依次表示星期日到星,依次表示星期日到星期六。期六。2.4.3 2.4.3 日期与时间函数日期与时间函数 Private Sub Form_Click()Private Sub Form_Click()x=#1/1/2005#x=#1/1/2005#a=x-Date a=x-Date b=Weekday(x)b=Weekday(x)c=Year(Date)c=Year(Date)d=Mo
29、nth(Date)d=Month(Date)e=Hour(Time)e=Hour(Time)f=Minute(Time)f=Minute(Time)Print Print 现在距离现在距离20052005年元旦还有:年元旦还有:;a;a;天天 Print Print 20052005年元旦是:星期年元旦是:星期;b-1;b-1 Print Print 本月份是:本月份是:;c;c;年年;d;d;月月 Print Print 现在是:现在是:;e;e;时时;f;f;分分 End SubEnd Sub运行程序后单击窗体,输出结果如下:运行程序后单击窗体,输出结果如下:现在距离现在距离2005200
30、5年元旦还有:年元旦还有:11841184天天 20052005年元旦是:星期年元旦是:星期6 6 本月份是:本月份是:20012001年年1010月月 现在是:现在是:1616时时2727分分例例2.42.4 使用日期使用日期/时间函数示例时间函数示例 (留给学生分析)(留给学生分析)转换函数用于数据类型的转换转换函数用于数据类型的转换 说明:说明:Val函数将数字字符串转换为数值型数字时,会自动函数将数字字符串转换为数值型数字时,会自动将字符串中的空格去掉,并依据字符串中排列在前面的数值常将字符串中的空格去掉,并依据字符串中排列在前面的数值常量来定值,例如:量来定值,例如:Val(A12)
31、的值为的值为 0 Val(12A12)的值为的值为 12 Val(1.2e2)的值为的值为 120 例例2.4 2.4 使用转换函数的示例使用转换函数的示例(留给学生分析留给学生分析)Private Sub Form_Click()Private Sub Form_Click()x=x=123123 y=123 y=123 a=Chr(Asc(x)+5)a=Chr(Asc(x)+5)b=Str(Val(x)+5)b=Str(Val(x)+5)c=Val(Str(y)+c=Val(Str(y)+5 5)Print a,b,c Print a,b,c End Sub End Sub 运行程序后单击
32、窗体,输出结果如下:运行程序后单击窗体,输出结果如下:6 1286 128 1235 1235 2.4.42.4.4 类型转换函数类型转换函数 2.5.1 语句及语法语句及语法 VB中的程序语句是执行具体操作的指令。中的程序语句是执行具体操作的指令。由由VB关键字、属性、表达式以及关键字、属性、表达式以及VB可识别符号的组合可识别符号的组合 例如,下列两个语句:例如,下列两个语句:Print a 2*b 关键字关键字 表达式表达式 Text1.Text “VB程序设计程序设计”对象名对象名 属性名属性名 赋值号赋值号 表达式表达式 简单的语句只有一个关键字。示例:简单的语句只有一个关键字。示例
33、:End 2.52.5 程序代码编写规则程序代码编写规则 建立程序语句时必须遵守的构建规则称为语法。建立程序语句时必须遵守的构建规则称为语法。统一约定符号如下:统一约定符号如下:方括号,可选项方括号,可选项 多项中选一项多项中选一项 (竖线竖线)用来分隔多个选择项用来分隔多个选择项(选其中之一项选其中之一项),表示同类项目的重复出现表示同类项目的重复出现 在编写程序代码时,要遵守一定的规则。不能超越其规定在编写程序代码时,要遵守一定的规则。不能超越其规定来自由发挥。来自由发挥。(1)一行写多条语句一行写多条语句。冒号分隔。冒号分隔 Sum=Sum+x:Count=Count+1 (2)一条语句
34、写成多行一条语句写成多行 使用续行符使用续行符(一个空格后面跟随一个下划线一个空格后面跟随一个下划线“_”),将长,将长语句分成多行。例如:语句分成多行。例如:Print Text1.Text&Text2.Text&Text4.Text&_&Left(Text3.Text,3)(3)不区分大小写字母不区分大小写字母 VB不区分应用程序代码字母的大小写不区分应用程序代码字母的大小写。2.5.22.5.2 代码书写规则代码书写规则 (4)各关键字之间,关键字和变量名、常量名、各关键字之间,关键字和变量名、常量名、过程名之间一定要有空格分隔。过程名之间一定要有空格分隔。示例:示例:Private S
35、ub Form_Click()(5)使用缩进使用缩进 在编写程序代码时,可以使用缩进来反映代码的逻辑结在编写程序代码时,可以使用缩进来反映代码的逻辑结构和嵌套关系。构和嵌套关系。例如:例如:Private Sub Form_Click()x=4 If x1 Then Print x=1 End If End Sub (6)严格按照严格按照VB规定的格式和符号编写程序。规定的格式和符号编写程序。与其他高级语言一样,在与其他高级语言一样,在VB中使用的分号、引号、括号中使用的分号、引号、括号等符号都是英文状态下的半角符号,而不能使用中文状态下等符号都是英文状态下的半角符号,而不能使用中文状态下的全
36、角符号。的全角符号。许多程序错误都是由此而起许多程序错误都是由此而起!例如:例如:If a5 Then x=10 Print x=;x 不能写成不能写成 If a 5 Then x=10 Print “x=”;x全角符号全角符号全角符号全角符号 VBVB支持结构化的程序设计方法支持结构化的程序设计方法 其程序结构清晰,可读性好,也易于查错和修改其程序结构清晰,可读性好,也易于查错和修改 结构化程序设计方法有三种基本控制结构:结构化程序设计方法有三种基本控制结构:顺序结构、选择结构和循环结构顺序结构、选择结构和循环结构 具有具有单入口,单出口单入口,单出口的特点的特点 (a)(b)(c)顺序结构 选择结构 循环结构AB假真L E真假AB E2.5.32.5.3 结构化程序的基本结构结构化程序的基本结构谢谢观看谢谢观看