




已阅读5页,还剩60页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
VisualBasic6.0语言基础,计算机学院何智涛,VB第2-3讲,基本主题,编码基础数据类型变量与声明分支、循环和控制数组过程,函数和调用方式,编码基础,编码基础,单行语句分成多行,使用续行符“_”。将多个语句合并到同一行上,使用“:”来分隔。一行允许有255个字符在代码中添加注释使用西文单引号“”来标注一行;使用“视图工具栏编辑”中的“设置/解除注释块”功能来标注一块注释或取消。,编码基础,VisualBasic的命名约定它们必须以字母开头。(也可以用中文)它们不可以包含嵌入的句号或者类型声明字符(规定数据类型的特殊字符“”,“$”)。它们不能超过255个字符。控件、窗体、类和模块的名字不能超过40个字符。*VB中汉字和西文字符都算作一个字,占两个字节。它们不能和受到限制的关键字同名。包括预定义语句(比如If和Loop)、函数(比如Len和Abs)和操作符(比如Or和Mod)。,可用关键字命名的特例,窗体和控件可以和受到限制的关键字同名。例如,可以将某个控件命名为Loop。但引用方法是特殊的。Loop.Visible=True出错使用限定方法或加方括号MyForm.Loop.Visible=True用窗体名将其限定Loop.Visible=True方括号起了作用,数据类型,数据类型,Numeric类型:Integer,Long,Single,Double,Currency。Date类型:公元100/1/19999/12/31,0:00:00-23:59:59。Boolean类型:True/False,-1/0,非0和0String类型:0-65535个字符,“”,“”Object类型:用于引用程序中的对象Variant类型:,Date数据类型,Date类型表示方法表示法:用括起来的、字面上可被看作时间和日期的字符1Jan,971998-5-1212:30:00PM#数字表示法:整数代表日期,小数代表时间范围从公元100年1月1日到9999年12月31日0代表1900年1月1日0:00AM-2.5代表了1899年12月28日12:00:00,Variant类型,变体类型:智能类型,可指代任何未定义的变量。特殊值:Empty(空):未赋值。Null(无效):数据不合法。Error(出错):过程中出现一个错误条件。Nothing(无指向):没有指向任何确定的对象。VarType()用来检测当前的变体变量中的数据类型。,自定义类型,使用Type可以来定义自定义类型Type自定义类型名元素名(下标)As类型名EndTypeDim变量名As自定义类型名注意:自定义类型必须在标准模块中定义,默认为Public自定义类型元素可以为字符串类型,但必须定长注意定义合理的自定义类型名称,以免造成与实际变量名的混淆,自定义类型举例,TypeStudTypeintNoasIntegerstrNameasString*20strSexasString*1SngMark(1to4)asSinglesngTotalasSingleEndTypeDimStudentasStudTypeSNo=3012Student.SngMark(4)=89.5,变量与声明,变量与声明,显式声明DimxDimxasintegerDimxasinteger,yasinteger隐式声明(均为Variant类型)Temp=Dialog1.Text1.Caption声明强制手段,在模块文件的顶部填入OptionExplicit将强制用户对所有变量的显式声明常量声明:ConstPI3.14159系统常量vbNormal=0,便于程序的阅读和理解,运算符,算术“+”,“-”,“*”,“/”,“”【整除】,Mod字符串“&”:在进行连接前均强制转为字符型“+”:要求两侧均为字符类型关系“”,“”,“”,“”,“Like”(比较字符串模式),“Is”(比较对象引用)操作数为数值,按大小操作数为字符型,按字符的ASCII码值从左到右依次比较逻辑Not,And,Or,Xor,Eqv系统将以数值的二进制值逐位进行逻辑运算,表达式,书写规则乘号不能省略a*bOK!ab?括号成对出现,均使用圆括号“()”不同数据类型的转换操作数的精度不一致,结果使用精度高的类型Integer关系逻辑(Var*5=100),基本语句,赋值Letx=5交互输入:InputBox(提示,标题,缺省,X坐标,Y坐标)StrA=InputBox(“请输入”,“输入框”,“A”)输出:函数:变量%=MsgBox(提示,按钮,标题)过程:MsgBox提示,按钮,标题,分支与选择,分支选择,一条分支执行后,其他分支将不被执行IfThenIfThenElseIf.ThenElseIfSelectCase,IfThen(单分支),IfconditionThenstatementIfx0.00001e=e+t累加和i=i+1循环次数n=n*i连乘积t=1/nLoopPrint,计算自然对数e的近似值,要求误差小于0.00001,其计算公式为e=1+1/1!+1/2!+分析:在不断循环的基础上进行累加和连乘。用单项值的精度来控制循环的结束。有几个循环呢?循环计数值如何用于计算?,ForNext,For循环变量=初值to终值Step步长语句块Next循环变量注意:初值只被赋值一次。循环变量超过终值将终止循环。循环终止后循环变量的值保持不变,注意处理。,ForNext循环嵌套举例,乘法九九表打印。用循环变量作为乘数和被乘数即可解决。用Picture.Print命令即可逐行打印结果2.上、下三角九九表打印?3.注意内外循环变量不能同名,并列循环可以同名内外循环不能交叉,可以嵌套,ForEach.Next,ForEach.Next循环对数组或对象集合中的每一个元素重复一组语句,而不是重复语句一定的次数。如果不知道一个集合有多少元素,该循环方式将非常有用。ForEach.Next循环的语法如下:ForEachelementIngroupstatementsNextelement,ForEachNext举例,SubListTableDefs()将指定Mdb文件中的表名添加到链表List1中DimobjDbAsDatabaseDimMyTableDefasTableDefSetobjDb=OpenDatabase(c:vbbiblio.mdb,True,False)ForEachMyTableDefInobjDb.TableDefs()List1.AddItemMyTableDef.NameNextMyTableDefEndSubMicrosoftExcel电子表格文件处理,使用ForEachNext的限制,对集合,element只能是Variant变量,或一般的Object变量对数组,element只能是Variant变量。ForEach.Next不能与用户自定义类型的数组一起使用,因为Variant不可能包含用户自定义类型。,使用循环控制结构,在VB中,控制结构的嵌套层数没有限制。为使判定结构和循环结构更具可读性,使用缩排方式。下面的过程要把打印机和屏幕共有的字体名全部打印出来:PrivateSubForm_Click()DimSFont,PFontForEachSFontInScreen.Fonts()ForEachPFontInPrinter.Fonts()IfSFont=PFontThenPrintSFontEndIfNextPFontNextSFontEndSub注意,第一个Next关闭了内层的For循环,而最后一个For关闭了外层的For循环。同样,在嵌套的If语句中,EndIf语句自动与最靠近的前一个If语句配对。,控制,Goto标号若需退出循环和过程(当需要达到的目的已经达到时,如循环查找字符)ExitForExitdoExitSubExitFunctionEnd语句End,EndSubEndif,EndSelectStop语句设置断点!,控制举例错误收集,SubExampleOnErrorGotoErrHandleSetx=Object可能会引发运行时错误ExitSub程序在此处结束,以免进入错误处理段落ErrHandle:错误记录登记与处理ResumeNextEndSub,控制举例ExitFor/ExitSub,PrivateSubForm_Click()DimSFont,PFontForEachSFontInScreen.Fonts()ForEachPFontInPrinter.Fonts()IfSFont=PFontThenPrintSfontExitFor退出内圈循环ExitSub退出当前过程EndIfNextPFontNextSFontEndSub,数组,数组,数组并不是一种数据类型,而是一组相同类型的变量的集合。数组常和循环语句配合使用,来处理逻辑上相关的一批数据。数组必须先声明后使用,分为静态和动态数组两类。Dim数组名(下标1,下标2)As类型下标必须为常数,不可为表达式和变量;下标形式为“下界to上界”,范围为-3276832767;通常可省略下界,下界缺省为0;VB中可声明最多60维的数组。,静态数组,建立公用数组,在模块的声明段用Public语句声明数组。建立模块级数组,在模块的声明段用Private语句声明数组。建立局部数组,在过程中用Dim语句声明数组。PublicCounters(14)AsIntegerPrivateCounters(14)AsIntegerDimArray1(0to3,0to4)asIntegerOptionBase的使用OptionBase1窗体层和模块层中声明静态数组举例筛选法求素数!,包含其他数组的数组,建立Variant数据类型数组,将整数和字符串数组放置其中:DimcountersA(5)AsInteger数组countersA赋值DimcountersB(5)AsString数组countersB赋值DimarrX(2)AsVariantarrX(1)=countersA()将countersA的内容给arrX(1)arrX(2)=countersB()将countersB的内容给arrX(2),数组的基本操作(1),数组元素赋值利用循环结构Fori=1to10A(i)=iNexti利用Array函数Dimaasvairant,basvarianta=array(1,2,3,4,5)b=array(“abc”,”r”,”78”)*使用Array函数时,被赋值数组必须是Vairant类型的且不能定义下标!,数组的基本操作(2),输出利用循环结构进行依次输出Fori=1to10Printa(i)Nexti数组赋值数组直接对数组的赋值Dima()asvariantDimaasvariant也可以Dimb()asvariantDimbasvariant也可以a=array(1,2,3,4,5)b=a将a数组中所有元素值对应地赋值给b*注意被赋值数组类型必须是Vairant的,动态数组,动态地指定数组的大小。DimsArray()asIntegerDimxasintegerSubForm_Load()ReDimsArray(4,8)ReDimsArray(4,8,9)ReDimsArray(x,x+5)EndSub,使用动态数组的注意事项,在Redim之前不能声明数组维数。否则将不能重定义。ReDim语句只能出现在过程中,是一个可执行语句。Redim语句中的下标可以是有确定值的变量。经过ReDim,数组的维数还能动态地改变。Redim后数组的内容可能丢失。,动态定义中保留数据,使用具有Preserve关键字的ReDim语句。ReDimPreserveDynArray(UBound(DynArray)+1)只能改变多维数组中最后一维的上界;如果改变了其它维或最后一维的下界,那么运行时就会出错。ReDimPreserveMatrix(10,UBound(Matrix,2)+1)ReDimPreserveMatrix(UBound(Matrix,1)+1,10)动态数组演示,控件数组的使用,概念:是由一组相同类型的控件组成。公用一个控件名称,每个控件有一个唯一的索引号(index)共享一个事件过程。创建方法设计时创建创建控件,拷贝粘贴即可创建,具体位置由设计者直接指定运行时创建设计时创建一个控件,设置Index为0在运行时使用Load方法来加载若干个控件通过Left,Top属性来确定其位置,过程与函数,过程和函数的定义,自定义过程staticPublic|PrivateSub子过程名(参数列表)局部变量或常数定义语句ExitSub语句EndSub自定义函数staticPublic|PrivateFunction函数名(参数列表)As类型局部变量或常数定义语句函数名返回值ExitFunction语句函数名返回值EndSub,过程和函数的定义,过程名命名原则与变量相同,注意不能与关键字,API函数名和同级变量名相同As类型若函数定义中省略,则为Variant类型在函数体内至少要有一次对函数名的赋值参数列表形式ByVal变量名()As类型,ByVal变量名()As类型形参定义函数和子过程时可以没有形参,但函数在没有参数定义时圆括号不能被省略,过程和函数的调用,子过程调用子过程名参数列表Call子过程名(参数列表)CallMyProc(FirstArgument,SecondArgument)MyProcFirstArgument,SecondArgument函数过程调用变量名函数名(参数列表)X=AnotherFunction(ToDec)注意:实参的个数、类型与形参的一致外部调用,注意添加模块名称CallForm1.SomeSub(arguments)PrintModule2.FunctionName(arguments),参数传递方式,传值:传递的只是变量的副本。变动只影响副本而不会影响变量本身。SubPostAccounts(ByValintAcctNumasInteger)传址:使过程用变量的内存地址去访问实际变量的内容。DimintXAsIntegerintX=12*3Foo(intX)注意:为降低过程间耦合度,建议使用传值方式传址方式下对应的实参不能为表达式和常数,数组作为参数传递,数组通过传地址方式进行传递在形参和实参列表中放入数组名,须忽略维数的定义,但需保留“()”。在过程调用中实际使用数组时可用Lbound和Ubound来确定数组上下界。,数组参数举例,FunctionTemp(InterA()asinteger)Fori=Lbound(InterA)toUbound(InterA)NextiEndFunctionDima(5)asIntegerDimT1asintegerT1=temp(a(),使用不定数量的参数,过程调用中的参数个数也可以不等于过程说明的参数个数。可用ParamArray关键字指明,过程将接受任意个数的参数。于是可以这样来编写计算总和的Sum函数:DimxAsIntegerDimyAsIntegerDimintSumAsIntegerSubSum(ParamArrayintNums()ForEachxInintNumsy=y+xNextxintSum=yEndSubPrivateSubCommand1_Click()Sum1,3,5,7,8List1.AddItemintSumEnd
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 【正版授权】 ISO/IEC 23009-9:2025 EN Information technology - Dynamic adaptive streaming over HTTP (DASH) - Part 9: Redundant encoding and packaging for segmented live media (REaP)
- 【正版授权】 ISO 16000-43:2025 EN Indoor air - Part 43: Standard method for assessing the reduction rate of culturable airborne fungi by air purifiers using a test chamber
- 【正版授权】 ISO 14622:2025 EN Space systems - Structural design - Loads and induced environment
- 【正版授权】 ISO 14617-2:2025 EN Graphical symbols for diagrams - Part 2: Graphical symbols
- 水文统计考试题及答案
- picc专科护士考试试题及答案
- 中信长沙分行面试题及答案
- 教师副业面试题及答案
- 戒毒遴选面试题及答案
- 阅读危机面试题及答案
- 普惠金融业务讲座
- 2025年低压电工证考试题及参考答案
- 省政府顾问管理办法
- 医院药剂科运用PDCA循环降低拆零药品管理不合格率品管圈
- 2025年华住储备干部考试题库
- 枫桥经验培训课件
- 专题:阅读理解 六年级英语下册期末复习考点培优专项鲁教版(五四学制)(含答案解析)
- 信息部年度总结汇报
- 通风设施构筑工安全知识题库
- 堆草场消防管理制度
- 巡检员质量培训
评论
0/150
提交评论