VB程序设计第四章-基本的控制结构ppt课件_第1页
VB程序设计第四章-基本的控制结构ppt课件_第2页
VB程序设计第四章-基本的控制结构ppt课件_第3页
VB程序设计第四章-基本的控制结构ppt课件_第4页
VB程序设计第四章-基本的控制结构ppt课件_第5页
已阅读5页,还剩63页未读 继续免费阅读

下载本文档

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

文档简介

.,1,第四章基本的控制结构,.,2,顺序结构(Sequence)选择结构(Selection)循环结构(Repetition)其它辅助控制语句常用算法(一),Summary,.,3,顺序结构按照各语句出现的先后顺序执行包括:赋值语句输入/输出语句,4.1顺序结构,.,4,赋值语句是任何程序设计的最基本语句。语法结构:变量名表达式其中:变量名:已经定义(声明)的变量名称表达式:任何类型表达式(算术、逻辑、函数等等),类型与变量名的类型一致。,1赋值语句,.,5,赋值语句的作用:先计算等号右边表达式的值,然后赋给等号左边的变量。VB赋值语句的两项任务给变量赋值给控件的属性赋值例如:sngRate!=0.1将0.1赋给单精度变量sngRatetxtName.Text=“Hu”,.,6,赋值处理当赋值等号左右数值类型不相同时,强制转换成左边变量的类型(精度)n%=3.5结果为4(四舍五入)当赋值等号左边是数值类型,而右边表达式是数字字符串,则VB自动转换成数值类型再赋值,如表达式不是数字字符串,则出错。n%=“123”结果为123,与n%=Val(“123”)效果一样n%=“1a23”出现“类型不匹配”错误,.,7,当逻辑类型赋值给数值类型时,True转换为1,False转换为0;反之,当数值型赋值给逻辑类型,则非零转换为True,0转换为False。任何非字符类型赋值给字符类型,自动转换为字符类型。,.,8,注意:尽量采用转换函数进行转换,避免VB系统自动转换。这样能避免出现意想不到的错误。VB系统会自动判断赋值符号“=“和关系运算符等于符号”=“。赋值符号”=“左边只能是变量,不能是常量、或者表达式。赋值语句:intX=intX+1,.,9,VB与用户之间的数据交互通过两个函数和一个过程完成。函数有返回值,过程没有返回值。(第六章)函数:InputBox(),MsgBox()过程:MsgBox,2人机交互函数和过程,.,10,语法:变量名InputBox(提示,标题,默认,x坐标位置,y坐标位置)其中:提示:字符串表达式,显示信息。如果要显示多行,则在每行未加上回车Chr(13)和换行Chr(10),或者,加上VB系统常数vbCrLf。,1InputBox函数,.,11,标题:字符串表达式,在对话框的标题显示。如果省略,则显示应用程序的名称。默认:字符串表达式。当对话框中没有输入时,则该默认值作为输入的内容。x坐标位置,y坐标位置:整数表达式,确定对话框左上角在屏幕上的位置,屏幕左上角为坐标原点,单位:twip。1000twip=1inch。,.,12,打开一个标准对话框,等待用户输入内容,用户单击“确定(OK)”或者按回车键,则该函数返回输入的值,其类型为字符型。例如:DimstrNameAsString*40,strS1AsStringstrS1=请输入你的姓名+vbCrLf+然后回车确定strName=InputBox(strS1,输入框,100,100),InputBox函数的作用,.,13,语法:变量名MsgBox(提示,按钮,标题)其中:提示:与InputBox函数相同标题:与InputBox函数相同按钮:整数表达式,决定信息框按钮的数目和类型及其图标类型。参见P77,表1.4.1,2MsgBox()函数,.,14,分组,内部常数,按钮值,描述,vbOkOnlyvbOkCancelvbAbortRetryIgnorevbYesNoCancelvbYesNovbRetryCancel,012345,“确定”“确定”、“取消”“终止”、“重试”,“忽略”“是”、“否”、“取消”“是”、“否”“重试”、“取消”,按钮数目,表1.4.1“按钮”设置值及其意义,.,15,vbCriticalvbQuestionvbExclamationvbInformation,16324864,红色STOP标志询问信息图标?警告信息图标!信息图标i,按钮类型,vbDefaultButton1vbDefaultButton2vbDefaultButton3,0256512,第一个按钮为默认第二个按钮为默认第三个按钮为默认,默认按钮,vbApplicationModevbSystemMode,04096,应用模式系统模式,模式,.,16,注意:四组方式可以组合使用。一般采用内部常数形式,而不采用按钮值形式。例如:I=MsgBox(“密码错误”,vbRetryCancel+vbExclamation,”输入密码”)I=MsgBox(“密码错误”,53,”输入密码”)模式:若应用模式建立对话框,则必须响应对话框才能继续当前的应用程序,但可以切换到其它应用程序。若应用系统模式建立对话框,则所有的应用程序都被挂起,直到用户响应对话框为止。,.,17,内部常数,按钮值,被单击的按钮,vbOkvbCancelvbAbortvbRetryvbIgnorevbYesVBNo,1234567,确定取消终止重试忽略是否,表1.4.2MsgBox函数返回值意义,.,18,语法:MsgBox(提示,按钮,标题)其中:提示、标题、按钮:与MsgBox函数相同作用:Msgbox()函数和Msgbox过程的作用都是打开一个信息框,等待用户选择一个按钮。区别:Msgbox()函数返回所选按钮的整数值;Msgbox过程没有返回值。,3MsgBox过程,.,19,编程实现账号和密码的输入程序,要求:(1)账号不超过6位数字,密码为4位字符,假设为“Gong”(2)密码输入时,不显示输入的字符,用“*”代替。(3)输入不正确,显示有关信息。单击“重试”,则清除原来输入的内容,等待重新输入;单击“取消”,终止程序运行。,例题:,.,20,分析账号账号不超过6位数字,则将文本框的MaxLength属性设置为6;输入结束后,通过LostFocus事件,来判断账号输入的正确性。若出错,则显示出错信息,重新输入。密码要显示“*”,将PasswordChar属性设置为“*”即可。输入结束按确定键后,判断密码的正确性。正确没有显示,出错显示出错信息。,.,21,选择结构作用对条件进行判断,根据判断结果,选择执行不同的分支。If条件语句Selectcase语句条件函数,4.2选择结构,.,22,If条件语句有多种形式单分支双分支多分支,4.2.1If条件语句,.,23,IfThen语句,1单分支结构,(1)IfThenEndIf(2)IfThen,.,24,表达式可为关系表达式、逻辑表达式、算术表达式。非零为True,零为False。语句块:一条或者多条语句。形式(2)中的语句只能是一条,或者多条简单语句,之间用冒号分开。尽量用第一种形式编程。,其中,,.,25,F,T,表达式,语句块,当表达式为True时,执行Then后的语句块。否则,不作任何处理,.,26,IfThenElse语句,2双分支结构,(1)IfThenElseEndIf(2)IfThenElse,.,27,当表达式为非零(True)时,执行Then后的语句块1(或语句1),否则,执行Else后面的语句块2(或语句2)。,作用,F,表达式,语句块1,语句块2,T,.,28,IfThenElseif语句,3多分支结构,IfThenElseifThenElseEndIf,.,29,注意:,不管有几个分支,程序执行一个分支后,就不再执行其它分支。ElseIf不能写作ElseIf当多个分支有多个表达式同时满足时,则只执行第一个匹配的语句块。P82,例4.3,.,30,在If或者Else后面的语句中又有If语,称为If嵌套。,4If语句的嵌套,IfThenifThenEndIfEndIf,.,31,If嵌套一般采用锯齿型,增强程序的可读性。一个If必须与一个EndIf匹配,EndIf与最近的If语句配对。例题4.4(P83),注意,.,32,SelectCase语句是多分支结构的另一种表示。比If语句更直观。选择多于三个以上,采用SelectCase较好。,4.2.2Selectcase语句,.,33,Selectcase变量或表达式Case表达式列表1Case表达式列表2CaseElseEndSelect,.,34,其中,变量或表达式:数值型或字符串表达式表达式列表:类型必须相同,可以为(1)表达式(2)一组逗号分开的值(3)表达式1To表达式2(4)Is关系运算符表达式,.,35,例如:,Case1to10110范围内Case“a”,”e”,”I”,”o”,”u”元音字母Case2,4,6,Is102,4,6,或大于10,作用,根据变量或表达式中的结果,与各case语句中的表达式列表的值进行比较,匹配则执行该语句块。如果有多个匹配,则只执行第一个匹配的语句块。,.,36,表达式列表1,语句块1,表达式列表2,语句块2,表达式列表n,语句块n,语句块n+1,T,T,T,F,F,F,.,37,注意:SelectCase语句只能有一个变量,不能对多个变量进行条件判断。多个变量只能采用IfThenElseIf语句P85,例题4.6,.,38,组合应用:算术运算:要求给出随机的110的操作数和四则运算符,计算机根据学生的答案判断准确是否,结束时给出成绩。分析:运算符“采用1,2,3,4表示;随机数用Rnd函数确定;产生表达式由Form_load过程给出,在标签(label)控件显示。,.,39,学生在文本框中输入答案;图形框中显示正确是否;最后单击“计分”时,显示成绩。,控件名lblExpressiontxtAnsweramdCalculationpicDisplay,主要属性Caption=“”Text=“”Caption=“计分”Picture默认值空,说明显示产生的题目输入计算结果最后计分显示题目、结果和正确是否,.,40,VB提供了两个条件函数IIF()函数代替If语句Choose()函数代替Select语句,4.2.3条件函数,.,41,(1)IIf()函数IIf(表达式,当条件为T的值,当条件为F的值)例如:求x,y中的大的数,放入Tmax变量中TMax=IIf(xy,x,y)等效于:IfxythenTmax=xElseTmax=yEndIf,.,42,(2)Choose()函数Choose(整数表达式,选项列表)根据整数表达式的值,选择选项列表的项:1第一项2第二项.选项数目NullstrOp=Choose(intNOp,“+”,”-”,”x”,”),.,43,最好不要采用这两个函数IIF()函数Choose()函数,忠告:,.,44,循环是在指定的条件下重复执行某些指令。两种类型的循环语句:计数型循环语句:用于循环次数确定的情况(FOR循环语句)条件循环语句:用于循环次数未知的情况(DoLoop循环语句),4.3循环结构,.,45,For循环变量初值To终值Step步长ExitForNext循环变量,4.3.1For循环语句,.,46,循环变量:整数型;步长:可正可负;正,初值小于终值;负,初值大于终值。默认为1语句块:一或多句指令;ExitFor:退出循环;循环次数:int(终值初值)/步长1)如图1.4.11(a)(b)所示。,其中:,.,47,循环变量被赋初值,仅赋一次;判断循环变量是否在终值内,是,执行循环体;否,结束循环,执行Next后的下一句语句。循环变量加步长,转(2),继续循环。,执行过程:,.,48,当退出循环时,循环变量的值保持退出时的值;循环变量的值一般在循环体外赋值;参见:P89,例4.9例如:P90,例题4.10,注意:,.,49,有两种形式的循环结构(1)DoWhile|UntilExitDoLoop,4.3.2DoLoop循环语句,.,50,(2)DoExitDoLoopWhile|Until,.,51,形式1先判断,再执行。形式2先执行,再判断。流程图参见P91。关键字While用于指明条件为真(True)时就执行循环体的语句;Until则相反。当省略While|Until时,即仅有DoLoop关键字,表示无条件循环。此时,循环体内必须有ExitDo语句,否则为死循环。,其中:,.,52,用辗转相除法求两个自然数m、n的最大公约数和最小公倍数。分析先求最大公约数已知两个数m,n,使得mnm除以n,得余数r若r0,则n为求得的最大公约数,算法结束;否则,执行以下步骤mn,nr,转步骤(2)最小公倍数等于两数相乘除以最大公约数,例题4.12,.,53,在一个循环体内包含了另一个完整的循环结构。循环嵌套对For循环和DoLoop循环均适用。注意:内循环变量和外循环变量不能相同外循环必须完全包含内循环例题:参见P92,例4.13,4.3.3循环的嵌套,.,54,GoTo语句Exit语句End语句With语句,4.4其它辅助控制语句,.,55,1GoTo语句形式:GoTo标号|行号该语句的作用是无条件转移到标号或者行号指定的那行语句。GoTo语句只能转移到同一个过程的标号或行号。标号是一个字符序列,行号是一个数字序列。采用GoTo语句编制的程序称为BS程序(BowlofSpaghettiProgram,乱麻似的程序),程序结构不清晰,可读性差。结构化程序设计中要求尽量少用或不用GoTo语句,用选择结构或者循环结构来代替。,.,56,Exit语句用于退出某种控制结构的执行。包括:ExitForExitDoExitSubExitFunction,2Exit语句,.,57,End语句用于结束一个程序的运行。End语句可以在任何事件过程中。End还可以用来结束一个过程或者控制块,在控制语句或过程中经常使用。EndIf,EndSelect,EndSub等等。,3End语句,.,58,With的作用:可以对某个对象执行一系列的语句,而不必重复指出对象的名称。形式:With对象语句块EndWith参见P95,例题。个人意见:尽量不用。,4With语句,.,59,算法是对某个问题求解过程的描述同一问题有多种算法描述算法分为两大类数值算法非数值算法,4.5常用算法(一),.,60,4.5.1累加、连乘累加:在原有和的基础上,一次一次地加上一个数。连乘:在原有积的基础上,一次一次地乘以一个数。书P9596中的简单例子。例题4.14求自然对数e的近似值。,.,61,采用ForNext语句如何实现?变量赋初始值语句若放在循环体内,情况会如何?,思考:,.,62,4.5.2求素数素数,又称质数:大于2且只能被1和本身整除的整数。求解想法:对于m从i=2,3,m-1判断m能否被i整除,若有一个能整除,则m不是素数;否则,m是素数例题4.15,求100以内的素数,.,63,实际上,m不可能被大于的数整除,故内循环为:Fori=2ToInt(Sqr(m),将大大减少循环次数。不用GoTo语句如何实现?增加一个标志位Flag,

温馨提示

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

评论

0/150

提交评论