




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
西华大学陈坤VisualBasic
程序设计教程第1页
目录l第一章VisualBasic程序设计概述l第二章简单VB程序设计l第三章VB基本语言l第四章VB常用控件与窗体l第五章文献l第六章图形操作l第七章面向对象编程第2页第一章
VisualBasic程序设计概述
1、概述2、运行环境、安装和启动3、集成开发环境第3页第二章
简单VB程序设计
1、程序设计办法发展2、对象概念3、建立简单应用程序4、窗体和基本控件5、工程管理及环境设置6、制作成安装盘7、使用帮助系统第4页
第三章
VisualBasic基本语言
1、编码基础2、数据类型3、变量与常量4、运算符和体现式5、基本语句6、数组7、过程8、常用算法举例9、程序调试第5页
第四章
常用控件与窗体
1、选择性控件:
单选钮和检查框、框架、列表框、组合框、滚动条2、时钟3、菜单设计4、对话框5、多重窗体6、高级控件7、鼠标器和键盘第6页第五章
文献
1、文献系统控件2、文献读写第7页
1、图形操作基础2、绘图属性3、图形控件4、图形办法5、应用
第六章VisualBasic图形操作第8页第七章
面向对象编程
1、类创建2、在程序中访问类3、系统对象4、文献系统对象模型第9页1、VB介绍
VisualBasic是Microsoft公司于1991年推出新一代高级程序设计语言。
VisualBasic是基于Basic可视化程序设计语言,它既继承了Basic所具有程序设计语言简单易用特点,又采取了面向对象、事件驱动编程机制。2、VB功能特点§1.1概述第10页1.2运行环境、安装和启动启动VisualBasic有下列几个办法:1、双击Windows桌面上VB快捷图标,可启动并进入VB环境。2、单击Windows“开始”按钮,在“程序”中选择VisualBasic。3、单击Windows“开始”按钮,在“开始”菜单中选择“运行”,输入VisualBasic。第11页1.3集成开发环境
启动VB后看到第一项内容就是“新建工程”对话框,这个对话框允许选择一种要创建项目类型,也能够选择打开一种已有项目。
设计环境:
l标题栏l菜单栏l工具栏l窗体(Form)窗口l属性(Properties)窗口l工程资源管理器(ProjectExplorer)窗口l代码(Code)窗口l立即(Immediate)窗口l窗体布局(FormLayout)窗口l对象浏览器(ObjectBrower)窗口l工具箱(ToolBox)窗口第12页标题栏(TitleBar)
用来显示窗口标题。控制框(ControlMenuBox)
控制窗口恢复、移动、大小、最小化、最大化、关闭与切换等工作。窗口大小控制键菜单栏(MenuBar)工具栏(ToolBar)第13页窗体窗口:
窗体窗口简称窗口,是对应于设计及运行应用程序时在屏幕出现一种窗口(显示区域),来显示程序代码或成果。在VB环境下设计Windows应用程序时,一般都是先在创建新窗体上利用VB提供工具箱中工具来设计顾客界面,如窗体控件等。第14页属性窗口(Properties):
属性窗口包括四个部分:1、对象列表框:可显示被选窗体所含对象列表。2、属性显示排列方式:字母序、分类序3、属性列表框:列出所选对象具有所有属性。4、属性含义说明:显示所选属性含义。激活属性窗口办法:1、单击属性窗口;2、单击菜单条上视图(View)选项,从中选择属性窗口,或按F4键;3、单击工具条上属性窗口按键。
第15页工程资源管理器(ProjectExplorer)窗口:窗口是由三个部分组成。
1、项目名:是由顾客在建立一种新项目所指定名称。若不指定,则系统自动给项目取默认名(Project1)。一种应用程序只能够有一种项目名,而一种项目则能够包括一种应用程序所有文献。
2、命令按钮:(1)“查看代码”按钮
(2)“查看对象”按钮(3)“切换文献夹”按钮
3、文献列表:显示该项目下所有文献。第16页VB文献类型:l窗体文献.frml标准模块文献.basl类模块文献.clsl项目文献.vbpl可执行文献.exe第17页代码(Code)窗口:用来进行程序设计窗口,打开该窗口办法:(1)用鼠标双击对象(2)用鼠标右键单击对象(3)从“视图”菜单中选择“代码窗口”命令。(4)在工程窗口中选择“查看代码”按钮。代码窗口主要内容:(1)对象列表框(2)过程列表框(3)代码框(4)过程查看按钮(5)全模块查看按钮第18页立即窗口:窗体布局窗口:对象浏览器窗口:工具箱窗口:
第19页2.1程序设计办法发展
1、早期程序设计:
2、构造化程序设计:三种基本构造:次序构造、选择构造和循环构造。程序设计标准:自顶向下、逐渐求精、模块化程序设计3、面向对象程序设计(OOP):
第20页1、对象和类:
对象(Object):是具有某些特性详细事物抽象。每个对象都具有描述其特性属性,及从属于它行为。VB对象有:窗体、控件和系统对象。
类:是创建对象实例模板,是同类对象集合与抽象,它包括所创建对象属性描述和行为特性定义。
★对象是类实例,它继承了类特性,也能够根据需要修改各自属性。
§2.2对象概念第21页2、对象建立和编辑:
对象建立:
●
单击工具箱内所需控件图标,然后在窗体合适位置按左键拖曳。
●
直接在工具箱双击所需控件图标。对象选定:
●
拖动鼠标,框选所需对象。
●
先选定一种对象,然后按下Ctrl(或Shift)键,逐一单击其他所需对象。对象复制或删除:对象命名:在程序代码中引用该对象时用到名称,即对象Name属性。第22页3、对象属性、事件和办法:每个对象都有属于自己:
l对象属性(Properties):即对象多种特性,如:Name、Color、Windowsstate、Text、Visible、Fontsize等;
l
对象事件(Event):对各类对象预先设置某些动作,如:Click、Dblclick、Load、Move等;
l
事件过程(EventProcedure):响应事件程序代码;
l
对象办法(Method):对象动作第23页对象属性(Properties)设置对象属性办法有两种:1、在设计模式下,直接在属性窗口中设置对象属性。2、在程序中用程序代码设置对象属性。格式:对象名称.属性名称=属性值ObjectName.Property=NewSetting例:SubForm_Click()FirstDisplay.FontSize=12FirstDisplay.Text=“欢迎使用VisualBasic!”EndSub
第24页事件、事件过程和事件驱动
事件(Event):是由VisualBasic预先定义好能被对象识别动作,如Click(单击)、DbClick(双击)、Load(系统装入)、MouseMove(鼠标移动)等。不一样对象所识别事件不一定相同。当事件由顾客激发(如Click)或由系统激发(如Load)时,对象就会对该事件作出响应(Respond)。事件过程(EventProcedure):当一种对象觉察到某一事件发生时(如Click,KeyPress,MouseDown…)响应事件程序代码段称为事件过程。一般一种对象能够识别一种以上事件,因此,一种对象就能够建立和使用一种以上事件过程来对顾客或系统事件作出对应反应。第25页事件过程格式:
Sub对象名_事件名()…(VB语句)EndSub
在事件过程内编写程序代码:
三种办法进入程序代码编辑窗口:(1)在VB设计窗口中双击与该事件过程关联对象;(2)在VB设计窗口中首先选择所需要对象,然后在菜单条上视图中选择代码窗口选项;(3)在VB设计窗口上直接在项目窗口中按查看代码键。第26页例:编写一种VB程序,可显示“Welcome!”。设计步骤:
1、启动VB,建立一种新窗体对象,它Cap-tion和Name值都是Form1(默认值);
2、在Form1中建立两个控件:文本框控件StringDisplay和命令键控件ComKey;3、设置控件对象属性;
4、在事件过程内加入程序代码:
SubComKey_Click()StringDisplay.FontSize=14StringDisplay.Text=“Welcome!”EndSub
5、运行程序第27页事件驱动程序设计:
程序执行先等候某个事件发生,然后再去执行处理此事件事件过程。
VB程序执行步骤:
(1)启动应用程序,装载和显示窗体;(2)窗体(或窗体上控件)等候事件发生;(3)事件发生时,执行对应事件过程;(4)反复执行(2)和(3)。
第28页对象办法(Method)办法:就是某些要求好用来显示对象、图画、移动、打印某些特殊过程和函数。办法使用格式为:
对象名.办法名[参数名表]
例:Picture1.Print“VisualBasic”Picture1.Movex,yPrint“您好!”
若省略了对象,表达为目前对象。
第29页设计VB应用程序一般步骤是:1、画出VB应用程序构造图;2、建立对象(窗体或控件);3、设置对象属性;4、建立事件过程;5、在事件过程中填写程序代码;6、保存和运行程序。§2.3建立简单应用程序第30页[例]:设计一程序,可分别在两文本框内键入任一数值,单击“Add”键,两数相加成果显示在中间标签框内,单击“Sub”键,两数相减成果显示在中间标签框内,单击“Clean”键,则清除三个控件内容。
设计步骤:
1、程序构造图:2、建立对象(窗体和控件)3、设置属性:第31页程序构造图窗体标签1文本框1标签2文本框2标签3标签4命令按钮1命令按钮2命令按钮3事件过程第32页对象属性表
名称标题文本边界(Name)(Caption)(Text)(BordStyle)Form1Form1Null(空白)2Label1Data10Label2Data20Label3Result0Label4Null1T1Null1T2Null1AddComAddCleanComCleanSubComSub第33页
4、建立事件与事件过程:(1)建立AddCom事件过程SubAddCom_Click()T1var=Val(T1.Text)T2var=Val(T2.Text)Total=T1var+T2varLabel4.Caption=Str$(Total)EndSub(2)建立SubCom事件过程SubSubCom_Click()T1var=Val(T1.Text)T2var=Val(T2.Text)第34页Subvar=T1var-T2varLabel4.Caption=Str$(Subvar)EndSub
(3)建立CleanCom事件过程SubCleanCom_Click()T1.Text=“”T2.Text=“”Label4.Caption=“”EndSub5、保存程序6、程序运行:编译运行模式、解释运行模式第35页1、对象基本属性:●Name名称属性●Caption标题属性●Height、Width、Top和Left属性●Enabled属性●Visible属性●Font属性●ForeColor前景色属性●BackColor背景色属性●Name名称属性●BackStyle背景样式属性●BorderStyle边框属性●Alignment属性●AutoSize属性●WordWrap属性●TabIndex属性●控件默认属性2.4窗体和基本控件第36页2、对象常用办法:●Print办法:在对象上输出信息。格式如下:[对象名.]Print[{Spc(n)/Tab(n)}][体现式列表][;/,]
对象:窗体(Form)、图形框(PictureBox)或打印机(Printer)
Spc(n)函数:用于在输出时插入n个空格。
Tab(n)函数:用于在输出体现式列表前向右移动n列。
体现式列表:要输出数值或字符串体现式,若省略,则输出一种空行。多种输出项之间用空格、逗号、分号分隔。
;(分号):紧凑输出格式,光标定位在上一种显示字符后。
,(逗号):标准输出格式,光标定位在下一种打印区开始位置处,打印区每隔14列开始。第37页
●Cls办法:清除运行时在窗体或图形框中显示文本或图形。格式:[对象名.]Cls注意:Cls办法只能清除运行时在窗体或图形框中显示文本和图形,不能清除窗体在设计时文本和图形。●Move办法:移动窗体或控件,并可变化其大小。格式如下:[对象名.]Move左边距离[,上边距离[,宽度[,高度]]]
对象:窗体及除时钟、菜单外所有控件,省略时为窗体。
左边距离、右边距离、宽度、高度:数值体现式,以twip为单位。假如对象是窗体,则以屏幕左边界和上边界为准,不然以窗体左边界和上边界为准。第38页3、窗体(Form)窗体是放置其他对象窗口。●属性:Name、Caption、Borderstyle、BackColor、ForeColor、FontName、FontSize、Visible、Picture等。●事件:Click、DblClick、Load。●办法:Cls、Print。●函数:LoadPicture、SavePicture。第39页4、标签(Label)标签是用来显示文本信息,其内容不可编辑。●属性:Name、Caption、BackColor、Visible、ForeColor、Alignment、BackStyle等。●事件:Change、Click、DblClick、LinkClose等。第40页5、文本框(TextBox)文本框是用来输入和显示文本信息。●属性:Name、BorderStyle、BackColor、ForeColor、Text、Visible、MaxLength、Multiline、PasswordChar、ScorollBar等。●事件:Change、KeyPress、LostFocus、GotFocus等。●办法:SetFocus。第41页6、命令按钮(CommandButton)命令按钮是作为一种命令控制对象。●属性:Name、Caption、Default、Cancel、Value等。●事件:Click、DragDrop、KeyDown、MouseMove等。第42页1、工程组成2、创建、打开和保存工程3、添加、删除和保存文献4、环境设置2.6制作成安装盘2.7使用帮助系统§2.5工程管理及环境设置第43页§3.1编码基础编码规则:
1、VB代码不辨别字母大小写
●VB关键字词首字母自动转换为大写,其他为小写;●顾客自定义变量、过程名自动转换成与初次定义一致。
2、语句书写自由
●多行语句写在同一行,用冒号(:)分隔;●一行语句可分为若干行书写,每行背面加续行符(空格和下划线“_”)3、在程序中能够使用注释语句REM(’)
4、保存行号和标号第44页3.2数据类型1、标准数据类型:数据类型关键字类型符前缀占字节数字节型Byte无byt1逻辑型Boolean无bln2整型Integer%int2长整型Long&lng4单精度型Single!sng4双精度型Double#dbl8货币型Currency@cur8日期型Date(Time)无dtm8字符型String$str与字符串长有关对象型Object无obj4变体型Variant无vnt根据需要分派第45页2、自定义类型:格式如下:Type自定义类型名元素名[(下标)]As类型名……[元素名[(下标)]As类型名]EndType元素名:表达自定义类型中一种组员下标:表达数组类型名:为标准类型(P56例)注意:●自定义类型必须在标准模块(.BAS)中定义,默以为Public;●自定义类型中元素类型若为字符串,必须是定长;●不要将自定义类型名与该类型变量名混同。第46页1、变量:
变量是程序运行过程中其值能够发生变化量。
变量申明:
●用Dim语句申明变量,格式如下:
Dim变量名[As类型名]例:DimxAsInteger:DimyAsString对于字符串变量,根据其寄存字符串长度是否固定有两种定义方式:
Dim字符串变量名AsStringDim字符串变量名AsString*字符数
3.3变量与常量注意:一种汉字与一种西文字符同样都算作一种字,占两个字节。第47页2、常量:
常量是在程序中寄存某些不变常数值量。●顾客申明常量
Const常量名[As类型]=体现式例:ConstPI=3.1415926ConstNAME=“China”●系统提供常量见P59例●隐式申明未进行上述申明而直接使用变量,称为隐式申明变量,都是Variant类型。第48页3.4运算符和体现式优先级运算符运算
1^乘幂(指数)2-负号
2*、/乘、除
3\整除
4Mod取模(求余)
5+、-加、减1、运算符:
算术运算符、字符串运算符、关系运算符和逻辑运算符
(1)算术运算符:第49页(2)字符串连接运算符:+、&(3)关系运算符:>、<、>=、<=、=、<>、Like、Is
(4)逻辑运算符:
优先级运算符运算1Not
非2And与
3Or或4Xor异或5Eqv等于6Imp蕴含第50页逻辑值AndOrXorEqvImp
FFFFFTTFTFTTFTTFFTTFFTTTTFTT逻辑运算成果:注意:假如逻辑运算符对数值进行运算,则以数字二进制位逐位进行逻辑运算。第51页2、体现式:
由变量、常量、运算符和圆括号按一定规则组成。
书写规则:●乘号不能省略,用“*”表达;●括号必须成对出现,均用圆括号;●体现式从左至右书写,无高低、大小。
不一样数据类型转换:
Integer<Long<Single<Double<Currency不过Long型与Single型运算成果为Double型优先级:
算术运算符>关系运算符>逻辑运算符
第52页(1)算术体现式:由数值型常量、变量、函数、算术运算符和括号组成体现式,其成果为数值。
(2)字符体现式:由字符型常量、变量以及字符串运算符组成体现式,其成果为字符。
(3)关系体现式:成果为逻辑值,True(-1)表达真,False(0)表达假。(4)逻辑体现式:由操作数和逻辑运算符组成体现式,其成果为True或False。注意:数值型数据不能和字符型数据进行混合运算。第53页
Abs()求绝对值函数
Log()自然对数函数Sgn()符号函数Int()取整函数Sin()正弦函数Fix()截去小数函数
Cos()余弦函数Sqr()平方根函数
Tan()正切函数Rnd()随机函数
Atn()反正切函数Exp()指数函数注意:三角函数参数用弧度表达。Rnd函数返回[0,1)双精度随机数,为使每一次运行都产生不一样随机序列,需添加Randomize语句。
Randomize(number)或Randomize(timer)3、常用内部函数:VisualBasic提供了许多函数,顾客能够直接调用。●数学函数:第54页
Asc(C)字符转换为ASCII码值Chr$(N)ASCII码值转换为字符Hex[$](N)十进制转换为十六进制Oct[$](N)十进制转换为八进制Str$(N)数值转换为字符Val(C)数字字符串转换为数值Lcase$(C)大写字母转换为小写字母Ucase$(C)小写字母转换为大写字母
InStr([N1,]C1,C2,[M])在C1中从N1开始找C2InStrRev(C1,C2,[N1,][M])从串尾开始找Join(A[,D])将数组A各元素按D分隔符连接成字符串变量●转换函数:●字符函数:第55页Left$(C,N)取出字符串左边n个字符Len(C)计算字符串长度LenB(C)计算字符串所占字节数Ltrim$(C)删除字符串左边空格Mid$(C,N1,N2)在C中从N1开始向右取N2个字符Replace(C,C1,C2[,N1][,N2][,M])从N1开始开始将C2替代C1Right$(C,N)取出字符串右边n个字符Rtrim$(C)删除字符串右边空格Space$(N)产生N个空格字符串Split(C[,D][,M])将字符串C按分隔符D分隔成字符数组StrComp(C1,C2[,M])以-1,0,1分别表达两个字符串大小String$(N,C)返回由N个C中首字符组成字符串StrReverse(C)将字符串反序第56页Date$系统日期DateSerial()返回日期形式DateValue()返回日期形式Day()返回年月日中日期数Month()返回月份MonthName()返回汉字月份名Now()系统日期和时间Time$系统时间WeekDay()求星期WeekDayName()求星期名Hour()求小时Year()求年份Minute()求分钟Second()求秒数DateAdd()增减日期DateDiff()求时间间隔日期形式:见P66表1.3.11●日期和时间函数:第57页●输出格式函数:
格式输出函数有Format能够使数值、日期或字符串按指定格式输出。格式:Format$(体现式[,格式字符串])
格式字符串见P67表1.3.12、表1.3.13、表1.3.14●Shell函数:利用Shell命令能够在VB中调用其他应用程序。格式:Shell(命令字符串[,窗口类型])
命令字符串:必须是可执行文献(*.COM、*.EXE、*.BAT)。第58页3.5基本语句1、次序构造语句:(1)注释语句:
Rem正文或者’正文(2)赋值语句:
[Let]变量=体现式(3)属性设置语句:
对象名称.属性名称=属性值(4)与顾客交互函数和过程:
InputBox函数
InputBox(提醒[,标题][,缺省][,X坐标位置][,Y坐标位置])
MsgBox函数
变量(%)=MsgBox(提醒[,按钮][,标题])
MsgBox过程
MsgBox提醒[,按钮][,标题]第59页2、选择构造语句:(1)IF/THEN/ELSE语句:
●行If语句
If<条件体现式>Then<语句1>Else<语句2>
●块If语句If条件1Then语句块1Else语句块2EndIf
●ElseIf语句(多分支)
If条件1Then语句块1ElseIf条件2Then语句块2……[Else语句块n+1]EndIf第60页变量或体现式:数值型、字符型
体现式列表:4种形式见教材P77●If语句嵌套(多分支)If条件1ThenIf条件11then……EndIf……EndIfSelectCase变量或体现式Case体现式列表1语句块1[Case体现式列表2语句块2]……
[CaseElse
语句块n+1]EndSelect(2)SELECT/CASE语句:第61页练习:
1.X%=10SELECTCASEXCASEIS<10PRINT2*XCASE10TO20PRINT3*XCASEELSEPRINTX^2ENDSELECTA)10B)20C)30D)100
2.SCORE=INT(RND)+5SELECTCASESCORECASE5PRINT"GOOD"CASE4PRINT"OK"CASE3PRINT"PASS"CASEELSEPRINT"BAD"ENDSELECTA)BADB)PASSC)OKD)GOOD第62页3.A=1:B=2C=3:D=4X=C*D-A*BSELECTCASEXCASEELSEPRINT“END”CASE2TO5PRINT“A”CASEIS>5PRINT“B”ENDSELECTA)ENDB)AC)BD)程序犯错
4.a=5
IF
a<=3
THEN
3;
END
IF
IF
a<=4
THEN
4;
END
IF
IF
a<=5
THEN
5;
END
IF
IF
a<=6
THEN
6;
END
IF
第63页5.Y=
InputBox("Year:“)
IFyMOD4<>0THEN
ELSEIF
THEN
Leapyear=0
ELSE
Leapyear=1
ENDIF
IFLeapyear=0THEN
Print"Non-LeapYear!"
ELSE
Print"LeapYear!"
ENDIF6.x=-5S=InputBox("inputvalueofs:“)SELECTCASESCASEIS>0y=x+1CASEIS=0y=x+2CASEELSEy=x+3ENDSELECTPRINTx;y第64页7.S=6SELECTCASEsCASEIS<6f=s+1CASEIS<5f=s+2CASEIS<4f=s+3CASEELSEf=s+4ENDSELECTPRINTs;fA)67B)68C)69D)610
8.N=InputBox(”Thenumberofmonth--“)m=
SELECTCASEmCASE1PRINT”Spring”
CASE2PRINT“Summer”
CASE3PRINT”Autumn”
CASEELSEPRINT”Winter”
ENDSELECT
第65页9.score=INT(RND*10)+80SELECTCASEscoreCASEIS<60a$="F"CASE60TO69a$="D"CASE70TO79a$="C"CASE80TO89a$="B"CASEELSEa$="A"ENDSELECTA)AB)BC)CD)D第66页10.假设x=5,可得到打印成果是:A)SelectCaseXCase10to1Print“Abc”EndSelectB)SelectCaseXCaseIs>15,Is<5Print“Abc”EndSelectC)SelectCaseXCaseIs>5,1,3To10Print“Abc”EndSelectD)SelectCaseXCase1,3,Is>5Print“Abc”EndSelect第67页11.与下面3条语句等效语句组是:Ifx=1Theny=4Ifx=2Theny=5Ifx=3Theny=6A)Ifx=1Theny=4ElseIfx=2Theny=5Else:y=6EndifB)Ifx=1Theny=4ElseIfx=2Theny=5Elsey=6EndifC)Ifx=1Theny=4ElseIfx=2Theny=5Endify=6D)Ifx=1Theny=4ElseIfx=2Theny=5ElseIfx=3theny=6Endif第68页(3)条件函数:●IIf函数
IIf(体现式,当条件为真时值,当条件为假值)●Choose函数Choose(数值型变量,值为1返回值,值为2返回值……)3、循环构造语句:
在指定条件下数次反复执行一组语句。(1)FOR/NEXT语句:
For循环变量=初值To终值[Step步长]语句块Next循环变量
第69页
(2)DO/LOOP语句:
格式1:Do[{While|Until}条件体现式]语句块Loop
格式2:Do
语句块Loop[{While|Until}条件体现式](3)WHILE/WEND语句:
格式1:While条件体现式语句块Wend(4)循环嵌套第70页4、其他辅助控制语句:
(1)GOTO语句:
Goto{标号|行号}(2)END语句:
用于结束一种程序运行。
(3)WITH语句:
With对象语句块EndWith
第71页§3.6数组数组:一组相同类型变量集合。数组中各个数称为数组元素,用下标来标识。
●数组中所有数据必须为同一类型,此类型即为整个数组类型,不允许在同一数组中同步寄存不一样类型数据。●数组中各元素作用同简单变量相同,都用来寄存一种数据,只不过前者在内存中占据一组连续存放单元。●数组与循环结合使用,方便对大批数据进行处理。●数组需先申明后使用,按申明时数组大小是否确定分为静态数组和动态数组两类。20232023202320232023202320242028S(1)S(2)S(3)S(4)S(5)S(6)S(7)S(8)42512第72页1、静态数组及申明:
静态数组:在申明时,已确定了大小数组。(1)一维数组:
Dim数组名([下标下界To]下标上界)[As类型]
下标:必须是常数,不能为变量或体现式
下标范围:-32768~32767,省略下界时,下界默以为0数组大小:上界-下界+1DIM语句申明所建立数组名称、维数、大小和类型。
[例]:Dima(8)AsString
Dimb(-3To5)AsInteger,x(5)ASLong或者:DimA$(8)
第73页(2)多维数组:
Dim数组名(下标1[,下标2…])[As类型]
下标个数:决定数组维数,最多60维。
下标范围:-32768~32767,省略下界时,下界默以为0数组每一维大小:上界-下界+1数组大小:每一维大小乘积
[例]:Dima(8,3,5)AsString
Dimb(-3To5,7To9)AsInteger或者:DimA$(3,4,5),x(10,9),C%(20)注意:若要下界默以为1,则在窗体层或标准模块层添加语句OptionBase1。第74页2、动态数组及申明:
动态数组:申明时未给出数组大小(即省略括号中下标),当使用时,随时用ReDim语句重新指出数组大小。
静态数组是在程序编译时分派存放空间;而动态数组则是在程序运行时分派存放空间。
ReDim数组名(下标[,下标2…])注意:1.ReDim语句中下标能够是常量,也能够是有了确定值变量。2.在过程中能够数次使用ReDim语句来变化数组大小和维数。3.每次使用ReDim语句都会使数组本来值丢失,可在ReDim语句中加Preserve参数将之保存。例3.9第75页3、数组基本操作:
(1)给数组元素赋值
●利用循环构造●利用Array函数注意:若要用Array函数,则数组类型只能是Variant。数组下界为0,上界由参数个数决定。
Lbound(数组[,维数])函数:返回数组某一维下界
Ubound(数组[,维数])函数:返回数组某一维上界
(2)数组输入(3)数组赋值(4)数组输出(5)求数组中最大元素及其下标,求各元素之和(6)交换数组中各元素第76页数据处理办法排序查找插入删除比较交换法选择法起泡法插入法次序查找折半查找(二分查找)4、数组应用:(1)统计(2)大量数据输入(3)对大批量数据进行处理
第77页◆比较交换法[例]:将下列10个数字按从小到大次序排列:18,23,15,3,67,8,12,45,24,55182315367812452455a(1)a(2)a(3)a(4)a(5)a(6)a(7)a(8)a(9)a(10)a(1)分别与a(2)~a(10)比较,即I=1;J=2TO10a(2)分别与a(3)~a(10)比较,即I=2;J=3TO10a(3)分别与a(4)~a(10)比较,即I=3;J=4TO10……a(9)分别与a(10)比较,即I=9;J=10TO10151831523181815
81523181518
121515182324455567第78页◆选择法:
此办法能够视为比较交换法改善。[例]:将下列10个数字按从小到大次序排列:182315367812452455a(1)a(2)a(3)a(4)a(5)a(6)a(7)a(8)a(9)a(10)318a(1)分别与a(2)~a(10)比较,K(初始)=1a(2)分别与a(3)~a(10)比较,K(初始)=2a(3)分别与a(4)~a(10)比较,K(初始)=3
……a(9)分别与a(10)比较,K(初始)=9
1215
82315182324455567↑K↑K↑K↑K↑K↑K↑K↑K第79页[例]:将下列10个数字按从小到大次序排列:182315367812452455a(1)a(2)a(3)a(4)a(5)a(6)a(7)a(8)a(9)a(10)1523◆冒泡法:
此办法是将相邻两数比较。第一轮:I=1,a(1),a(2)比较,a(2),a(3)比较,…,a(9),a(10)比较即J=1TO9A(J)与A(J+1)比较第二轮:I=2,a(1),a(2)比较,a(2),a(3)比较,…,a(8),a(9)比较即J=1TO8A(J)与A(J+1)比较……第九轮:I=9,a(1),a(2)比较即J=1TO1A(J)与A(J+1)比较32386712674567246755671518318823122324455538121518232445大数沉底第80页↑top↑bot↑mid[例]:输入一种整数(如n=55),查找数组中是否存在该数35816324547505564a(1)a(2)a(3)a(4)a(5)a(6)a(7)a(8)a(9)a(10)◆数组元素查找(折半查找\二分查找):折半查找前提:所查找数据有序。↑top↑mid↑top
top=1,bot=10,mid=INT((top+bot)/2)判断a(mid)是否要找数,若是则输出,退出查找。若a(mid)>n,则bot=mid-1,计算新mid值,再判断。若a(mid)<n,则top=mid+1,计算新mid值,再判断。
……循环至最后找到所查数,或直至top>bot,表达没找到。第81页
在一种数组中删除某个元素后,后续元素自然需要前移,故程序为二重循环。由于不能肯定数组中有多少个与n相等元素,故需要设置一种变量k做统计,因此它将影响被移位元素个数。在删除k个元素后,数组中剩下n-k个元素,而这些剩下元素最大下标为n-k。
◆数组元素删除:[例]:输入任意一种整数n(如n=16),查找下列数组中是否存在该数,若有,则将其删除,其后数据依次往前移。1352816324527501664a(1)a(2)a(3)a(4)a(5)a(6)a(7)a(8)a(9)a(10)324527506400第82页
◆数组元素插入:35816324547505664
例如要插入数X=7。要插入一种数,首先要为其挪出一种空当。办法一:凡是比X小数都依次往前挪一位。即35816324547505664a(1)a(2)a(3)a(4)a(5)a(6)a(7)a(8)a(9)a(10)a(0)357办法二:凡是比X大数都依次往后挪一位。即35816324547505664a(1)a(2)a(3)a(4)a(5)a(6)a(7)a(8)a(9)a(10)a(11)6475650474532168第83页
◆二维数组应用:(矩阵形式)1.杨辉三角2.找鞍点3.解二元一次方程4.魔术方阵第84页5、控件数组:(1)控件数组概念
由一组相同类型控件组成,共有一种控件名,有相同属性。每个控件元素有一种唯一索引号(Index),即下标,下标由0开始。通过属性窗口Index属性可知该控件下标是多少。控件数组适用于若干个控件执行操作相同场所。(2)控件数组建立
●在设计时建立●运行时添加第85页§3.7过程
过程有两类:系统提供过程、顾客自定义过程
自定义过程分为:SUB子过程Function函数过程Property属性过程Event事件过程1、过程定义:
Sub过程没有返回值,因此Sub过程调用是一种完整语句。Function过程有返回值,因此Function过程调用是体现式一部分。(1)利用“工具”菜单下“添加过程”命令定义:(2)利用代码窗口直接定义:第86页定义Sub子过程:
[Static][Public|Private]Sub子过程名[(参数列表)]
局部变量或常数定义语句[ExitSub]语句EndSub
参数列表形式:
[ByVal]变量名[()][As类型][,[ByVal]变量名[()][As类型]…]
ByVal表达该过程被调用时采取值传递,不然是引用传递。第87页定义Function函数过程:
[Static][Public|Private]Function函数过程名([参数列表])[As类型]
局部变量或常数定义语句函数名=返回值[ExitFunction]语句函数名=返回值EndFunction注意:函数过程无参数时,括号不能省略第88页2、过程调用:(1)子过程调用子过程名[参数列表]或Call子过程名[(参数列表)]
(2)函数过程调用
被调函数必须作为体现式或体现式中一部分。
如:Print函数过程名([参数列表])注意:●定义过程时参数称为形参或哑元;调用过程时参数称为实参或实元,形参与实参必须个数相同,位置与类型一一对应。●调用时把实参值传递给形参称为参数传递。●参数是数组时,形参与实参在参数申明时省略维数,但括号不能省。第89页3、参数传递:(1)地址传递(引用传递)和值传递值传递方式:在形参前加了“ByVal”关键字时采取该方式。系统将实参值复制给形参,实参与形参即断开联系,在过程中形参任何操作都不会影响到实参,即这种传递是单向。SUBf(a)a=a+1PRINTaENDSUBCALLf(3)PRINTa30013008a4第90页地址传递方式:调用一种过程时,将实参地址传递给形参,使得形参和实参具有相同存放地址,即二者共占同一存放单元。其成果是过程中对形参变化也相称于对实参变化,即数据传递是双向。SUBf(a)a=a+1PRINTaENDSUBb=3:CALLf(b)PRINTa,b3001ab4注意:使用地址传递方式时,对应实参不能是体现式或常数。(2)数组参数传递:数组参数传递一般采取地址传递方式。第91页4、变量、过程作用域:
VB应用程序由若干个过程组成,它们一般保存在窗体文献或标准模块文献中。变量、过程可被访问范围称为变量、过程作用域。(1)过程作用域:窗体/模块级和全局级●窗体/模块级:
在窗体/模块内定义带“Private”关键字过程,只能被本窗体/标准模块中过程调用。
●全局级:在窗体/模块内定义过程默以为全局过程,也可加“Public”说明,其调用方式:1.外部过程调用窗体定义过程须在过程名前加窗体名。2.外部过程调用标准模块定义过程,若过程名不是唯一,则须加上标准模块名。第92页(2)变量作用域●局部变量(LocalVariable):
在Sub或Function过程中用Dim语句申明变量,其作用域只局限于在本过程或函数之中,称之为局部变量。不一样过程中可有同名变量,彼此互不相干。
●窗体/模块级变量(Form/ModuleVariable):
在窗体/模块任何过程外,即在“通用申明”段中用Dim或Private语句申明变量称为窗体/模块级变量,其作用域为本窗体/模块内任何过程。
●全局变量:
在窗体/标准模块任何过程外,即在“通用申明”段中用Public语句申明变量。可被应用程序任何过程访问。第93页(3)静态变量(Static)
用Static语句申明变量即为静态变量。用Dim语句申明变量,在每次调用过程时都将初始化(值为0);而静态变量在每次调用过程时都将保存原有值。格式:Static变量名[As类型]StaticFunction函数名[As类型]StaticSub过程名[(参数列表)]5、递归:第94页§3.8常用算法举例★初等数论问题求解有关算法(求最大条约数、最小公倍数、素数)
★递推化算法(迭代、累加、累乘、穷举法)
★方程求根(二分法)
★排序算法(选择法、冒泡法)
★查找(次序法、折半法)★有序数列插入、删除操作★字符串处理(密码、图形)第95页查找和修改程序中错误过程称为程序调式。1、错误类型
编辑时错误、编译时错误、运行时错误和逻辑错误2、调试和排错(1)设置断点:按F9键或菜单选择(2)逐渐跟踪:
●逐语句执行:按F8键或菜单选择●逐
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- LED灯具采购协议
- 2025年吉林省松原市宁江区中考物理一模自编练习试卷(一)(含解析)
- 铁路市场营销市场营销发展的新趋势75课件
- 农村建房实际施工方案
- 铁路信号与通信设备接发列车工作89课件
- 《GB 14622-2016摩托车污染物排放限值及测量方法(中国第四阶段)》(2025版)深度解析
- 中国中医发展史
- 购房合同书范本
- 民办万博科技职业学院《主要英语国家国情》2023-2024学年第二学期期末试卷
- 交易居间协议合同范本
- 不合格品处理流程
- 园林绿化工-中级-植物识别
- 7.2万有引力定律说课课件(26张PPT)
- 中国人民大学自荐信模板
- 公共政策分析的基本理论与框架课件
- 脊髓损伤护理常规
- 施工员培训课件(PPT-54张)
- 厂家管道吹扫方案(参考)
- 水土保持常用监测表格(共9页)
- 病理学第十六章-神经系统疾病
- 上海市南汇区医院检验科生物安全手册
评论
0/150
提交评论