03基本语言要素_第1页
03基本语言要素_第2页
03基本语言要素_第3页
03基本语言要素_第4页
03基本语言要素_第5页
已阅读5页,还剩43页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基本语言要素桂林理工大学 李晨晖1目录基本语言要素:语言中出现哪些东西? 编程=编菜谱 编程操作的对象是数据,菜谱要操作的是菜 程序运行在内存,做菜在厨房,处理完后都要“清理”VB的数据类型常量与变量运算符和表达式常用内部函数代码和语句的书写规则数据类型=模具常量变量=容器运算符=基本操作函数=全自动机器,设定几个参数,就可得到结果要处理的数据2基本语言要素基本语言要素:关键字、运算符、标点符号、标识符等关键字:VB的保留字,在程序中表示固定的意义,它们不能被重新定义用作它用。如: 表示数据类型的Integer、String等; 表示控制结构的If等; 表示操作或内部函数的Print等运算符:如+-*/等标点符号:成对()”’,;:等标识符:程序员定义的名字,用作变量名、常量名、自定义的函数名、自定义的数据类型名等。3标识符的取名规则:以字母或汉字开始。其后可跟零个或多个字母、汉字、数字或下划线。标识符的字符数不得超过255个字符。注意:VB不区分大小写,abc等同于Abc

例,几个合法的标识符:

mysteryresultdouble_listold_998例,几个不合法的标识符:

12a(不是以字母或汉字开始) b$6_1(包含非字母、汉字、数字或下划线字符,即$)4VB的数据类型数据类型分类:系统定义数据类型自定义数据类型数值型

字符型逻辑型日期型对象型变体型整数:整型/长整型浮点型:单/双精度字节型货币型不同类型的数据,所占的存储空间不一样5数值型数据:整型Integer、长整型Long:不带小数部分的数,表示正整数、负整数和零整型:2字节,范围-32768~32767长整型:4字节,范围-2147483648~2147483647单精度Single、双精度Double:带有小数部分的数。由符号、指数和尾数组成。单精度:4字节,如4.53E3(4.53×103)双精度:8字节货币型Currency:专门为处理货币而设计的数据类型,8字节,可最多保留小数点右边4位和小数点左边15位字节型Byte:表示无符号的整数,1字节,范围0~2554:0000000000000100-4:11111111111111006字符型String:ASCII字符组成的字符序列。 如:“a”、“123”、“计算机”、“”(空字符串),用双引号来界定。 变长字符串:长度不固定,0~231个字符 定长字符串:长度固定,如:

DimstuNameAsString*10 VB中,1个汉字为1个字符,1个字符占2字节。逻辑型Boolean:又称布尔型。只有真(True)和假(

False)两个值。2字节。

当把数值型数据转换为逻辑型时,0会转换为False,其他非0值转换为True。

反之,当把逻辑型值转换为数值时,False转换为0,True转换为-1。真:1111111111111111假:00000000000000007日期型Date:时间和日期。8字节。范围100年1月1日~9999年12月31日0:00:00~23:59:59。有两种表示方法:以符号#括起来的任何在字面上可认作日期和时间数据。例如:#12/02/2000#、#2001-08-20#用数字序列表示。小数点左边的数字表示日期(与1899年12月30日相比的天数),右边的表示时间(0为午夜、0.5为中午12点等)。例如:

-2.5表示1899年12月28日12:00:00。对象型Object:用来表示图形、OLE对象或其他对象。4字节。变体型Variant:是一种特殊的数据类型。可以存储上面介绍的任何一种类型的数据。8如:DimxasInteger,y%‘整型Dimx1asLong,y1&‘长整型Dimx2asSingle,y2!‘单精度型Dimx3asDouble,y3#‘双精度型DimSasString,S_name$‘字符型Dimx4AsInteger,y4AsDouble ‘分别为整型、双精度型Dimx5,y5AsInteger ‘x5为变体类型

y5为整型不加定义,直接使用,为变体类型,如:

Temp=22 Temp=“abcd”记忆方法:%化整为零&很长一条线

!一根竖线为单

#两根竖线为双

$为S,String

@一枚硬币9Dimx%,y%,x1&发生了什么事?111011011110110110001101111011011000110111101101111011011110110110001101111011011110110111101101100011011110110110001101111011010000000100100011010001010110011110001001101010111100110111101111内存000000000000000000000000起名为x0000000000000000起名为y00000000000000000000000000000000起名为x1变量名10用户自定义数据类型格式:

Type自定义数据类型名 数据元素名[(下标)]As数据类型名 ... EndType其中: 自定义数据类型名:是要定义的数据类型的名字。 数据元素名:自定义类型中的一个成员。 下标:表示数组(第6章介绍) 数据类型名:VB中的标准数据类型11例,定义一个学生类型:

TypeStu

SNoAsString*5

SNameAsString*8 ScoreAsInteger EndType表示有一个数据类型,名为Stu(其地位等同于Integer等),内有3个元素:5位字符的学号SNo、8位字符的姓名SName

、整数类型的成绩Score。若DimstuAAsStu则定义了一个变量stuA。可以通过

stuA.SNo=“12345”

stuA.SName=“王晓明”

stuA.Score=88将王晓明同学的信息存进去。12常量与变量常量:在程序运行期间,其内存单元中存放的数据不能改变。变量,在程序运行期间,其内存单元中存放的数据可以根据需要随时改变。

即在程序运行的不同时刻,可以将不同的数值(类型相同)存入内存单元存储,新的数据存入后,原来的数据将被清除13常量普通常量符号常量整型:如:10

&25或&O25,即(25)8=21

&H25,即(25)16=37长整型:如:23&

&O347&

&H1AAAB&货币型:以@结尾单精度:如0.123、123!、

±n.nE±m=(

±n.n)*10±m双精度:如123#、

±n.nD±m=(±n.n)*10±m常量系统常量字符常量:如“ABC”、“0”、“程序”、“”等数值常量布尔常量:只有两个值:True、或False日期常量:如#January4,1989#、

#2002-5-414:30:00PM#14符号常量:用符号表示常数值。

可以提高程序的可读性和可维护性。用以下格式声明:

Const常量名[As类型]=常数表达式

例:ConstPIAsSingle=3.14

或ConstPI!=3.14

符号常量名习惯用大写字母。15系统常量VB提供了大量预定义的常量,可以在程序中直接使用,均以小写字母vb开头(xl表示Excel中的常量)。

例:

vbCrLf:表示回车换行符。可通过“视图/对象浏览器”中的,VB或VBA对象库中查看“全局”的成员,及其功能介绍。再如:

Text1.ForeColor=vbRed

Myform.WindowsState=vbMaxmizedvbRed代表“红色”的十六进制长整数vbMaxmized值为2,代表窗体的最大化状态16变量命名规则:同标识符的命名规则

为了增加程序的可读性,可在变量名前加一个缩写的前缀来表明该变量的数据类型。 例如:strAbc(字符串变量)

iCount(整型变量)

dblX(双精度变量)

sYz(单精度变量)控件对象的命名也类似。如,Form以frm为前缀、Label以lbl为前缀、CommandButton以cmd为前缀、TextBox以txt为前缀17变量声明:可显示或隐式声明用Dim语句显式声明变量

形式:Dim变量名[AS类型]

或Dim变量名[类型符]

例:

DimiCountAsinteger,sumAssingle

等价于DimiCount%,sum!隐式声明(不提倡)

VB允许用户在编写应用程序时,不声明变量而直接使用,系统临时为新变量分配存储空间并使用------隐式声明。

所有隐式声明的变量都是Variant数据类型18如:PrivateSubForm_Click() Sum=0 a=10 b=20 Sun=a+b ‘出现手误 PrintSum ‘结果出错 EndSub使用的变量a,b,Sum都没有事先定义。强制显式声明——OptionExplicit语句良好的编程习惯应该:“先声明变量,后使用变量”这样做可以提高程序的效率,也减少出错的概率。1可以在窗体模块、标准模块和类模块的通用声明段中加入语句:OptionExplicit2或在“工具/选项”中设置为“要求变量声明”。19运算符和表达式

运算是对数据的处理。最基本的运算形式可以用一些简洁的符号来描述,这些符号称为运算符或操作符。运算的对象就是数据,称为运算量或操作数。由运算符和运算量组成表达式。运算符包括算术运算符、字符串运算符、关系运算符、逻辑运算符20运算符算术运算符运算符含义优先级表达式结果^幂14^(1/2)2-负号2-3-3*乘33*618/除35/22.5\整除45\22(小数丢弃)Mod取余数510Mod31+加63+36-减63-3021说明:1所有运算符号不能省略。 例如:表达式xy+z,必须写成x*y+z2运算符与操作数之间用空格隔开3运算按运算符优先级的先后顺序进行。4可用圆括号()改变优先级或使表达式更清晰。圆括号可嵌套,但必须成对出现。如:

((xmod10)*10+x)/10例如:表达式5+10mod

10\9/3+2^2

的结果是10。22日期类型的算术运算:日期型数据是一种特殊的数值型数据,只能有下面3种情况:1.一个日期型数据可以相减:DateB-DateA结果是一个数值型整数(两个日期相差的天数)。例如:#05/08/2002#-#05/01/2002#其结果为数值:72.一个日期型数据(DateA)与一数值数据(N)可作加法运算:DateA+N其结果仍是一个日期型数据。例如:#05/01/2002#+7其结果为日期型数据:#05/08/2002#3.一个日期型数据(DateA)与一数值数据(N)可作减法运算:DateA-N其结果仍是一个日期型数据。例如:#05/08/2002#-7其结果为日期型数据:#05/01/2002#23字符串运算符:+、&主要进行字符串的连接。如:

"ABCD"+"EFGHI“ '结果为:ABCDEFGHI“VB”&“程序设计” ‘结果为:VB程序设计+与&的区别是:

+:两个操作数均应为字符串类型;

&:两个操作数既可为字符型也可为数值型。当是数值型时,系统自动先将其转换为数字字符,再连接。例:"100"&123=100123100&123=100123"Abc"&"123"=Abc123"Abc"&123=Abc123"100"+123=223"100"+"123"=100123“Abc”+123 ‘出错24关系运算符:也称比较运算符,其作用是将两个操作数进行大小的比较。结果是一个逻辑值,关系成立返回True,否则返回False运算符含义优先级表达式结果<小于所有关系运算优先级相同。低于算术运算的加“+”,减“-”运算,高于逻辑非“Not”运算。15+10<20False<=小于或等于10<=20True>大于10>20False>=大于或等于"This">="That"True=等于"This"="That"False<>不等于"This"<>"That"TrueLike字符串匹配"This"Like"*is"TrueIs对象比较25关系运算的运算规则:1数值或日期类型比较:按数值大小。例如:33+12>=46-1‘结果为True #01/01/2000#>#01/01/1990#‘结果为True2字符串比较:按字符的ASCII码值从左到右一一比较,直到出现不同的字符为止。例如:“a”>“A”‘结果为True "ABCDE">"ABRA" ‘结果为False3数值型与可转换为数值型的数据比较,如:29>"189",按数值比较,结果为False。4数值型与不能转换成数值型的字符型比较,如:77>"sdcd",不能比较,系统出错。5“Like”运算符是VB6.0新增加的。其使用格式为:str1Likestr226逻辑运算符:也称布尔运算,结果是逻辑值Not为单目运算符(要求一个操作数),其它为双目运算符27说明:VB中常用的逻辑运算符是Not、And和Or。它们用于将多个关系表达式连起来进行逻辑判断。例如,数学上表示某个数在某个区域时用表达式:10≤X<20,用VB程序中应写成:

X>=10AndX<20

Not(X>=10AndX<20)等价于X<10orX>=20参与逻辑运算的量一般都应是逻辑型数据,如果参与逻辑运算的两操作数是数值量,则以数值的二进制值逐位进行逻辑运算。如,not1=-2 ‘将00000001按位取反成11111110,为-2的补码。关系表达式与逻辑表达式常常用在条件语句与循环语句中,作为条件控制程序的流程走向。28运算符的优先顺序:当表达式包含多种运算符时:算术运算符>字符运算符>关系运算符>逻辑运算

最先计算算术运算符,最后计算逻辑运算符。在各类运算中再按照相应的优先次序进行。可以用括号改变优先顺序

例如:1.5+3/2>2Or7Mod3<4AndNotTrue29常用内部函数内部函数是由VB系统提供的,每个内部函数完成某个特定的功能。函数调用的一般格式为:

函数名(参数1,参数2,…)

参数(也称自变量)放在圆括号内,若有多个参数,以逗号分隔。

函数调用后,一般都有一个确定的函数值,即返回值。

例如:y=Sqr(289)

说明:Sqr是内部函数名,其功能是求平方根。289为参数,运行时该语句调用Sqr来求289的平方根,其计算结果返回给变量yVB的内部函数大体上分为四大类:

数学函数、字符串函数、日期与时间函数、转换函数。说明:在以下叙述中,用N表示数值表达式,用C表示字符表达式,用D表示日期表达式。30常用数学函数Sin(N)

N数值表达式的单位是弧度

如Sin47°应写成Sin(47*3.14159/180)Int(N) :求小于或等于x的最大整数

例如Int(2.5)=2,Int(-2.5)=-3

当x≥0时就直接舍去小数,若x<0则舍去小数位后再减1

Int函数的应用:四舍五入。

例如: Int(x+0.5)

当x=9.4时,Int(9.4+0.5)=9

当x=9.5时,Int(9.5+0.5)=1031Rnd[(N)]:返回[0,1)之间的单精度随机数。函数应用:生成[a,b]区间范围内的随机整数:

Int((b-a+1)*Rnd+a)例如,Int(4*Rnd+1)可以产生[1,4]之间的随机整数Abs(N):求绝对值如,Abs(a-b)即为|a-b|Exp(N)Log(N)Sgn(N)

32例

给定一个两位正整数(如36),交换个位数和十位数的位置,把处理后的数显示在窗体上PrivateSubForm_Click()DimxAsInteger,aAsIntegerDimbAsInteger,cAsIntegerx=36a=Int(x/10) '求十位数

b=xMod10 '求个位数

c=b*10+a '生成新的数

Print"处理后的数:";cEndSub运行程序后单击窗体,输出结果是:处理后的数:6333若改为:PrivateSubForm_Click()DimxAsInteger,aAsIntegerDimbAsInteger,cAsIntegerx=36

a=x\10 '求十位数

b=x–10*a '求个位数

c=b*10+aPrint"处理后的数:";cEndSub通常,解决某个问题的程序方法有多种,我们应该从中选择较优的一种方法。34例

通过随机函数产生2个两位正整数,求这2个数之和并显示出来PrivateSubForm_Click()DimaAsInteger,bAsInteger,cAsIntegerRandomize '初始化随机数生成器

a=Int(90*Rnd+10) '[10,99]区间

b=Int(90*Rnd+10)c=a+b '求两数之和

Print"产生的两个随机数:";a,bPrint"和数:";cEndSub运行程序后单击窗体,输出结果是:产生的两个随机数:5671

和数:127

再次运行程序,单击窗体后输出另一组结果是:

产生的两个随机数:1837

和数:5535常用字符串函数取子串函数:Left()、Right()、Mid()格式:

Left(c,n):从字符串c左边开始取n个字符

Right(c,n):从字符串c右边开始取n个字符

Mid(c,n1[,n2]):从字符串c的第n1个字符开始,取n2个字符。缺省n2,则从c的n1个字符开始到结束。例:

Left(“VB程序设计”,4)值是“VB程序”

Right(“VB程序设计”,4)值是“程序设计”

Mid(“VB程序设计”,3,2)值是“程序”

Mid(“VB程序设计”,3)值是“程序设计”36字符串比较函数:InStr()格式:InStr([n1,],c1,c2[,m])功能:返回从n1开始查找c2在c1首次出现的位置

找不到,则返回0。

N1缺省,则从c1的第一个字符开始查找。

m省略或为0,查找时区分大小写,为1查找时不区分大小写。例: Instr(“Computer”,“Pu”)的值是0 Instr(1,“Computer”,“Pu”,1)的值是4 Instr(3,”A12a34A56”,”A”)的结果为7 Instr(3,”A12a34A56”,”A”,1)的结果为4字符串长度函数:Len()格式:Len(c)功能:返回c的长度(字符个数)。例:Len(“VB程序设计”)的值是6。37去字符串前后空格函数:LTrim()、RTrim()、Trim()格式:

LTrim(c):去掉C字符串左边空格

RTrim(c):去掉C字符串右边空格

Trim(c):去掉C字符串左右两边空格例:

LTrim(“1234”)值为“1234”

RTrim(“1234”)值为“1234” Trim(“1234”)值为“1234”产生字符串函数:Space()、String()格式:

Space(n):产生n个空格字符串。

String(n,c):产生n个c字符串中首字符的字符串例: String(3,”a”)或String(3,97)

值为“aaa” String(3,”abc”)值为“aaa”38大小写字母转换函数:LCase()、UCase()格式:

LCase(c):把字符串c中大写字母转换为小写形式。

UCase(c):把字符串c中小写字母转换为大写形式。例:

LCase(“aB123d”)值为“ab123d” UCase(“aB123d”)值为“AB123D”39例

先从字符串a中找出某个指定字符(本例为空格),再以此字符为界拆分成两个字符串。PrivateSubForm_Click()DimaAsString,bAsString,cAsString,nAsIntegera=“VisualFoxPro” '中间有空格

n=InStr(a,"")'查找空格位置

b=Left(a,n-1)'取左边部分

c=Mid(a,n+1)'取右边部分

Printb'显示左边部分

Printc'显示右边部分EndSub

程序运行后单击窗体,输出结果是:

Visual

FoxPro40时期与时间函数日期/时间函数用于进行日期和时间处理Now[()]Date[()]Time[()]Year(d)Month(d)Day(d)Weekday(d):返回值1~7,依次表示星期日到星期六。Timer[()]:返回自午夜0时起所经过的秒数41例PrivateSubForm_Click() x=#1/1/2005# a=x–Date b=Weekday(x) c=Year(Date) d=Month(Date) e=Hour(Time) f=Minute(Time) Print"现在距离2005年元旦还有:";a;"天" Print"2005年元旦是:星期";b-1 Print"本月份是:";c;"年";d;"月“

Print"现在是:";e;"时";f;"分"EndSub

运行程序后单击窗体,输出结果如下:

现在距离2005年元旦还有:1184天

2005年元旦是:星期6

本月份是:2001年10月

现在是:16时27分42类型转换函数:用于数据类型的转换Str(N):转换N为字符串。例如:Str(135.78)的值是“└┘135.78”Val(C):转换C为数值型数据,转换中遇上第一个不能识别为数值的字符时停止,空格等可识别。

例如:Val(“10└┘24”)的值是1024,Val(“10or24”)的值是10。Asc(C):转换C为ASCII码值。例如:Asc(“A”)的值是65。Chr(N):转换N为字符串。例如:Chr(65)的值是“A”。Oct(N):转换十进制的N为八进制的数值。例如:Oct(8)的值是10。Hex(N):转换十进制的N为十六进制的数值。例如:Hex(15)的值是F。43例使用转换函数的示例

Priva

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论