第4章基本控制结构X.ppt
第第4章基本控制结构章基本控制结构X4.1 4.1 顺序结构顺序结构概念:概念:顺序结构程序执行的顺序按照语句书写顺序从前往后执行。顺序结构程序执行的顺序按照语句书写顺序从前往后执行。顺序结构程序中每条语句只执行一次。顺序结构程序中每条语句只执行一次。顺序结构程序一般用于解决简单问题。顺序结构程序一般用于解决简单问题。顺序结构程序中使用最多的是赋值语句。顺序结构程序中使用最多的是赋值语句。赋值语句赋值语句 :形式形式:变量名表达式变量名表达式 对象对象.属性表达式属性表达式 功能:功能:将表达式的值赋值给变量名或指定对象的属性。将表达式的值赋值给变量名或指定对象的属性。一般用于给变量赋值或对控件设定属性值。一般用于给变量赋值或对控件设定属性值。4.1.1 4.1.1 数据输出的基本方法数据输出的基本方法1.1.调用窗体或图片框的调用窗体或图片框的PrintPrint方法方法 Print方法的一般格式:方法的一般格式:对象名对象名.Print,|;说明:说明:对象名对象名.可以是窗体名、图片框名,也可是立即窗可以是窗体名、图片框名,也可是立即窗口口“Debug”。若省略对象,则表示在当前窗体上输出。若省略对象,则表示在当前窗体上输出。在在2.3节窗体对象的方法中对节窗体对象的方法中对Print方法做了详细的介绍。方法做了详细的介绍。用用Print方法在图片框和立即窗口对象中输出与在窗体对象方法在图片框和立即窗口对象中输出与在窗体对象中输出完全相同。中输出完全相同。2.2.利用标签(利用标签(LabelLabel)输出结果)输出结果4.1.1 4.1.1 数据输出的基本方法数据输出的基本方法3.3.调用调用MsgBox过程过程函数形式函数形式:变量变量%=MsgBox(提示提示,按钮按钮图标图标+缺省按钮缺省按钮+模式模式,标题,标题)过程形式过程形式:MsgBox 提示提示,按钮按钮图标图标+缺省按钮缺省按钮+图标标题提示信息命令按钮说明:说明:“标题标题”和和“提示提示”与与InputBox函数中对应函数中对应的参数相同;的参数相同;“按钮图标按钮图标+缺省按钮缺省按钮+模式模式”是整型表是整型表达式,决定信息框按钮数目、出现在信息框上的达式,决定信息框按钮数目、出现在信息框上的图标类型及操作模式图标类型及操作模式(见表见表4.1)若程序中需要返回值,则使用函数,否则可若程序中需要返回值,则使用函数,否则可调用过程。调用过程。按钮及图标值如下按钮及图标值如下:根据用户所选按钮,函数返根据用户所选按钮,函数返回回1717的整数值,其含义的整数值,其含义如下表如下表:(表(表4.2)4.2)4.1.2 4.1.2 提供数据的基本方法提供数据的基本方法1.1.利用文本框提供数据利用文本框提供数据 优点:可以对输入的数据检查修改。优点:可以对输入的数据检查修改。2.2.利用赋值语句提供数据利用赋值语句提供数据3.3.利用利用InputBoxInputBox函数提供数据函数提供数据 一般一般 InputBoxInputBox函数用在赋值语句中用于给函数用在赋值语句中用于给变量提供数据。变量提供数据。缺省值缺省值标题题标题题提示提示1.InputBox函数函数变量名变量名=InputBox$(,)其中其中:提示提示 提示信息提示信息,标题标题 标题区显示标题区显示,缺省缺省输入区缺省值输入区缺省值 有有$返回字符类型返回字符类型,否则为数值类型否则为数值类型.例如,要在屏幕上显示如下的对话框例如,要在屏幕上显示如下的对话框:例如:有下列语句如下例如:有下列语句如下:Dim strName As String*40,strS1 As String*40 strS1=“请输入你的姓名请输入你的姓名”+Chr(13)+Chr(10)+“然后单然后单击确定击确定”strName=InputBox$(strS1,“输入框输入框”,100,100)当键盘输入当键盘输入“王晓明王晓明”后后,变量变量strName获得键盘输入的值获得键盘输入的值.缺省值缺省值标题题标题题提示提示4.2 4.2 选择结构选择结构概念:概念:选择结构程序执行的顺序按照语句书写顺序从选择结构程序执行的顺序按照语句书写顺序从前往后执行,当遇到分支语句时会改变程序的执前往后执行,当遇到分支语句时会改变程序的执行方向。行方向。选择结构程序中每条语句可能执行一次,也可选择结构程序中每条语句可能执行一次,也可能不执行。能不执行。选择结构程序一般用于解决判断问题。选择结构程序一般用于解决判断问题。选择结构程序中使用最多的是条件测试语句。选择结构程序中使用最多的是条件测试语句。4.2 4.2 条件测试语句条件测试语句1.1.IfIfThenThen语句语句(单分支结构单分支结构)If If Then Then 语句块语句块 End IfEnd If 或或 If If Then Then 例例:已知两个数已知两个数x x和和y y,比较它们的大小,比较它们的大小,使得使得x x大于大于y.y.If xy ThenIf xy Then t=x:x=y:y=t t=x:x=y:y=t End If End If 或或 If xy Then t=x:x=y:y=tIf xy Then t=x:x=y:y=t4.1 4.1 条件测试语句条件测试语句2.If2.IfThenThenElseElse语句语句(双分支结构双分支结构)If If Then Then 1 Else Else 2 End If End If If If Then Then Else Else 2 双分支选择结构执行过程双分支选择结构执行过程 4.2 4.2 条件测试语句条件测试语句例如:输出例如:输出x,yx,y两个中值较大的一个值。两个中值较大的一个值。IF XY ThenIF XY Then Print X Print XElseElse Print Y Print YEnd IfEnd If也可以写成如下的单行形式:也可以写成如下的单行形式:IF XY Then Print X Else Print YIF XY Then Print X Else Print Y4.2 4.2 条件测试语句条件测试语句3.If3.IfThenThenElseIfElseIf语句语句(多分多分支结构支结构)形式形式:If If Then1 Then 1 ElseIf ElseIf Then2Then 2 Else Else 语句块语句块 n+1 n+1 End If End If4.2 4.2 条件测试语句条件测试语句 例例3.13.1:输入一学生成绩,评定其等级。方法是:输入一学生成绩,评定其等级。方法是:9010090100分分为为“优秀优秀”,80898089分为分为“良好良好”,70797079分为分为“中等中等”,60696069分为分为“及格及格”,6060分以为分以为“不合格不合格”使用使用IFIF语句实现的程序段如下:语句实现的程序段如下:If x=90 thenIf x=90 then Print Print 优秀优秀 ElseIf x=80 ThenElseIf x=80 Then Print Print 良好良好 ElseIf x=70 Then ElseIf x=70 Then Print Print 中等中等 ElseIf x=60 Then ElseIf x=60 Then Print Print 及格及格 Else Else Print Print 不及格不及格 End IfEnd If4.2 4.2 条件测试语句条件测试语句4.Select Case4.Select Case语句(情况语句)语句(情况语句)形式:形式:Select Case Select Case 变量或表达式变量或表达式Case Case 表达式列表表达式列表1 1语句块语句块1 1Case Case 表达式列表表达式列表2 2语句块语句块2 2Case ElseCase Else语句块语句块n+1n+1End SelectEnd Select数值型或字符串表达式数值型或字符串表达式4.2 4.2 条件测试语句条件测试语句 说明:说明:与:与 同类型的下面四种形式之一:同类型的下面四种形式之一:表达式表达式 A+5A+5 一组枚举表达式一组枚举表达式(用逗号分隔用逗号分隔)2,4,6,82,4,6,8 表达式表达式1 To 1 To 表达式表达式2 2 60 to 10060 to 100Is Is 关系运算符表达式关系运算符表达式 Is 60Is 604.2 4.2 条件测试语句条件测试语句例如:将例例如:将例4.1 4.1 使用使用select caseselect case.语句实现的程序段如下语句实现的程序段如下:Select Case x Select Case x Case 90 to 100 Case 90 to 100 Print Print 优秀优秀 Case 80 to 89 Case 80 to 89 Print Print 良好良好 Case 70 to 79 Case 70 to 79 Print Print 中等中等 Case 60 to 69 Case 60 to 69 Print Print 及格及格 Case Else Case Else Print Print 不及格不及格 End SelectEnd Select4.2 4.2 条件测试语句条件测试语句5.5.选择结构的嵌套选择结构的嵌套下面是两种正确的嵌套形式:下面是两种正确的嵌套形式:(1 1)IF IF Then 1 Then .IF IF Then2 Then Else Else .End If End If .Else Else .IF IF Then3 Then .Else Else .End If End If .End IF End IF(2 2)IF IF Then 1 Then .Select Case Select Case Case Case IF IF Then2 Then Else Else .End If End If Case Case.End Select End Select .End IFEnd IF4.2 4.2 条件测试语句条件测试语句 注意:注意:只只要要在在一一个个分分支支内内嵌嵌套套,不不出出现现交交叉叉,满满足足结结构构规规则则,其嵌套的形式将有很多种,嵌套层次也可以任意多。其嵌套的形式将有很多种,嵌套层次也可以任意多。对于多层对于多层IFIF嵌套结构中,要特别注意嵌套结构中,要特别注意IFIF与与ElseElse的配对的配对关系,一个关系,一个ElseElse必须与必须与IFIF配结,配对的原则是:在写含有配结,配对的原则是:在写含有多层嵌套的程序时,建议使用缩进对齐方式,这样容易阅多层嵌套的程序时,建议使用缩进对齐方式,这样容易阅读和维护。读和维护。【例例4.14.1】将输入文本框中的所有小写字母转换成大写字母,将输入文本框中的所有小写字母转换成大写字母,并将一些特殊符号变成等价的字符串,如并将一些特殊符号变成等价的字符串,如DLRDLR表示表示$、ATAT表示表示、0/00/0表示、表示、BPTBPT表示表示#、ANDAND表示表示&等。可以在等。可以在KeyPressKeyPress事件中事件中修改文本框控件的缺省操作,使它能在用户输入这些字符时进修改文本框控件的缺省操作,使它能在用户输入这些字符时进行相应修改。行相应修改。Private Sub Text1_KeyPress(KeyAscii As Integer)Private Sub Text1_KeyPress(KeyAscii As Integer)Dim s As StringDim s As StringDim ch As String Dim ch As String 1 1 s=s=$#%&$#%&ch=Chr(KeyAscii)ch=Chr(KeyAscii)If InStr(S,ch)Then If InStr(S,ch)Then KeyAscii=0 KeyAscii=0 Else Else4.2 4.2 条件测试语句条件测试语句 KeyAscii=Asc(Ucase(ch)KeyAscii=Asc(Ucase(ch)Exit Sub Exit SubEnd IfEnd IfSelect Case chSelect Case ch Case Case$:Text1.SelText=:Text1.SelText=DLRDLR Case Case#:Text1.SelText=:Text1.SelText=BPTBPT Case Case%:Text1.SelText=:Text1.SelText=0/00/0 Case Case&:Text1.SelText=:Text1.SelText=ANDAND Case Case :Text1.SelText=:Text1.SelText=ATAT End SelectEnd SelectEnd SubEnd Sub4.3 4.3 循环语句循环语句4.3.1 4.3.1 循环结构循环结构 1.For1.For循环语句循环语句 (一般用于循环次数已知一般用于循环次数已知)形式:形式:For For 循环变量初值循环变量初值 to to 终值终值 Step Step 步长步长 语句块语句块Exit ForExit For 语句块语句块 Next Next 循环变量循环变量 0 0 初值初值 终值终值 =1=1 时时,可可省略省略0 终值终值=0 =0 死循环死循环 步长步长4.3.2 4.3.2 循环语句循环语句循环次数循环次数例例:For I=2 To 13 Step 3:For I=2 To 13 Step 3 Print I,Print I,Next I Next I Print Print“I=I=“,I ,I 循环执行次数循环执行次数 :4 4输出输出I I的值分别为的值分别为:2 5 8 11 2 5 8 11 出了循环输出为出了循环输出为:I=14:I=144.3 4.3 循环语句循环语句例例4.2 4.2 编程计算:编程计算:S=1+2+3+S=1+2+3+100+100Dim S%,I%Dim S%,I%S=0 S=0 累加前变量累加前变量S S为为0 0For I=1 to 100 For I=1 to 100 S=S+I S=S+INext INext IPrint S=,S Print S=,S 当N=100N=N+1打印SS=0,N=1S=S+N【例例4.34.3】求阶乘求阶乘n n!4.3 4.3 循环语句循环语句 编写程序代码编写程序代码。Private Sub Command1_Click()Private Sub Command1_Click()Dim n As Integer,i As Integer Dim n As Integer,i As Integer Dim R As Long Dim R As Long R=1 R=1 n=val(text1.text)n=val(text1.text)If n=0 Then If n=0 Then Label2.Caption=Label2.Caption=请输入正整数!请输入正整数!Exit Sub Exit Sub 结束过程结束过程 End ifEnd if For i=1 To n For i=1 To n R=R*i R=R*i Next i Next i Label2.Caption=Str(n)+!=+Str(R)Label2.Caption=Str(n)+!=+Str(R)End SubEnd Sub4.3 4.3 循环语句循环语句4.3 4.3 循环语句循环语句3.2.2 Do3.2.2 DoLoopLoop循环语句循环语句 形式形式1 1:(当型循环):(当型循环)Do While|Until Do While|Until 语句块语句块 Exit DoExit Do 语句块语句块 LoopLoop4.3 4.3 循环语句循环语句形式形式2 2:(直到循环)直到循环)Do Do 语句块语句块 Exit DoExit Do 语句块语句块Loop While|Until Loop While|Until 4.3 循环语句循环语句条 件语句块语句块TFExit Do条 件语句块语句块TFExit Do Do UntilDo UntilLoopLoop执行过程执行过程 DoDoLoop Loop UntilUntil执行过程执行过程 4.3 循环语句循环语句说明:说明:(1 1)当当使使用用WhileWhile 构构成成循循环环时时,当当条条件件为为“真真”,则反复执行循环体,当条件为则反复执行循环体,当条件为“假假”,则退出循环。,则退出循环。(2 2)当当使使用用Until Until 构构成成循循环环时时,当当条条件件为为“假假”,则反复执行循环体,直到条件成立,为则反复执行循环体,直到条件成立,为“真真”时,则退出循环时,则退出循环。(3 3)在在循循环环体体内内一一般般应应有有一一个个专专门门用用来来改改变变条条件件表表达达式式中中变变量量的的语语句句,以以使使随随着着循循环环的的执执行行,条条件件趋趋于于不不成成立立(或或成成立立),最后达到退出循环。,最后达到退出循环。(4 4)语句)语句Exit DoExit Do的作用是退出它所在的循环结构,它的作用是退出它所在的循环结构,它只能用在只能用在DO/LoopDO/Loop结构中,并且常常是同选择结构一起出现在结构中,并且常常是同选择结构一起出现在循环结构中,用来实现当满足某一条件时提前退出循环循环结构中,用来实现当满足某一条件时提前退出循环。【例例3.53.5】用用DoDoLoopLoop循环结构实现求和循环结构实现求和sum=1+2+3+sum=1+2+3+100+100。编写代码如下:编写代码如下:解法一:采用当型循环解法一:采用当型循环Do WhileDo WhileLoopLoopPrivate Sub Command1_Click()Private Sub Command1_Click()Dim i As Integer,sum As Integer Dim i As Integer,sum As Integer i=1 i=1 计数器初值置为计数器初值置为1 1 sum=0 sum=0 累加器初值置为累加器初值置为0 0 Do While i=100 Do While i100 Do Until i100 sum=sum+i sum=sum+i i=i+1 i=i+1 Loop Loop Label2.Caption=Str(sum)Label2.Caption=Str(sum)End SubEnd Sub4.3 循环语句循环语句例(补充)例(补充)求两个整数的最大公约数、最小公倍数求两个整数的最大公约数、最小公倍数Dim n%,m%,nm%,r%Dim n%,m%,nm%,r%m=Val(InputBox(m=)m=Val(InputBox(m=)n=Val(InputBox(n=)n=Val(InputBox(n=)nm=n*mnm=n*mIf mn Then t=m:m=n:n=tIf mn Then t=m:m=n:n=t r=m mod n r=m mod n Do While(r 0)Do While(r 0)m=n m=n n=r n=r r=m mod n r=m mod n Loop LoopPrint Print 最大公约数最大公约数=,n =,n Print Print 最小公倍数最小公倍数=,nm/n=,nm/n 算法流程图算法流程图4.3 循环语句循环语句 3.2.4 3.2.4 循环的嵌套循环的嵌套多重循环结构多重循环结构 如果在一个循环内完整地包含另一个循环结构,如果在一个循环内完整地包含另一个循环结构,则称为多重循环,或循环嵌套,嵌套的层数可以根据需要则称为多重循环,或循环嵌套,嵌套的层数可以根据需要而定,嵌套一层称为二重循环,嵌套二层称为三重循环。而定,嵌套一层称为二重循环,嵌套二层称为三重循环。上上面面介介绍绍的的几几种种循循环环控控制制结结构构可可以以相相互互嵌嵌套套,下下面面是几种常见的二重嵌套形式:是几种常见的二重嵌套形式:4.2 循环语句循环语句(1 1)For I=For I=.For J=For J=.Next J Next J .Next I Next I(2 2)For I=For I=.Do Do While/Until While/Until.Loop Loop .Next I Next I(3 3)Do WhileDo While.For J=For J=.Next J Next J .LoopLoop(4 4)Do While/UntilDo While/Until.Do Do While/Until While/Until.Loop Loop .Loop Loop4.2 循环语句循环语句例如:打印九九乘法表例如:打印九九乘法表.For i=1 To 9For i=1 To 9 For j=1 To 9 For j=1 To 9 se=i&j&=&i*j se=i&j&=&i*j Picture1.Print Tab(j-1)*9+1);se;Picture1.Print Tab(j-1)*9+1);se;Next j Next j Picture1.Print Picture1.Print Next i Next i【例例4.74.7】求求130130间的全部素数。间的全部素数。分析:素数是只能被分析:素数是只能被1 1和它本身整除的正整数。和它本身整除的正整数。例如,例如,1717是一个素数,它只能被是一个素数,它只能被1 1和和1717整除。素数又成为质数。整除。素数又成为质数。Private Sub Command1_Click()Private Sub Command1_Click()Dim m As Integer,k As Integer,i As Integer Dim m As Integer,k As Integer,i As Integer Dim j As Long,flag As Long Dim j As Long,flag As Long j=0 j=0 For m=1 To 30 Step 2 For m=1 To 30 Step 2 k=Int(Sqr(m)k=Int(Sqr(m)flag=0 flag=0 For i=2 To k For i=2 To k if m Mod i=0 Then if m Mod i=0 Then flag=1 flag=1 flag=1 flag=1表示表示m m不是素数不是素数 Exit forExit for End if End if 窗体上命令按钮窗体上命令按钮Command1Command1的的ClickClick事件代码如下事件代码如下:Next iNext iIf flag=0 Then If flag=0 Then 此时此时flag=0flag=0表示表示m m是素数是素数 j=j+1j=j+1 If j Mod 4=0 Then If j Mod 4=0 Then 使得每行输出使得每行输出4 4个素数个素数 Print Print“”+str(m)+str(m)Else Else Print +Str(m);Print +Str(m);End If End If End If End If Next m Next mEnd SubEnd Sub