您好,欢迎访问三七文档
当前位置:首页 > 金融/证券 > 股票经典资料 > 第章 VB子程序和函数过程
VisualBasic程序设计教程1本章主要介绍:定义Sub过程定义Function函数过程调用Sub过程或Function函数过程调用事件过程变量的存储类别和作用域。编写过程,可以实现代码重复使用。VisualBasic程序设计教程28.1.1什么是过程过程是编写程序的功能模块使用过程主要有以下两方面的原因:1.可以把复杂的问题简单化任务分解为子任务,子任务用过程实现使程序结构清晰、易读,也便于调试和维护。2.可以实现代码重复使用可以避免重复编写的烦琐可以减少出错。VisualBasic程序设计教程38.1.2过程分类与调用流程VB中的过程分成两大类:事件过程:由对象的某个事件驱动执行如Click事件过程、Load事件过程等通用过程由用户自已定义的完成某一功能的过程。通用过程不属于任一对象,不由事件驱动使用专用的调用语句来执行它VisualBasic程序设计教程4通用过程又分两类:Sub过程(子过程、子程序)往往用于处理不需要有返回值的一些基本任务如显示矩阵。Function函数过程:可作为函数使用,它一般应有一个返回值如求阶乘。VisualBasic程序设计教程5调用流程如图:VB的应用程序就是由若干个过程构成的。VisualBasic程序设计教程6【例8-1】设计程序,其作用是根据姓名查电话号码。输入姓名后,单击“确定”或按回车键,使姓名与内部储存的一批姓名核对,若存在,则显示“欢迎查询”内并使窗体只显示标签,且文字为姓名和对应的电话号码。最多允许输入3遍。控件:1个标签、1个文本框1个“确定”命令按钮VisualBasic程序设计教程7过程:Form_Load事件:储存一批姓名和电话号码等Command1_Click事件:核对姓名,显示提示Text1_KeyPress事件:核对姓名,显示提示CheckName函数过程:判断此人是否存在,得下标/-1。姓名和电话号码为模块级变量、N为静态变量。VisualBasic程序设计教程8DimName1,Phone'声明Name1,Phone为模块级Variant类型变量PrivateSubCommand1_Click()'核对姓名,显示提示StaticNAsInteger'声明N为静态整型变量DimTAsIntegerT=CheckName(Text1.Text)'以姓名为参数,调用函数CheckBookIfT-1ThenMsgBox欢迎查询!,,提示Text1.Visible=False:Command1.Visible=FalseLabel1.Caption=姓名:&Text1.Text&Chr(13)&电话:&Phone(T)Label1.Left=(Form1.ScaleWidth-Label1.Width)/2'让标签在中间VisualBasic程序设计教程9ElseN=N+1'核对次数加1IfN3ThenMsgBox你输错了,这是第&N&次错,请重输!,,提示Text1.Text=:Text1.SetFocusElseMsgBox你已经输错3次了!再见!,,提示EndEndIfEndIfEndSubVisualBasic程序设计教程10PrivateSubForm_Load()'初始化数组、设置属性Label1.AutoSize=TrueText1.Text=:Label1.Caption=姓名::Command1.Caption=确定Name1=Array(张小红,李小芳,王小华,王力,李季,黄大海)Phone=Array(8820123,8882011,7812321,2444522,1243211,3434555)EndSubVisualBasic程序设计教程11FunctionCheckName(NaAsString)AsInteger‘函数过程,返回位置DimiAsIntegerCheckName=-1Fori=LBound(Name1)ToUBound(Name1)’线性查找法IfName1(i)=NaThenCheckName=i:ExitForNextIEndFunctionPrivateSubText1_KeyPress(KeyAsciiAsInteger)IfKeyAscii=13ThenCommand1_Click‘遇回车时,调用事件过程EndSubVisualBasic程序设计教程12VB中的模块属于工程资源它由过程或声明构成,以独立的文件管理。工程中包含窗体、类和标准模块文件本节介绍窗体模块标准模块。VisualBasic程序设计教程138.3.1窗体模块窗体模块是大多数VB应用程序的基础窗体模块与窗体对应,存放窗体上所有信息:窗体及窗体上各控件界面信息、属性、事件过程通用过程变量和常量的声明等。窗体模块文件的扩展名为.Frm一个应用程序可以创建多个窗体模块VisualBasic程序设计教程148.3.2标准模块和SubMain过程标准代码模块一般存放与特定窗体或控件无关的通用过程、全局变量的声明等如求阶乘一个过程要被多个不同对象或模块调用时,那么该过程一般可放在标准模块中。一个应用程序可建立多个标准模块建立标准模块的方法是:使用“工程”菜单的“添加模块”命令项。VisualBasic程序设计教程15应用程序启动时,可先装载窗体,也可先运行SubMain过程SubMain是过程名为Main的特殊过程SubMain过程必须放在标准模块中才可作为启动对象。启动对象可以在工程属性中设置VisualBasic程序设计教程168.4.1定义Sub过程Sub过程一般指通用子过程,可在程序中调用执行,执行完毕后无返回值。它可以定义在窗体模块的通用对象中,也可以定义在标准模块中。格式:Sub过程名([参数列表])[语句块]EndSubVisualBasic程序设计教程171.关于格式过程名的命名方式与变量名命名一致。参数列表为调用时传递给Sub过程的参数,用逗号间隔。Sub过程也可以没有参数,但括号不可省。参数的常用语法是:参数名[As类型说明]定义时的参数,又称为形式参数,简称形参。Sub和EndSub必须成对出现VisualBasic程序设计教程182.关于语句块语句块即为过程体,与事件过程的代码编写一样包含变量声明和可执行的语句、方法等可以由顺序、分支、循环三种结构综合而成。语句块中可直接使用参数说明:语句块中不能重复声明形式参数。Sub过程名([参数列表])[语句块]EndSubVisualBasic程序设计教程193.过程定义步骤打开代码窗口,对象框中选“通用”,然后输入过程首行并回车,VB自动显示EndSub然后再输入过程体就可以了。如:定义过程Hello:实现以姓名为参数显示“XXX你好!”(XXX具体内容由参数决定)Sub过程名([参数列表])[语句块]EndSubVisualBasic程序设计教程20完整代码应为:SubHello(XXXAsString)MsgBoxXXX&你好!EndSub以上过程的过程名为Hello形式参数为XXX且是字符串型过程体只用了一句MsgBox,并同时使用了参数XXX。VisualBasic程序设计教程21程序中使用调用语句可调用Sub过程过程运行完毕或跳出过程运行后,返回到调用处。1.调用Sub过程的方法过程定义在当前模块或标准模块中使用以下两种格式之一:格式一:过程名[实参数列表]格式二:Call过程名[(实参数列表)]如Hello过程,可以使用:Hello王小红或CallHello(王小红)VisualBasic程序设计教程22过程定义在窗体模块中而调用语句在其它模块中采用以下两种格式之一:格式一:窗体名.过程名[实参数列表]格式二:Call窗体名.过程名[(实参数列表)]调用Sub过程的方法也可以用来调用事件过程,如例4-10,可用:PrivateSubCheck2_Click()Check1_Click'这时调用的过程名即为Check1_ClickEndSubVisualBasic程序设计教程232.关于过程调用时的参数过程调用时的参数称为实际参数,简称实参。它可以变量、常量或表达式。实参与形参的个数应相同、类型应一致若实参是表达式,则先计算值,再将值送给对应的形参。实参和形参可以使用同名变量。如果定义的过程没有形参,则调用时就没有实参。VisualBasic程序设计教程24使用Call调用时,实参部分要加上括号不使用Call关键字,直接用过程名调用时,参数部分不能加上括号,但过程名和第一个参数之间要有空格。例如,编程:要求输入姓名,调用Hello过程,则程序如下:PrivateSubCommand1_Click()DimSAsStringS=InputBox(请输入姓名)HelloSEndSubVisualBasic程序设计教程25【例8-2】分析以下程序:SubA(nAsInteger)DimiAsIntegerFori=1Ton:Printi;:NextCallBPrintEndSubSubB()PrintBBBBBBEndSubPrivateSubCommand1_Click()CallA(9)B'直接使用过程名调用过程B()EndSubVisualBasic程序设计教程268.4.2调用Sub过程【例8-3】设计一个如图所示的程序,其作用是显示字符图案。显示的字符和行数由输入决定,形状可以是正三角形或倒三角形。编写通用过程Print_triangle,输出三角形图案。显示的字符S、行数Line、及作为正或倒的三角形标志Flag均作为参数Print_triangle供两个命令按钮调用两个命令按钮的Click事件:输入1个字符和行数,调用Print_triangle过程。VisualBasic程序设计教程278.4.2调用Sub过程—字符三角形SubPrint_triangle(SAsString,LineAsInteger,FlagAsInteger)'通用过程DimAAsInteger,BAsInteger,iAsInteger,jAsIntegerClsIfFlag=-1ThenA=Line:B=1ElseA=1:B=LineFori=AToBStepFlag'正:从小到大循环,倒:从大到小循环PrintTab(Line+10-i);Forj=1To2*i–1:PrintS;:NextjPrintNextiEndSubVisualBasic程序设计教程28PrivateSubCommand1_Click()DimChAsString*1,LineAsInteger'Ch只容纳1个字符Ch=InputBox(请输入一个要显示的字符)Line=Val(InputBox(请输入显示的行数))Print_triangleCh,Line,1'以标志1调用过程EndSubPrivateSubCommand2_Click()DimChAsString*1,LineAsIntegerCh=InputBox(请输入一个要显示的字符)Line=Val(InputBox(请输入显示的行数))Print_triangleCh,Line,-1'以标志-1调用过程EndSubVisualBasic程序设计教程298.4.3ExitSub语句使用ExitSub语句可以中途结束子过程的运行。程序不再执行ExitSub到EndSub之间的代码,而是直接返回到调用处。ExitSub语句一般往往与If语句合用,如:修改例8-3中的Print_triangle过程,当Line参数小于等于0,Flag参数不等于±1时,显示“参数错误”并退出过程。VisualBasic程序设计教程30则可以在Print_triangle过程的Cls前增加一句:IfLine=0OrAbs(Flag)1ThenMsgbox参数错误:ExitSubExitSub也可以用在事件过程特别注意:在过程中途退出过程不能使用EndSub。VisualBasic程序设计教程318.5.1定义Function函数过程Function函
本文标题:第章 VB子程序和函数过程
链接地址:https://www.777doc.com/doc-3982344 .html