《第4章结构化的程序设计精选文档.ppt》由会员分享,可在线阅读,更多相关《第4章结构化的程序设计精选文档.ppt(78页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第4章结构化的程序章结构化的程序设计设计本讲稿第一页,共七十八页4.1.1结构化程序设计方法的基本原则结构化程序设计方法的基本原则结构化程序设计方法的结构化程序设计方法的基本思路基本思路:把一个:把一个复杂的复杂的求解过程求解过程分阶段分阶段进进行行,每个阶段每个阶段处理的问题处理的问题都都控制在人们控制在人们容易理解和处理容易理解和处理的范围内。的范围内。每个阶段每个阶段的的处理处理都都用一个用一个相对独立的相对独立的过程过程来完成;来完成;整个程序整个程序由若干个由若干个过程过程组合而成组合而成。结构化程序设计方法结构化程序设计方法的的主要原则:主要原则:(1)自顶向下)自顶向下(2)逐
2、步求精)逐步求精(3)模块化)模块化(4)限制使用)限制使用GOTO语句语句结构化程序设计方法结构化程序设计方法要求要求:只能只能使用使用三种基本结构三种基本结构来来组成组成程序。程序。4.1结构化程序设计方法结构化程序设计方法简介简介顺序结构、选择结构、循环结构。本讲稿第二页,共七十八页1.算法算法在计算机中,把在计算机中,把解题过程解题过程的准确而完整地的准确而完整地描述描述称为解题算法,它称为解题算法,它是是为了为了求解求解某个特定的某个特定的问题问题而设计的而设计的有限多个有限多个操作步骤操作步骤的的集合集合。4.1.2算法及算法的特性算法及算法的特性2.算法的特性算法的特性(1)有穷
3、性)有穷性(2)确定性)确定性(3)有效性)有效性(4)有零个或多个输入)有零个或多个输入(5)有一个或多个输出)有一个或多个输出本讲稿第三页,共七十八页1.自然语言表示法自然语言表示法自然语言:自然语言:就是指人们日常使用的语言,可以是汉语、英语就是指人们日常使用的语言,可以是汉语、英语或其它语言。或其它语言。4.1.3算法的表示算法的表示 表示算法的方法有许多种,如自然语言自然语言、伪代码伪代码、传统流程传统流程图图、结构化流程图结构化流程图等。例例4.1求两个正整数的求两个正整数的最大公约数最大公约数的的欧几里德算法欧几里德算法。从键盘输入两个正整数m和n的值;求出m除以n的余数r;若r
4、=0,则转至第步,否则,执行第步;用n取代m,用r取代n;转到第步,继续求新的m和n的最大公约数;输出n的值,n的值即为当初那两个数的最大公约数。本讲稿第四页,共七十八页伪代码:伪代码:是是用用介于介于自然语言自然语言和和计算机语言计算机语言之间之间的的文字文字和和符号符号(包包括数学符号括数学符号)来来描述算法描述算法。2.伪代码表示法伪代码表示法用伪代码描述的欧几里德算法为:从键盘输入两个正整数m和n的值;r=m Mod n;If r=0 then 转至第步;m=n:n=r 转到第步;Print n。本讲稿第五页,共七十八页处理框起止框I/O框判断框流程线连接点(1)流程图中的基本符号流程
5、图中的基本符号3.流程图表示法流程图表示法本讲稿第六页,共七十八页顺序结构顺序结构语句1语句2选择结构选择结构(2)三种基本结构的表示三种基本结构的表示基本结构的特点基本结构的特点:(1)只有一个入口)只有一个入口(2)只有一个出口)只有一个出口(3)不存在死语句)不存在死语句(4)不存在死循环)不存在死循环条件语句1语句2YNN条件Y语句组Y条件语句组N循环结构循环结构本讲稿第七页,共七十八页例例4.2用用流程图流程图表示表示欧几里德算法欧几里德算法本讲稿第八页,共七十八页N-S流程图流程图是对是对流程图流程图表示法加以表示法加以改进改进之后得到的一种之后得到的一种新的新的、符合符合结构化程
6、序设计思想结构化程序设计思想的的流程图流程图形式。形式。语句A语句B顺序结构顺序结构语句A语句B条件YN选择结构选择结构4.用用N-S流程图表示算法流程图表示算法a)当型循环当型循环语句组当条件成立b)直到型循环直到型循环语句组直到条件成立循环结构循环结构本讲稿第九页,共七十八页例例4.3用用N-S流程图流程图表示表示欧几里德算法欧几里德算法本讲稿第十页,共七十八页N-S流程图示例流程图示例例例4.4:从从100个数中选出最大的数个数中选出最大的数本讲稿第十一页,共七十八页PrivateSubForm_Click()Dimn%,w%,i%,r%InputBox是输入数据的函数n=Val(Inp
7、utBox(请输入一个正整数!请输入一个正整数!,判别素数的程序判别素数的程序,17)w=1:i=2 w=1表示假设n是素数Do DoLoop是循环控制语句r=nModi Mod是除取余数的运算符Ifr=0Thenw=0 余数r=0表示n能被i整除i=i+1 先求i+1的值,再把结果送给iLoopUntil(i=nOrw=0)Ifw=1ThenMsgBox(n&是一个素数!是一个素数!)Else MsgBox是输出数据的函数MsgBox(n&不是一个素数!不是一个素数!)EndIfEndSub例例4.6用用VB语言语言表示出表示出判别素数的算法判别素数的算法.5.用计算机语言表示算法用计算机语
8、言表示算法本讲稿第十二页,共七十八页4.2顺序结构程序设计顺序结构程序设计4.2.1 4.2.1 注释语句注释语句注释语句是在编程工作中注释语句是在编程工作中经常使用经常使用的语句之一,在程序中对一的语句之一,在程序中对一些些关键的语句关键的语句加以加以注释注释,可以可以提高提高整个程序结构的整个程序结构的清晰度清晰度,使得程序使得程序更更加加易于理解易于理解。注释语句注释语句的的一般形式一般形式为:为:Rem注释内容注释内容注释语句注释语句的的简化应用形式简化应用形式为:为:注释内容注释内容例如:例如:Rem本程序的功能是计算球的体积本程序的功能是计算球的体积ConstPIasDouble=
9、3.1415926535定义符号常量定义符号常量PI注意注意:注释语句用的单引号必须在英文输入状态下输入注释语句用的单引号必须在英文输入状态下输入V=4/3*PI*R3:Rem计算球的体积计算球的体积Rem计算球的体积计算球的体积:V=4/3*PI*R3本讲稿第十三页,共七十八页4.2.2赋值语句赋值语句 功能:功能:将表达式的值赋值给变量名或指定对象的属性。将表达式的值赋值给变量名或指定对象的属性。一般用于给变量赋值或对控件设定属性值一般用于给变量赋值或对控件设定属性值.例:例:sRate!=0.1Text1.Text欢迎使用欢迎使用VisualBasic6.0”说明:说明:执行过程:先求表
10、达式的值,然后将值赋值给左边的变量。执行过程:先求表达式的值,然后将值赋值给左边的变量。右边的表达式可以是变量、常量、函数调用等特殊的表达式。右边的表达式可以是变量、常量、函数调用等特殊的表达式。不要将不要将“”理解为数学上的等号:理解为数学上的等号:A=A+1将将表达式表达式A+1的的值值放回到放回到变量变量A中。中。1赋值语句的一般形式赋值语句的一般形式LET=LET.属性名属性名=本讲稿第十四页,共七十八页赋值符号赋值符号“=”两边的两边的数据类型数据类型一般一般要求应一致要求应一致。不一致不一致就就自动转换自动转换,不能转不能转则则出错出错!2赋值语句对数据类型的要求赋值语句对数据类型
11、的要求3赋值操作过程中的数据类型转换赋值操作过程中的数据类型转换当类型不一致时,VB系统会自动地 将表达式的值转换成变量的类型。例:iA%=10 /3 iA中的结果为3 iA%=11 /3 iA中的结果为4(四舍五入)iA%=-11 /3 iA中的结果为-4(四舍五入)iA%=38000 出错,数据溢出。本讲稿第十五页,共七十八页当表达式是数字字符串,变量是数值类型时,系统自动地将数字字符串转换成数值再赋值;当表达式中含有非数字字符时,则出错。例:iA%=123 iA中的结果为123 iA%=123abc 错误,类型不匹配!逻辑型值赋值给数值型变量;系统自动转换。例:iA%=True iA中的
12、结果为-1 iA%=Flase iA中的结果为0非字符类型值赋值给字符型变量时,系统自动转换。例:cA$=True cA中的结果为True cA$=123 cA中的结果为123 cA$=#2003/3/12#结果为2003-3-12iA%=Val(123abc)3赋值操作过程中的数据类型转换赋值操作过程中的数据类型转换本讲稿第十六页,共七十八页例如:例如:d$=123&abc:d2$=d&abc(1)赋值符号赋值符号“=”左边一定左边一定只能只能是是变量名变量名或或对象的属性对象的属性引用,引用,不能不能是是常量常量或或表达式表达式。如:如:5=X:Abs(X)=20(2)赋值号两边的数据类型
13、赋值号两边的数据类型不兼容不兼容时,时,编译时编译时就会就会出错出错。例如:例如:x%=abc编译错误编译错误。x%=50000编译错误编译错误,-32768,32767。(3)VB不能在一个赋值语句中同时给多个变量赋值。不能在一个赋值语句中同时给多个变量赋值。(4)同一个语句行同一个语句行中的中的多个赋值语句多个赋值语句必须必须用用冒号冒号隔开隔开。例如:例如:x%=5,y%=8编译错误,编译错误,应更改为:应更改为:x%=5:y%=8(5)注意:注意:连接运算符连接运算符&的的两边两边应有应有空格空格隔开隔开。Dim x%,y%:x=y=1004赋值操作中的常见错误赋值操作中的常见错误x=
14、100:y=100本讲稿第十七页,共七十八页Print方法的一般格式:方法的一般格式:对象名对象名.Print,|;说明:说明:对象名对象名.可以是窗体名、图片框名,也可是立即窗口可以是窗体名、图片框名,也可是立即窗口“Debug”。若省略对象,则表示在当前窗体上输出。若省略对象,则表示在当前窗体上输出。用用Print方法在图片框和立即窗口对象中输出与在窗体对象中方法在图片框和立即窗口对象中输出与在窗体对象中输出完全相同。输出完全相同。4.2.3数据的输入与输出数据的输入与输出1.Print方法方法本讲稿第十八页,共七十八页Format函数函数的一般格式:的一般格式:Format(,格式字符串
15、格式字符串)2.Format函数函数将表达式表达式的值值按指定的格式转换转换成字符串字符串本讲稿第十九页,共七十八页例如:有下列语句如下例如:有下列语句如下:x%=Val(InputBox(请输入一个数请输入一个数,输入框输入框,100)语句执行后打开如下对话框。语句执行后打开如下对话框。缺省值标题提示3.InputBox函数函数$=InputBox(,标题标题,默认值默认值,x坐标坐标,Y坐标坐标)本讲稿第二十页,共七十八页4.MsgBox函数和函数和MsgBox过程过程函数形式函数形式:变量变量%=MsgBox(,按钮按钮图标图标+缺省按钮缺省按钮+模式模式,标题,标题)过程形式过程形式:
16、MsgBox,按钮按钮图标图标+缺省按钮缺省按钮+模式模式,标题标题说明:说明:“标题标题”和和“提示提示”与与InputBox函数函数中对应的参数中对应的参数相同相同;“按钮图标按钮图标+缺省按钮缺省按钮+模式模式”是是整型表达式整型表达式,决定信息框,决定信息框按钮数目、出现在信息框上的图标类型及操作模式按钮数目、出现在信息框上的图标类型及操作模式若程序中需要返回值,则使用函数,否则可调用过程。若程序中需要返回值,则使用函数,否则可调用过程。本讲稿第二十一页,共七十八页按钮按钮及及图标值图标值如下如下:MsgBox常用参数常用参数说明说明根据用户所选按钮,根据用户所选按钮,函数函数返回值返
17、回值1 17 7!MsgBox,按钮按钮图标图标+缺省按钮缺省按钮+模式模式,标题标题本讲稿第二十二页,共七十八页MsgBox函数示例函数示例MsgBox李钢是不是计算机学院的李钢是不是计算机学院的?,3+32,我要找李钢我要找李钢本讲稿第二十三页,共七十八页5.利用利用文本框文本框和和标签标签控件控件来来输入输入/输出输出数据数据例例4.10编写程序,利用文本框(Text1)输入一个三位的整数,计算这个三位数的逆序数,并用文本框(Text2)和标签控件(Label2)两种方式同时输出运算结果。Private Sub Command1_Click()Dim m%,n%,a%,b%,c%m=Va
18、l(Text1.Text)a=m100 b=(m mod 100)10 c=m mod 10 n=c*100+b*10+a Text2=n 省略了属性名Text Label2=m&的逆序数是:&nEnd Sub输入数据输出数据 本讲稿第二十四页,共七十八页4.2.4字体、字形和字体、字形和颜色色1Font属性组属性组 FontName FontSize FontBold FontItalic FontStrikethru FontUnderline 本讲稿第二十五页,共七十八页长整数2颜色属性及颜色值颜色属性主要有ForeColor(前景色)和BackColor(背景色)两种.RGB函数 RG
19、B(红色值,绿色值,蓝色值)0255 QBColor函数 QBColor(颜色值)015 颜色常量 vbBlack、vbRed、vbGreen、vbYellow、vbBlue、vbMagenta、vbCyan、vbWhite等。颜色值(用十六进制表示的数)&H004080FF&红色值绿色值蓝色值(1)在在属性窗口属性窗口中设置中设置颜色颜色(2)在在代码代码中设置中设置颜色颜色十六进制本讲稿第二十六页,共七十八页4.3选择结构选择结构 VisualBasic用用关系运算关系运算或或逻辑运算逻辑运算来来判断判断条件条件是否是否能够得到满足,并能够得到满足,并根据根据计算的计算的结果结果决定决定程
20、序的程序的不同流程不同流程,实现选择结构的程序设计。实现选择结构的程序设计。VisualBasic用来实现选择的结构化语句是用来实现选择的结构化语句是If条件语条件语句句和和SelectCase语句语句,也可以使用,也可以使用更为简捷的更为简捷的选择函数选择函数来来实现实现较为简单的较为简单的选择功能选择功能。本讲稿第二十七页,共七十八页4.3.1单行结构的单行结构的If语句语句单行结构单行结构If语句的语句的一般形式一般形式:IfThenElse说明:表达式表达式一般为关系表达式关系表达式或逻辑表达式逻辑表达式,也可以是算术表达算术表达式式。若为算术表达式,则表达式的值非零非零时为TRUE,
21、零零为FALSE。语句块语句块可以是一个语句,也可以是多个语句,多个语句之间一多个语句之间一定要用定要用冒号冒号分隔分隔。If ab Then max=a Else max=b本讲稿第二十八页,共七十八页例例4.11计算计算分段函数分段函数的的y值。值。Private Sub Form_Click()Dim x!,y!x=Val(InputBox(请输入一个数x)If x=0 then y=x*x+3 else y=x*x*x+2 Print x=;x;y=;yEnd SubPrivate Sub Form_Click()Dim x!,y!x=Val(InputBox(请输入一个数x)y=x*
22、x*x+2 If xyThenm=xElsem=yEndIf例如例如:求出两个变量求出两个变量x和和y的的大者大者m的块的块语句语句为:为:m=yIfxyThenm=xEndIfIfxyThenm=xElsem=yEndIfIfThenElseEndIf必须换行!m=yIfxyThenm=xEndIf本讲稿第三十页,共七十八页4.3.3多分支的多分支的If语句语句1.多分支多分支If语句的语句的一般形式一般形式:IfThenElseIfThenElseIfThenElseEndIfElseIf 不能分开只能有一个End IfElseIf本讲稿第三十一页,共七十八页2.多分支的多分支的If语句语
23、句的流程图的流程图只能有一个分支得到执行本讲稿第三十二页,共七十八页PrivateSubForm_Click()Dims!,f!s=Val(InputBox(输入里程数(单位:公里)输入里程数(单位:公里))Ifs=3Thenf=5ElseIfs=10Thenf=5+(s-3)*1.2Elsef=5+7*1.2+(s-10)*1.5EndIfPrintTaxi行驶行驶:;s;公里,收费公里,收费:;f;元元!EndSub例例4.13计算计算Taxi收费金额收费金额本讲稿第三十三页,共七十八页4.3.4SelectCase语句语句1.SelectCase语句语句的一般形式:的一般形式:Selec
24、tCaseCaseCaseCaseElseEndSelect可含变量,只能是数值型或字符串型 只能包含常量,且必须与类型相同!Case 与 之间要用空格隔开!四种形式之一:Case 85 Case 71,75,78 Case 60 to 69 Case Is 60可混合使用:Case 78,80 to 85本讲稿第三十四页,共七十八页PrivateSubForm_Click()Dims!,f!s=Val(InputBox(输入里程数输入里程数(单位:公里单位:公里)SelectCasesCaseIs=3f=5CaseIs=10f=5+(s-3)*1.2CaseElsef=5+7*1.2+(s-
25、10)*1.5EndSelectPrintTaxi行驶行驶:;s;公里,收费公里,收费:;f;元元!EndSub例例4.14计算计算Taxi收费金额收费金额2本讲稿第三十五页,共七十八页4.3.5条件结构的嵌套条件结构的嵌套Ifs=3Thenf=5ElseIFs=10Thenf=5+(s-3)*1.2Elsef=5+7*1.2+(s-10)*1.5EndIfEndIfIfs=10ThenIFs=3Thenf=5Elsef=5+(s-3)*1.2EndIfElsef=5+7*1.2+(s-10)*1.5EndIf本讲稿第三十六页,共七十八页IIf函数的使用格式:函数的使用格式:IIf(,)说明:
26、说明:(1)与与If语句语句中的中的相同,相同,用来描述选择条件用来描述选择条件。(2)当)当为真时,函数返回为真时,函数返回的值的值;当当为假时,函数返回为假时,函数返回的值。的值。(3)、可以是任何表达式。可以是任何表达式。例如:例如:Max=IIf(XY,X,Y)它与下面语句等价:它与下面语句等价:IFXYThenMax=XElseMax=Y4.3.6条件函数条件函数1.IIf函数函数本讲稿第三十七页,共七十八页Choose函数使用格式:函数使用格式:Choose(,.)说明:说明:Choose函函数数根根据据的的值值来来决决定定返返回回其其后后中中的的那那个个表表达达式式的的值值。如如
27、果果的的值值为为1,则则返返回回的的值值,如如果果的的值值为为2,则则返返回回的的值值,以以此此类类推。若推。若的值小于的值小于1或大于或大于n,则函数返回,则函数返回Null(空空)。例例如如:根根据据Nop的的值值,得得到到+、-、*,/的的运运算算符符,可可由由下下面面语语句句来实现。来实现。Nop=Int(Rnd*4)+1OP=Choose(Nop,+,-,*,/)2.Choose函数函数f=Choose(Nop,汉族,蒙古族,回族,藏族)本讲稿第三十八页,共七十八页Switch函数形式是:Switch(条件表达式(条件表达式1,条件表达式,条件表达式1为为True时的值时的值,条件表
28、达式,条件表达式2,条件表达式,条件表达式2为为True时的值时的值)3.Switch函数自左至右,只能返回一个值。例如:例如:根据根据Nop的值,得到的值,得到+、-、*,/的运算符,也可由下面的的运算符,也可由下面的语句来实现。语句来实现。Nop=Int(Rnd*4)+1OP=Switch(Nop=1,+,Nop=2,-,Nop=3,*,Nop=4,/)f=Switch(m=1,汉族,m=2,蒙古族,m=3,回族,m=4,藏族)本讲稿第三十九页,共七十八页例例4.17求一元二次方程的根求一元二次方程的根4.3.7选择结构选择结构应用程序举例应用程序举例Private Sub Form_Cl
29、ick()Dim a!,b!,c!,disc!,p!,q!a=Val(InputBox(请输入系数a)b=Val(InputBox(请输入系数b)c=Val(InputBox(请输入系数c)Print 方程:&a&*x*x+(&b&)*x+(&c&)=0 If a=0 Then Print a=0,该方程不是二次方程!Else disc=b*b-4*a*c p=Round(-0.5*b/a,2)q=Round(0.5*Sqr(Abs(disc)/a,2).End IfEnd SubSelect Case disc Case 0 Print 有两个相等的实跟:x1=x2=&p Case Is 0
30、 Print 有两个不相等的实跟:x1=&p+q&_ ,x2=&p-q Case Else Print 有两个共轭复跟:x1=&p&+_&q&!;Print ,x2=&p&-&q&!End Select本讲稿第四十页,共七十八页PrivateSubForm_Click()Dimy%,flagAsBooleany=Val(InputBox(请输入年号请输入年号)IfyMod4=0ThenIfyMod100=0ThenIfyMod400=0Thenflag=TrueElseflag=flaseEndIfElseflag=TrueEndIfElseflag=flaseEndIfPrinty;IIf(
31、Flag,年是闰年年是闰年!,年不是闰年年不是闰年!)EndSub例4.16 闰年问题判断某年是否为闰年的两个条件:该年年号能被4整除,但不能被100整除;该年年号能被400整除。能被4整除能被100整除所有年号能被400整除Private Sub Form_Click()Dim y%,flag As Boolean y=Val(InputBox(请输入年号)flag=(y Mod 4=0)And(y Mod 100 0)flag=flag Or(yMod400=0)Print y;IIf(Flag,年是闰年!,年不是闰年!)End Sub本讲稿第四十一页,共七十八页For循环变量循环变量初值
32、初值to终值终值Step步长步长语句块语句块1ExitFor语句块语句块2Next循环变量循环变量循环体0:初值初值=终值终值=1:可省略可省略=终值终值=0:死循环死循环步长步长4.4循环结构程序设计循环结构程序设计4.4.1.For循环语句循环语句循环次数循环次数一般用于循环次数已知的循环结构一般用于循环次数已知的循环结构本讲稿第四十二页,共七十八页例例:ForI=2To13Step3PrintI;NextIPrintI=;I循环体循环体执行次数执行次数:Int(13-2)/3+1)=4输出输出I的值分别为的值分别为:25811出了循环出了循环输出为输出为:I=14For循环语句循环语句示
33、例示例ForI=2To13Step-3PrintI,NextIPrintI=,I循环体循环体执行次数执行次数:0出了循环出了循环输出为输出为:I=2本讲稿第四十三页,共七十八页例例4.18编程计算:编程计算:S=1+3+5+7+99Dim S%,I%Dim S%,I%S=0S=0 累加前变量累加前变量S S为为0 0For I=1 to 99 Step 2For I=1 to 99 Step 2 S=S+I S=S+INext INext IPrint Print S=S=,S,S 当N=99I=I+2打印SS=0,I=1S=S+I例例4.18的算法流程图的算法流程图For循环循环示例示例4.
34、18注意:注意:在循环体内对循环控制变量可多次引用;但最好不要对其赋值,否则影响原来的循环控制规律。求:求:S=1+2+3+100Dim S%,I%Dim S%,I%S=0S=0 累加前变量累加前变量S S为为0 0For I=1 to 100 For I=1 to 100 Step 1Step 1 S=S+I S=S+INext INext IPrint Print S=S=,S,S 本讲稿第四十四页,共七十八页Private Sub Command1_Click()j=0 For i=1 To 20 Step 2 i=i+3 j=j+1 Print 第;j;次循环i=;i Next i P
35、rint 退出循环后i=;i End Sub补充例题:改变改变循环变量循环变量对循环的对循环的影响影响。没有语句没有语句i=i+3时的循环执行情况:时的循环执行情况:i=1,3,5,7,9,11,13,15,17,19共共10次!次!本讲稿第四十五页,共七十八页例题4.19 通过通过改变改变循环变量循环变量,控制控制循环循环提前结束提前结束。题目:打印出最小的水仙花数(一个三位数,其值等于它的三个数位的值的立方之和,例如:371=33+73+13)。Private Sub Form_Click()Dim m%,a%,b%,c%For m=100 To 999 a=m 100 c=m Mod 1
36、0 b=(m-a*100)10 If m=a3+b3+c3 Then Print m;End If Nextm PrintEnd SubPrivate Sub Form_Click()Dim m%,a%,b%,c%For m=100To 999 a=m 100 c=m Mod 10 b=(m-a*100)10 If m=a3+b3+c3 Then Print m m=1000 End If NextmEnd SubExitForFor m=999 To 100 Step -1本讲稿第四十六页,共七十八页形式形式1:(当型循环):(当型循环)DoWhile语句块语句块1ExitDo语句块语句块2
37、Loop4.4.2DoWhileLoop循环语句循环语句形式形式2:(当型循环):(当型循环)Do语句块语句块1ExitDo语句块语句块2LoopWhile本讲稿第四十七页,共七十八页例例4.20 求两个整数的最大公约数求两个整数的最大公约数Dim n%,m%,r%m=Val(InputBox(m=)n=Val(InputBox(n=)r=m mod nDo While(r 0)m=n n=r r=m mod nLoopPrint 最大公约数最大公约数=,n循环结构循环结构示例示例4.20辗转相减法求最大公约数求最大公约数当 mn时:m=m-n当 nm时:n=n-m 重复操作直到m=n时为止
38、m=n即为最大公约数DoWhilemnm n IfmnThen14 6m=mn8 6Else2 6n=nm2 4EndIf2 2LoopDo r=mmodn m=n n=rLoop While(r0)Print最大公约数最大公约数=,m本讲稿第四十八页,共七十八页4.4.3DoLoopUntil循环语句循环语句形式形式1:(直到型循环):(直到型循环)Do语句块语句块1ExitDo语句块语句块2LoopUntil形式形式2:(直到型循环):(直到型循环)DoUntil语句块语句块1ExitDo语句块语句块2Loop本讲稿第四十九页,共七十八页Private Sub Form_Click()Di
39、m t#,pi#,n&pi=1:n=1:t=1 第第1项项t的的值为值为1 Do n=n+1 从第从第2项项开始累加开始累加 t=IIf(n Mod 2=1,1,-1)/(2*n-1)IIf(nMod2=1,1,-1)与与(-1)(n+1)等价等价 pi=pi+t Loop Until Abs(t)0.000001 Print pi=&pi*4End Sub例例4.21程序运行的结果为:pi=3.14159465358569Until Abs(t)0.000001 本讲稿第五十页,共七十八页(1 1)当当使使用用WhileWhile 构构成成循循环环时时,当当条条件件为为“真真”,则则反反复复
40、执执行循环体行循环体,当条件为,当条件为“假假”,则退出循环。,则退出循环。(2)当当使使用用Until构构成成循循环环时时,当当条条件件为为“假假”,则则反反复复执执行循环体行循环体,直到条件成立,即为,直到条件成立,即为“真真”时,则退出循环。时,则退出循环。(3)在)在循环体循环体内一般应有一个专门用来内一般应有一个专门用来改变条件改变条件表达式中变量的表达式中变量的语句,以语句,以使使随着随着循环循环的执行,的执行,条件条件趋于趋于不成立不成立(或成立),最后达到退(或成立),最后达到退出循环。出循环。(4)语句)语句ExitDo的作用是的作用是退出退出它所在的它所在的循环结构循环结构
41、,它只能用在,它只能用在DO/Loop结构中,并且常常是同结构中,并且常常是同选择结构选择结构一起出现在循环结构中,一起出现在循环结构中,用来实现用来实现当满足当满足某一某一条件条件时时提前退出提前退出循环循环。与与DoLoop语句语句有关的说明:有关的说明:Do没有条件的没有条件的DoLoop语句语句语句块语句块1IfThenExitDo语句块语句块2Loop本讲稿第五十一页,共七十八页WhileWend4.4.4WhileWend语句语句说明说明:与与DoWhile.Loop语句语句实现的循环实现的循环基本相同基本相同,只是只是不能不能用用Exit提前提前退出循环退出循环!例例4.22 判
42、断一个给定的整数是否为素数。Private Sub Form_Click()Dim n%,w%,i%,r%n=Val(InputBox(请输入一个正整数!)i=2:w=0 w=0表示先假定没有数能被表示先假定没有数能被n整除整除 While (w=0 And i=n-1)没有数能整除没有数能整除并且并且i=n-1,继续,继续 r=n Mod i If r=0 Then w=1 在这儿找到一个能整除,在这儿找到一个能整除,w改为改为1 i=i+1 Wend Print n&IIf(w=0,是,不是)&一个素数!End SubWhile (i=n-1)r=n Mod i If r=0 Then w
43、=1:i=n i=i+1Wend 本讲稿第五十二页,共七十八页4.4.5用用Goto语句语句和和If语句语句构成循环构成循环Private Sub Form_Click()Dim x%,s%s=0 abc:x=Val(InputBox(输输入一个数,入一个数,输输入入0结结束程序束程序!)Print x;s=s+x if(x0)Then goto abc Print The total sum is;sEnd Sub例例4.23从键盘输入从键盘输入一组一组数据,以数据,以0作为作为结束结束输入数据的输入数据的标志标志,求这组,求这组数据之和数据之和。语句标号 语句标号 本讲稿第五十三页,共七十
44、八页多重循环多重循环结构结构如果在如果在一个循环内一个循环内完整完整地包含地包含另一个循环结构另一个循环结构,则称为,则称为多重多重循环循环,或,或循环嵌套循环嵌套。例如:。例如:4.4.6循环的嵌套循环的嵌套(1)ForI=1To10.ForJ=3To8.NextJ.NextI(2)ForI=10To80.DoWhilex10.Loop.NextI(3)DoWhilex10.ForJ=2To7.NextJ.Loop(4)DoWhilex=10.Loop本讲稿第五十四页,共七十八页PrintTab(36);九九乘法表九九乘法表Fori=1To9Forj=1To9se=i&j&=&i*jPrin
45、tTab(j-1)*9+1);se;NextjPrintNexti例例4.24:打印九九乘法表:打印九九乘法表.i本讲稿第五十五页,共七十八页Dimn%,Factor%,FirstAsBooleann=InputBox(请输入一个大于请输入一个大于2的整数的整数)First=True:Factor=2第第1个可能的质因素是个可能的质因素是2DoWhilenModFactor=0相同的质因素可能有多个相同的质因素可能有多个PrintIIf(First,n&=&Factor,*&Factor);First=False第第1个已输出个已输出n=n/Factor从整数中分离出这个质因素从整数中分离出这
46、个质因素WendFactor=Factor+1预期的下预期的下1个因素个因素LoopUntiln=1例例4.25:分解分解出出一个正整数一个正整数的的所有所有质因素质因素.输入输入360,输出输出:360=2*2*2*3*3*5本讲稿第五十六页,共七十八页(1)内内循环变量循环变量与与外外循环变量循环变量不能同名不能同名;(2)外循环必须完全包含内循环,外循环必须完全包含内循环,不能交叉不能交叉;(3)不能不能从从循环体外循环体外转向转向循环体内循环体内,也也不能不能从从外循环外循环转向转向内循环内循环.循环嵌套循环嵌套注意事项注意事项:Fori=1To10Forj=1To20NextiNex
47、tjFori=1To10Fori=1To20NextiNexti语法上没问题语法上没问题Fori=1To10Forj=1To20abc:PrintjNextjIfi=8ThenGotoabcNextiFori=1To10Forj=1To20Ifj=8ThenGotoabcNextjabc:PrintiNexti本讲稿第五十七页,共七十八页 此类问题都要使用循环,根据问题的要求,确定循环变量的初此类问题都要使用循环,根据问题的要求,确定循环变量的初值、终值或结束条件及用来表示计数、和、阶乘的变量的初值。值、终值或结束条件及用来表示计数、和、阶乘的变量的初值。4.4.7应用程序举例应用程序举例1.
48、求累加和、连积的问题求累加和、连积的问题1100的5或7的倍数的和 Sum=0 For i=1 To 100 If i Mod 5=0 Or i Mod 7=0 Then Sum=Sum+i End If Next i Print Sum 310的乘积 t=1 For i=3 To 10 t=t*i Next i Print t思考:若把循环体前面置各变量初值的语句放在循环体内,程序运行时会产生什么情况?本讲稿第五十八页,共七十八页例例4.28求求s=n!+(n+1)!+(n+2)!.+m!。正整数。正整数n=nThen从从n!开始求累加和开始求累加和s=s+jcIfi=nThenPrinti
49、&!;ElsePrint+&i&!;EndIfNextiPrint=&sEndSub如:如:8!+9!+10!+11!+12!=522950400本讲稿第五十九页,共七十八页 在若干个数中求最大值,一般先假设一个较小的数为最大值的初值,若无法估计较小的值,则取第一个数为最大值的初值;然后将每一个数与最大值比较,若该数大于最大值,将该数替换为最大值;依次逐一比较。例例4.294.29 随机产生随机产生1010个个100100200200之间的数,求最大值。之间的数,求最大值。Private Sub Command1_Click()Max=100 For i=1 To 10 x=Int(Rnd*1
50、01+100)Print x;IfxMaxThenMax=x Next i Print Print 最大值=;MaxEnd Sub2.2.极值问题极值问题本讲稿第六十页,共七十八页Private Sub Form_Click()Dim i%,x%,m%m=Val(InputBox(输入第一个数)For i=2 To 10 x=Val(InputBox(输入一个数)Print x;If m x Then m=x Next i Print Print Min=&mEnd Sub例例4.30 4.30 从从键盘键盘输入输入1010个数,并求出它们的个数,并求出它们的最小值最小值本讲稿第六十一页,共七