vb第3章 语言基础课件_第1页
vb第3章 语言基础课件_第2页
vb第3章 语言基础课件_第3页
vb第3章 语言基础课件_第4页
vb第3章 语言基础课件_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

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

文档简介

第三章VB语言基础3/24/20231本章的目标:掌握编码基本规则掌握标准数据类型和自定义数据类型掌握变量和常量的含义及声明方法掌握常见内部函数及其用法掌握运算符和表达式的书写及应用掌握基本语句3/24/202323.1VB编码基本规则1.注释语句规则

注释所起的作用是让某些语句不参与系统程序的编译。在VB中,注释语句有两种方式:1)用“Rem”关键字做开头; 2)用“'”号开头。2.编码字符大小写不区分在进行VB编码时,所用英文字符大小写不区分,在运行过程中系统自动给以转换,其转换规则如下:(1)VB中的关键字,首字母被转换为大写,其余字母被转换为小写,且代码颜色一般为蓝色。(2)用户自定义的变量、过程名,VB以第一次定义为准,以后输入的自动向首次定义的转换。3/24/202333.2数据类型数据是信息的物理表示形式,是程序处理的对象。在使用计算机来处理数据时,会遇到各种不同类型的数据。例如,一个人的姓名是由一串文本(字符)组成,成绩、年龄和体重都是一个数值,而是否大学毕业则是一个逻辑值,等等。为了更好地处理各种各样的数据,VB定义了多种数据类型。在计算机中确定数据类型的作用有两个:一是在生成数据时,它指出应为数据分配多大的存储空间;二是它规定了数据所能进行的操作。3/24/20235使用“Type”语句来定义。其格式为:Type自定义数据类型名 元素名1[(下标)]As类型名 元素名2[(下标)]As类型名 …… 元素名n[(下标)]As类型名EndType3.2.2用户自定义的数据类型3/24/20237说明:元素名:自定义类型中的一个成员。下标:如果不省略表示的是数组。类型名:为3.2.1中所讲的标准数据类型。一旦定义好了类型,就可以在变量的声明时使用该类型。使用的方式是:Dim变量名AS自定义数据类型名变量名.元素名X[(下标)]注意:自定义类型须在标准模块(.bas)中定义,默认类型为Public。自定义类型中的元素类型可以是字符串,但必须是定长的字符串。例3.2

自定义数据类型的定义和应用。3/24/20238变量:是在程序运行中其值可以发生变化的量。在使用变量前先声明变量名和类型,从而决定系统为它分配的存储单元(地址和大小)。在VB中变量的声明分为显式声明和隐式声明两种:3.3.2变量声明3/24/2023101、显式声明 显式声明就是对变量先声明后使用,有以下几种形式: Dim变量名[As类型] Private变量名[As类型] Public变量名[As类型] Static变量名[As类型]‘来声明静态变量注意:静态变量声明不能放在通用声明部分中声明。[As类型]:表示该部分可省略。缺省“As类型”部分,则所创建的变量默认为变体类型。[As类型]可用在变量名后加类型符来表示,此时变量名与类型符之间不能有空格。例如:DimintAasinteger,intBasinteger,dblCasdouble等价于:DimintA%,intB%,dblC#3/24/2023112、隐式声明 在VB中,隐式声明指变量未进行声明而直接使用,所有的隐式声明的变量都是Variant类型的。PrivateSubCommand1_Click()a=50’变量a未经声明而直接引用PrintaEndSub

使用隐式声明易出错,在VB中提供了强制声明的方法,即在窗体或模块的通用声明部分中加上一条如下语句: OptionExplicit 这个语句使编译器要求检查每个变量的声明,如果用的变量没有声明,则发出一个错误信息。3/24/202313有时在实际的应用中,需要将变量的数据类型转换为另一种数据类型,这样变量的数据类型就发生了改变。表3.2列出了进行变量类型强制转换的函数。函数返回类型例子例子返回值CBoolBooleanCbool(23)TrueCByteByteCbyte(23)23CIntIntegerCint(200070.10024)200070CLngLong略CDblDouble略CSngSingle略CStrStringCStr(2006011100.11)2006011100.11CDateDateCdate(“2007-10-17”)2007-10-17CCurCurrencyCcur(233.33345)233.3334CVarVariant略CVErrErrorCVErr(100)错误100表3.2数据类型强制转换函数3/24/2023141、用户自定义常量

用Const语句来自定义常量,其格式为:[Public︱Private]Const<常量名>[As<数据类型>]=表达式或:Const常量名=表达式

[例]:Constpi=3.1415926PrivateConstconName="Beijing(String)"PublicConstmaxASInteger=50

3/24/202316定义符号常量时,也可以在常量名后面加上类型说明符,例如:

Const

pi#=3.1415926 ‘定义pi为双精度型

Const

g!=9.8 ‘定义g为单精度型注意:

一般可以把常量的定义放在窗体的通用过程当中。3/24/2023173.4常用内部函数函数名功能说明举例结果Mid$(C,N1,N2)从字符串C的N1位开始向右载取N2个字符Mid$(“ABCDEFG”,2,4)“BCDE”Left$(C,N)截取字符串C左边N个字符Left$(“abcde”,3)“abc”Right$(C,N)截取字符串C右边N个字符Right$(“abcde”,3)“cde”String$(N,C)产生由C串中第一个字符组成的N个字符String$(2,“ABCD”)“AA”Len(C)字符串C的长度Len(“ABCDE”)5Ltrim$(C)去掉字符串左边的空格Ltrim$(“abc”)“abc”Rtrim$(C)去掉字符串右边的空格Ltrim$(“abc”)“abc”Space$(N)产生N个空格Space(3)“

”InStr([N1,]C1,C2,[N])在C1中从N1开始找C2首次出现的位置,N=0区分大小写;N=1,不区分大小写InStr(2,“ABCDASF”,“A”)5StrComp(C1,C2,[N])字符串比较,C1大为1,C1小为-1,相等为0。N=0区分大小写,N=1不区分大小写StrComp("as","AS",0)1表3.4常用字符串函数表1.字符串函数及字符串编码3/24/202319字符串编码VB6.0中采用Unicode编码来存储和操作字符串,可是在Windows系统中用DBCS(DoubleByteCharacterSet)来存储和操作字符串。

Unicode编码是一种用两个字节表示一个字符的字符集.DBCS编码(DoubleByteCharacterSet)是在Windows系统中对字符采用的编码方式,是一套单字节与双字节的混合编码,其中西文与ASCII编码一样,使用单字节编码,东亚文字使用双字节编码。3/24/202320例3.3

建立包含一个窗体的工程,在Form_Click()中填写如下代码,运行结果见图3.2。Dims1AsString,s2AsStrings1="只要你努力,你一定可以学好VISUALBASIC"PrintPrint"用Unicode编码时len(s1)=";Len(s1)Print"用Unicode编码时lenb(s1)=";LenB(s1)PrintPrint"转换后:"Prints2=StrConv(s1,vbFromUnicode)'将s1进行用Unicode编码字符串转换并赋值给s2Print"用DBCS编码时len(s2)=";Len(s2)Print"用DBCS编码时lenB(s2)=";LenB(s2)3/24/2023212.转换函数转换函数是将各种不同数据类型的值相互之间进行转换的函数。函数名功能说明举例结果Val(C)数字字符串转换为数值Val(“123ABC”)123Asc(C)字符转换成ASCII码值Asc(“a”)97Chr$(N)ASCII码值转换成字符Chr$(65)“A”Lcase$(C)大写转换成小写Lcase$(“ABC”)“abc”Ucase$(C)小写转换成大写Ucase$(“abc”)“ABC”Fix(N)取整数部分Fix(-3.6)-3Hex[$](N)十进制转换成十六进制Hex(100)64Int(N)取不大于N的最大整数Int(-3.6)Int(3.6)-43Oct[$](N)十进制转换成八进制Oct$(100)“144”Str$(N)数值转换成字符串Str$(123.45)“123.45”表3.5常用转换函数表3/24/2023223.数学函数表3.6常用数学函数表函数名功能说明举例结果Abs(n)取绝对值Abs(-5.6)5.6Cos(n)余弦函数Cos(0)1Sin(n)正弦函数Sin(0)0Atn(n)反正切函数Atn(0)0Tan(n)正切函数Tan(0)0Exp(n)e为底的指数函数eNExp(6)403.428793Log(n)e为底的自然对数Log(8)2.07944Rnd[(n)]产生随机数Rnd取值区间[0,1)Sgn(n)符号函数:n>0,sgn(n)=+1,n<0,sgn(n)=-1,n=0,sgn(n)=0Sgn(-6)-1Sqr(n)平方根Sqr(16)43/24/202324注意:(1)三角函数的参数n以弧度表示。

1度=π/180=3.14159/180(弧度)如:求的正弦值,应写为Sin(67*3.14156/180)(2)Sqr的参数必须大于或者等于0。(3)随机函数Rnd可以模拟自然界中各种随机现象。它可产生一个

[0,1)的随机数;

使用Randomize语句可以为随机数生成器指定不同的初值或者称为随机数序列的“种子”,这样可以得到不同的随机数序列。Rnd通常与Int函数配合使用

生成[a,b]区间范围内的随机整数,可以采用

Int((b-a+1)*Rnd)+a例如:Int(4*Rnd+1)可以产生[1,4]之间的随机整数;Int(rnd*28)+10,则产生[10,37]之间的随机数。例3.4

产生1个随机二位整数,在文本框中输出。PrivateSubCommand1_Click()RandomizeText1=Int(Rnd*90+10)EndSub3/24/2023254.日期函数表3.7常用日期函数表函数名功能说明例结果Day(C|N)返回日期代号(1~31)Day(“07,05,26”)6MonthName(N)返回月份代号(1~12)MonthName(5)五月Now返回月份名Now2007/11/1421:09:26Time[$][()]返回系统日期和时间Time21:09:50WeekDay(C|N)返回星期代号(1~7)WeekDay(“07,11,14”)4即星期三WeekDayName(N)返回星期代号所转换为的星期名称WeekDayName(6)星期五Year(C|N)返回年代号(1753~2078)Year(1361)1903DateDiff函数形式:DateDiff(要间隔日期形式,增减量,要增减的日期变量)作用:两个指定的日期按日期形式求相差的日期。要间隔的日期形式见表3.8。DateAdd增减日期函数形式:DateAdd(要增减日期形式,增减量,要增减的日期变量)作用:对要增减的日期变量按日期形式做增减。要间隔日期形式见表3.8。例如:DateAdd(“WW”,2,#11/14/2007#)返回值是在指定的日期上加2周,所以函数的结果为:#11/28/2007#。3/24/202326表3.8日期形式表注意:y、d、w在DateAdd函数中作用相同。日期形式snhwwwdymqyyyy意义秒分时星期一周的日数日一年的天数月季年5.格式输出函数格式输出函数用Format函数来实现,其格式如下:Format(表达式[,格式字符串])其中,表达式是要格式化的数值、日期和字符串类型表达式。格式字符串是表示按其指定的格式输出表达式的值。格式字符串有三类:数值格式、日期格式和字符串格式。格式字符串要加引号。

3/24/202327

符号“0”或“#”二者的比较:

同:若要显示数值表达式的整数部分位数多于格式字符串的位数,按实际数值显示;若小数部分的位数多于格式字符串的位数,按四舍五入显示。

异:“0”按其规定的位数显示,“#”对于整数前的0或小数后的0不显示。

例3.5

格式符应用举例。运行界面如图3.4所示。PrivateSubCommand1_Click()a=789.45678b=56PrintFormat(a,"0.00"),Format(b,"-0.00")PrintFormat(a,"#.##"),Format(b,"-#.##")EndSub3/24/202329日期和时间格式化:将日期类型表达式的值和或数值表达式的值按指定的格式输出

表3.10常用日期和时间格式符表符号作用符号作用m显示月份(1~12),个位前不加0mm显示月份(01~12),个位前加0mmm显示月份缩写(Jan~Dec)mmmm月份全名(January~December)d显示日期(1-31),个位前不加0dd显示日期(01~31),个位前加0ddd显示星期缩写(Sun-Sat)dddd显示星期全名(Sunday~Saturday)dddd显示完整日期(yy/mm/dd)ddddd显示完整长日期(yyyy年m月d日)h显示小时(0~23),个位数前不加0hh显示小时(00~23),个位前加0m在h后显示分(0~59),个位前不加0mm在h后显示分(00~59),个位前加0s显示秒(0~59),个位前不加0ss显示秒(00~59),个位前加0y显示一年中的天(1~366)yy两位数显示年份(00~99)yyyy四位数显示年份(0100~9999)q季度数(1~4)w星期为数字(1~7,1是星期日)ww一年中的星期数(1~53)tttt显示完整时间(小时、分和秒),默认的格式为hh:mm:ssAM/PMam/pm12小时的时钟,午前为AM或am,午后为PM或pmA/P,a/p12小时的时钟,中午前A或a,中午后P或p3/24/202330例3.6

应用Format()函数显示有关的日期和时间。运行界面如图3.5所示。建立相应的对象(一个窗体)并编写代码。PrivateSubForm_Click()FontSize=15MyTime=#10:21:30PM#MyDate=#8/21/2007#PrintTab(2);Format(Date,"dddd,mmmm,dd,yyyy")'显示系统当前日期PrintTab(2);Format(Now,"yyyy年m月dd日hh:mm")'显示系统当前日期和时间PrintFormatDateTime(Now)'vb6.0新提供的函数PrintTab(2);Format(MyDate,"m/d/yy")PrintTab(2);Format(MyDate,"mmmm-yy")PrintTab(2);Format(MyTime,"h-m-sAM/PM")PrintTab(2);Format(MyTime,"hh:mm:ssA/P")EndSub图3.Format函数示例3/24/202331字符串格式化是将字符串按指定的格式进行如大小写转换显示等

表3.11常用字符串格式符及举例符号作用举例结果@字符由右向左填充,当实际字符位数小于符号位数的时候,字符前面要加空格做补充。Format("DDE","@@@@@")DDE&字符由右向左填充,当实际字符位数小于符号位数的时候,字符前面不加空格做补充。Format("DDE","&&&&&")DDE<强制小写,实现所有字符按小写的格式显示。Format(”NIkE”,”<@@@@”)nike>强制大写,实现所有字符按大写的格式显示。Format(”niKe”,”>@@@@”)NIKE!强制由左而右填充字符占位符。默认值是由右而左填充字符占位符。Format(”DDE”,”!@@@@”)DDE变换变量类型函数:这里所提到的变换变量类型函数是指实现不同数据类型间变量类型的强制转换3/24/202332Shell函数为了调用各种应用程序,VB提供了一个函数来实现,即通过shell函数来实现。Shell函数格式如下:Shell(命令字符串[,窗口类型])对Shell函数的说明:命令字符串:要执行的应用程序名,包括路径,应用程序必须是可执行文件(即程序扩展名为.COM、.EXE、.BAT)。其中命令字符串路径有两种表达方式:1、用绝对路径;2、用start方式。窗口类型:表示执行应用程序的窗口大小,一般取1。函数成功调用的返回值为一个任务标识ID,它是运行程序的唯一标识。图3.6shell函数调用录音机程序例3.7应用shell函数调用Windows系统自带的录音机应用程序。用两种方式来实现,代码如下: 方法一:i=Shell("c:\windows\system32\ndrec32.exe",1) 方法二:j=Shell(start&"ndrec32.exe",1)运行结果如图3.6所示.。3/24/2023333.5运算符

在VB中,运算符可分为算术运算符、比较运算符、逻辑运算符和字符串运算符四类。1.算术运算符

(优先顺序从高到低)运算含义运算符优先级别例子结果乘方^14^216取负值-2-4-4乘*34*416除/310/42.5整除\410\42取余数Mod510mod42加+610+414减-610-46表3.12算术运算符3/24/202334注意:30-True‘结果是31,逻辑量True转为数值-1,False转为0False+10+”4”‘结果是147.7\4等于2‘整除之前先将小数部分四舍五入17/5等于3.420Mod5等于0,1Mod3等于13/24/202335运算符及其优先级:^(乘方)→-(求负)→*/→\→Mod→+-示例:5*x^10+x/6–x^(1/3)

15Mod63/24/202336

根据运算符的优先级,该表达式的计算步骤如下:①计算乘除,得到:2+12.8Mod17.52\2.16②计算整除(\),得到:2+12.8Mod9(17.52和2.16两数先四舍五入为18和2)③求余运算(Mod),得到:2+4(12.8先四舍五入为13)。④求和运算,得到表达式的最后结果为:6例计算2+3.2*4Mod17.52\4.32/2的值3/24/2023371+2*14Mod17\6/2=?求出下列表达式的值想一想1.按运算符的优先级分成若干运算步骤

先乘除,再整除\和求Mod,后加运算2.根据运算符的运算功能求出各步骤的结果思考题

1+28Mod5结果为43/24/2023382.比较运算符比较运算是比较两个对象的大小或者匹配情况,其中对象可以是字符、数字等。比较运算符是双目运算符,比较的结果有True和False两种表3.13VB比较运算符含义运算符例子结果不等于<>"ABW"<>"ABV"True等于="AE"="ABV"False大于>"AE">"ABV"True大于等于>="ABW">="ABV"True小于<56<89True小于等于<="67"<="67"True字符串匹配Like"ABWGHJ“like"BW"True对象引用比较Is3/24/202339在比较运算中,比较规则如下: 两个操作对象是数值型,按其大小进行比较; 两个操作对象是字符型,按字符的ASCII码值从左到右一一进行比较,即首先比较两个字符串的第1个字符,其中ASCII码值大的字符串大,如果第1个字符相同,则比较第2个字符,以此类推,直到出现不同字符为止,如果全等则两个字符相等。 两个操作对象是汉字,先将汉字转换为相对应的汉语拼音字符,然后再进行比较。如“男”和“女”比较,首先转换为“nan”和“nv”,因为第一个字符相同,因此比较第二个字符,而“a”小于“v”,因此“男”小于“女”。 在VB6.0中,增加了“Like”运算符,与通配符“?”、“*”、“#”、[范围]、[!范围]结合使用,在SQL(结构化查询语句:StructureQueryLanguage)语句中经常使用,用于模糊查询。新增的“Is”关系运算符用于对两个对象变量引用进行比较3/24/2023403.逻辑运算符(优先顺序从高到低)逻辑运算是对判断的逻辑值True和False进行操作的运算,是将操作数进行逻辑运算,结果依然是逻辑型数值。逻辑运算符除Not是单目运算符外,其余都是双目运算符。表3.14VB中逻辑运算符含义运算符优先级说明例结果取反Not1当操作数是假时,结果为真NotFT与And2两个操作数均为真时,结果为真TandFTandTFT或Or3两个操作数中有一个为真时,结果为真TorFForFTF等价Eqv4两个操作数相同时,结果为真TEqvFFEqvFFT异或Xor3两个操作数一真一假时,结果为真TXorFTXorTTF蕴含Imp5第一个操作数为真,第二个操作数为假,结果才为假,其余为真TImpFTImpTFT3/24/2023414.字符串连接运算符+&举例结果举例结果“100”+123223“100”&123“100123”“100”+“123”“100123”“100”&“123”“100123”“abc”+123出错“abc”&“123”“abc123”“abc”&123“abc123”使用运算符“&”时,在变量和运算符“&”之间需加一个空格。注意:使用运算符“+”,得到的不一定为字符串。3/24/202342“+”的运算规则:连接运算符两边的运算对象应为字符型;若均为数值型则进行算术加运算;若一个为字符型,另一个为数值型则出错。“&”的运算规则:不论连接运算符两边的运算对象是字符型还是数值型,进行连接时系统先将运算对象转换成字符型,然后再连接。3/24/2023433.6表达式

VisualBasic表达式由常数、变量、函数、运算符以及圆括号按一定的规则组成。3/24/2023443.6.1表达式的书写规则 例如:已知数学表达式写成VB表达式为:sin(sqr((5*a+b)-c))/(a*b)^8(1)运算符不能相邻。(2)圆括号要成对。(3)乘号为*,不能省略。(4)表达式从左到右并排书写,不能出现上下标。(5)要注意各种运算符的优先级别,可根据需要适当添加括号()改变运算顺序。3/24/2023453.6.2表达式中不同数据类型的转换在算术运算中,如果操作数具有不同的数据精度,则VB规定运算结果的数据类型采用精度高的数据类型。即:

Integer<Long<Single<Double<Currency其实数据类型的转化就好比在现实生活中容器对象的相互包容(因为数据类型精度高的数据存储需要更大的空间,见表3.1的各种类型的数据占字节数),大的容器对象可以放下小的容器对象,而小的则无法包容大的容器对象(否则会失真)。3.6.3表达式中各个运算符的优先级运算符的优先级如下:

算术运算符>字符运算符>关系运算符>逻辑运算符当用户在对多种运算符并存的表达式中改变运算符号的顺序时,可以增加圆括号来改变优先级或使表达式更清晰。3/24/2023463.7基本约定和语句3.7.1命令格式中常见符号约定 。符号含义[]为可选参数表示符。方括号中的内容选与不选由用户根据具体情况决定,且都不影响语句本身的功能。如省略,则为缺省值。|为多个中取一表示符,含义为“或者选择”。竖线分隔多个选择项,必须选择其中之一。{}包含多中取一的各项。,…表示同类项目的重复出现。…表示省略了在当时叙述中不涉及的部分。3.7.2基本语句1.赋值语句 在前面的例子中,已经在代码中使用了一个最基本的命令语句——赋值语句,比如对属性的赋值,赋值语句是将指定的值赋给某个变量或对象的某个属性。表3.15VB常见约定的符号及含义3/24/202347赋值语句的一般格式为:[Let]名称=表达式说明: Let是可选项,完成赋值功能只需“=”(赋值号); “名称”是变量或变量属性的名称; “表达式”计算所得的值将赋给“=”左边各个变量或对象的属性,但必须注意:赋值号两边的数据类型必须一致,否则会出现“类型不匹配”错误。 赋值号不是数学上的判断等号。“a=5”应读作“将数值5赋给变量a”或是“使变量a的值等于5”。 赋值语句是先计算“表达式”的值,然后再赋值。初学者一定要注意赋值语句的赋值方向问题,它时将赋值号(“=”)右边的内容赋值给赋值号左边的变量。例3.8交换两变量中的数据。DimaAsIntegerDimbAsIntegerDimcAsIntegerPrivateSubCommand1_Click()Print"交换前:"&a,bEndSub图3-7两数交换运行结果P

温馨提示

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

评论

0/150

提交评论