资源描述
Visual Basic程序设计第五章 选择控制结构第六章 循环控制结构1第1页第五章第五章 选择控制结构选择控制结构第 0 节 选择控制结构介绍第一节 单行结构IF语句第二节 块结构IF语句第三节 Select Case语句2第2页选择控制结构介绍l选择控制结构介绍l假如要在多个操作中选择其中一个操作或需要依据条件决定是否执行某操作,就应该用选择控制结构。l选择控制结构包含If语句(条件语句)和Select Case语句(情况语句)两种。3第3页单行结构IF语句 1l一、单分支结构l1、格式:If 条件 Then 语句l说明:l“条件”是由关系表示式或逻辑表示式得到逻辑由关系表示式或逻辑表示式得到逻辑值值(True,False),程序依据其值执行对应操作。l假如“条件”为True,则执行“Then 语句”,不然不做任何操作。4第4页单行结构IF语句 2l例1:从输入两个整数a和b中,比较a和b。假如数a(b)较大,则输出a(b)。假如相等,则输出二者一样大。l练习1:已知两个数x和y,比较它们大小,使得x大于y。If xy Then t=x:x=y:y=t5第5页单行结构IF语句 3l二、双分支结构l2、格式:If 条件 Then 语句1 Else 语句2l说明:l假如“条件”为True,则执行“Then 语句”;“条件”为False,则执行“Else 语句2”。l例2:计算分段函数l单分支结构实现:If x=0 Then y=cos(x)x3+3*x If x0 Then y=sin(x)+sqrt(x*x+1)6第6页单行结构IF语句 4l双分支结构实现:If x0 Then y=sin(x)+sqrt(x*x+1)Else y=cos(x)x3+3*xl练习2:输入两个不相同数a和b,判断其大小,并输出其中大者。(用双分支结构)7第7页单行结构IF语句 5l三、嵌套If语句l例3:计算符号函数 ,程序要求:输入x,输出x和y值。l单分支结构实现:8第8页单行结构IF语句 6l三、嵌套If语句l格式1:If 条件1 Then 语句1 Else If 条件2 Then 语句2 Else 语句39第9页单行结构IF语句 7l三、嵌套If语句l格式2:If 条件1 Then If 条件2 Then 语句1 Else 语句2 Else 语句310第10页单行结构IF语句 8l练习4:依据输入成绩将其转换为成绩等级:大等于85分为优异,大等于60分为合格;小于60分为不及格。格式1格式211第11页单行结构IF语句 9l思索题思索题:输入x、y、z三个不相同不相同数,使得xyz。12第12页块结构IF语句 1l格式:If 条件1 Then 语句块1ElseIf 条件2 Then 语句块2 Else 语句块nEnd If13第13页块结构IF语句 2l说明:l假如“条件1”为True,则执行“语句块1”。不然假如“条件2”True,则执行“语句块2”不然执行“语句块n”。l“语句块”,能够是一个语句,也能够时多个语句。当为多个语句要分行书写;如写在一行中,则各语句间用冒号隔开。14第14页块结构IF语句 3l例4:依据输入成绩将其转换为成绩等级:大等于85分为优异,大等于60分为合格;小于60分为不及格。格式2l例5:依据输入成绩将其转换为成绩等级:大等于85分为优异;大等于75分为良;大等于60分为合格;小于60分为不及格。15第15页块结构IF语句 4l练习5:已知变量strC中存放了一个字符,判断该字符是字母字符、数字字符还是其它字符。If Ucase(strC)=A And Ucase(strC)=0 And strC=9 Then Print strC+是数字字符 Else Print strC+其它字符 End If16第16页块结构IF语句 5l练习6:比较3个不相同不相同整数a、b和c中输出其中大者。17第17页Select Case语句 1l格式:Select Case 测试表示式Case 表示式列表1语句块1Case 表示式列表2语句块2.Case Else语句块nEnd Select18第18页Select Case语句 2l功效:l首先对“测试表示式”求值;l然后,选择匹配一个“表示式列表”,并执行其对应语句块;l假如都没有匹配,则执行Case Else语句块。l说明:l1、“测试表示式”能够是数值(字符串)表示式,通常是变量或常量。19第19页Select Case语句 3l2、表示式列表也称为域值。有3种形式:l表示式1,表示式2 比如:Case 1,3,5+1,7*2l表示式1 TO 表示式2 比如:Case 2 TO 10注:表示式2值要大于表示式1lIs关系运算表示式比如:Case Is=10 和 Case Is 10 And Is=85Print “成绩优异成绩优异 Case Is=75Print “成绩良好成绩良好“Case Is=60Print “成绩合格成绩合格“Case Else Print “补考补考“End Select21第21页Select Case months Case Is=1,3,5,7,8,10,12Print days=31 Case Is=4,6,9,11Print day=30 Case Is=2If years Mod 400=0 or years Mod 4=0 and _years Mod 100 0 Then day=29 Else day=28 End SelectSelect Case语句 5l例2:输入年、月,输出该年该月有几天。Dim years As Integer,months As Integer,days As Integeryears=InputBox(“请输入年份请输入年份”)months=InputBox(“请输入月份请输入月份”)Select Case months Case Is=1,3,5,7,8,10,12Print days=31 Case Is=4,6,9,11Print days=30 Case Is=2If years Mod 400=0 or years Mod 4=0 and _years Mod 100 0 Then day=29 Else day=28 End SelectPrint years&”年年”&month&”月份有月份有”&days&”天。天。”22第22页Select Case语句 6l练习:输入一个字符,存放在变量strC中,判断并输出该字符是字母字符、数字字符还是其它字符。Select Case strC Case a To z,A To ZPrint strC+是字母字符 Case 0 To 9Print strC+是数字字符 Case ElsePrint strC+其它字符 End Select23第23页第六章第六章 循环控制结构循环控制结构第一节 For循环控制结构第二节 While循环控制结构第三节 Do循环控制结构第四节 多重循环24第24页For循环控制结构 1lFor循环控制结构格式:For 循环变量=初值 To 终值 Step 步长语句块1Exit For语句块2Next 循环变量For i=1 To 10 Step 2 Print i;Print “abc”Next iExit For25第25页For循环控制结构 2l说明:l1、Next必须和For配合使用,二者循环变量必须一致!l2、循环体是需要重复执行若干语句行,当然也能够是循环语句。l3、当循环变量值超出终值时,结束循环。l4、步长是循环变量增量,它值能够是正数也能够是负数,但不能是0!如步长为1,可省略。l5、For循环中初值、终值、步长均为数值表示式,但其值并不一定是整数。l6、For循环嵌套层数没有限制。但每个循环中循环变量必须是唯一、而且一致!26第26页For循环控制结构 3l例1、求1+2+3+100值。Dim i As Integer,s As Integer s=0 For i =1 To 100s =s+i Next i Print “s=”;sDim i As Integer,s As Integer s=0 For i =100 To 1 Step -1s =s+i Next i Print “s=”;s27第27页For循环控制结构 4l例2:键盘输入10个数,分别输出正数、负数之和。Dim i As Integer,x As Single Dim ZSum As Single,FSum As Single For i =1 To 10 x=InputBox(“请输入第请输入第”&i&“个数:个数:”)If x0 Then ZSum =ZSum+xElseIf x 0ZSum =ZSum+x Case Is x=2,判断是否为素数。素数是指除了1和它本身之外不能被整除正整数。n=InputBox(“请输入一个大等于请输入一个大等于2正整数正整数”)ISPRIME=TrueFor i =2 To Sqr(n)If n Mod i =0 Then ISPRIME =False Exit For End ifNext iIf ISPRIME Then Print n;”是素数是素数”Else Print n;”不是素数不是素数”End If31第31页For循环控制结构 8l阅读程序2:Dim n As Long,i As Integern=InputBox(“请输入一个大于请输入一个大于3正整数正整数”)For i =2 To Sqr(n)If n Mod i =0 ThenPrint n;“不是素数!不是素数!”Exit For ElseIf n Mod i 0 And i =Int(Sqr(n)ThenPrint n;“是素数!是素数!”End IfNext i32第32页While循环控制结构 1lWhile循环控制结构格式:While 条件 语句块Wendx =5While x 0 s =s +x x =x -1Wend33第33页While循环控制结构 2l注意:l“条件”表示式值,为True(非0值),则执行循环体;为False(值为0),则结束循环,接着执行Wend后语句。l说明:l1、Wend必须和While配合使用。While循环能够嵌套,且嵌套层数没有限制,每个Wend和最近While相匹配。l2、“条件”表示式是关系表示式或逻辑表示式,也能够是常量或变量。l3、循环体中应包含对“条件”表示式值进行修改语句,不然会成为“死循环”!34第34页While循环控制结构 3l例1、求1+2+3+100值。l假如将j=100,那么While循环语句怎样改写?Dim Sum As Integer,j As Integer Sum =0:j =1While j =100 Sum =Sum +j j =j +1WendPrint “Sum=”;Sum35第35页While循环控制结构 4l例2:从键盘输入10个数,分别输出正数、负数之和。Dim Zsum As Single,Fsum As Single,j As Integer Zsum =0:Fsum =0:j =1While j 0 Then Zsum =Zsum +x ElseIf x 0 Then Fsum =Fsum +x End If j =j +1WendPrint “Zsum=”;Zsum,“Fsum=”;Fsum 36第36页While循环控制结构 5l例3:从键盘输入任一正整数,输出该数各位之和。Dim Sum As Integer,j As Integer Sum=0j=InputBox(输入任一正整数输入任一正整数)While j 0 Sum=Sum +j Mod 10 j=j 10WendPrint “该数各位之和为该数各位之和为”;SumDim Sum As Integer,j As String,i As Integer Sum=0j=InputBox(输入任一正整数输入任一正整数)k=Len(j)For i=1 to k Sum=Sum +j Mod 10 j=j 10Next iPrint 该数各位之和为该数各位之和为;Sum37第37页While循环控制结构 6l例4:找出100999之间全部梅花数。所谓梅花数是指:该数各位立方和等于其本身整数。如153=1+5+3,则153是梅花数。38第38页While循环控制结构 7l程序阅读:输入某同学各科考试成绩,求该生平均成绩,当从键盘输入值为-1时,结束成绩输入。Sum=0:n=0 x=InputBox(请输入第请输入第1科成绩:科成绩:)While x -1 Sum=Sum+x n=n+1 x=InputBox(请输入第请输入第&n+1&科成绩:科成绩:)WendIf n 0 Then aver=Sum/n Print aver=;averEnd If39第39页小结 1lFor循环语句和While循环语句比较l循环次数比较:lFor循环中,当决定初值、终值和步长值时,其循环次数就确定了。l循环次数=1+|终值-初值|步长值|lWhile循环中,循环次数由“条件”表示式和循环体内相关语句决定。l设置循环变量改变方式:lFor循环中,循环变量改变方式,是在初值基础上增加步长值。lWhile循环中,循环变量改变方式,非常灵活。40第40页小结 2l结束循环方式比较lFor循环有两种结束循环方式:l一个:当循环变量值超出终值时,结束For循环。l另一个:当出现“Exit For”时,强制结束For循环。lWhile循环只有“条件”表示式为False时,才能退出循环。l总结:当For循环中没有Exit For时,For循环是能够用While循环来替换!41第41页Do循环控制结构 1lDo循环不但能够不按照限定次数执行循环体内语句块,而且能够依据循环条件是True或False决定是否结束循环。lDo语句格式1:Do语句块Exit DoLoop While|Until 条件lDo语句格式2:Do While|Until 条件语句块Exit DoLoop42第42页Do循环控制结构 2lDo语句格式1:Do语句块Exit DoLoop While 条件lDo语句格式1:Do语句块Exit DoLoop Until 条件i=1:j=0Do j=j+i i=i+1Loop While i 5 43第43页Do循环控制结构 3lDo语句格式2:Do While 条件语句块Exit DoLooplDo语句格式2:Do Until 条件语句块Exit DoLoopi=1:j=0Do While i 5 j=j+i i=i+1Loop44第44页Do循环控制结构 4l说明:l1、格式1是先执行循环体,再进行“条件”判断;而格式2是先进行“条件”判断,再执行循环体。所以,格式1循环体最少被执行一次;而格式2循环体可能一次也不执行。lExit Do用来强制退出循环,它通常和If语句配合使用。lWhile和Until都是可省略参数。假如不选,必须在循环体中使用Exit Do强制退出循环,不然会变成死循环。i=1 :j=0Do j=j+i If i=5 Then Exit Do i=i+1Loop45第45页Do循环控制结构 5l例1 假设我国国民生产总值平均以8%递增,问:多少年后能够翻一番?P=1 :n=0Do P=P*1.08 n=n+1Loop While P=2Print n=;n ,P=;P46第46页Do循环控制结构 6l例2 已知公式 ,求近似值,直到最终一项绝对值小于10-6为止。T=1 :n=1 :s=1 :Pi =0Do Pi=Pi +T n=2n+1 :s =-s :T =s/nLoop Until Abs(T)=0.000001Pi=Pi*4Print =;Pi47第47页Do循环控制结构 7l例3 输入十个数,输出最大数和最小数。Dim x As Single,Max As Single,Min As Single Dim n As Integer x=InputBox(请输入要比较数请输入要比较数)Max=x:Min=x:n=1Do x=InputBox(请再输入要比较数请再输入要比较数)If Max x Then Min=x n=n+1Loop While n 10Print 最大数为最大数为 ;Max ,最小数为最小数为 ;MinDim x As Single,Max As Single,Min As Single Dim n As Integer Max=x:Min=x:n=1Do x=InputBox(“请输入第请输入第”&n&个要比较数个要比较数)If Max x Then Min=x n=n+1Loop While n=10Print 最大数为最大数为 ;Max ,最小数为最小数为 ;Min48第48页Do循环控制结构 8l输入某同学各科考试成绩,求该生平均成绩,当从键盘输入值为-1时,结束成绩输入。Dim Sum As Single,aver As Single,n As Integer Sum=0:n=0:aver=0:x=0Do x=InputBox(请输入第请输入第&n+1&科成绩:科成绩:)If x=-1 And n 0 Then aver=Sum/n:Print aver=;aver:Exit Do ElseIf x=-1 And n=0 Then Exit Do End If n=n+1Sum=Sum+xLoopDim Sum As Single,aver As Single,n As Integer Sum=0:n=0:aver=0:x=0 x=InputBox(请输入第请输入第1科成绩:科成绩:)Do While x -1 n=n+1 Sum=Sum+x x=InputBox(请输入第请输入第&n+1&科成绩:科成绩:)LoopIf n 0 Then aver=Sum/n Print aver=;averEnd If49第49页多重循环 1l例1 打印N行如右图所表示三角形。Dim n As Integer,i As Integer Dim j As Integern=InputBox(请输入行数请输入行数n:)For i=1 To n Print Tab(20-i);For j=1 To 2*i-1Print *;Next j PrintNext i50第50页多重循环 2l例2 输出5001000之间全部素数。l(另一个算法)For n=501 To 1000 Step 2 k=Int(Sqr(n):i=2 :ISPRIME=0 While i=3 And n =20 Then terms=falseLoopk=1:Sum=0While k=n s=1 For i=1 To k s=s*i Next i Sum=Sum+s :k=k+1WendPrint 总和为总和为;Sum 52第52页多重循环 4l例4 求1!+(1!+2!)+(1!+2!+3!)+(1!+2!+3!+N!)(3N20)。Dim n As Integer,terms As Integer terms=1Do While terms 0 n=InputBox(请输入一个请输入一个3至至20之间整数之间整数:)If n=3 And n=20 Then terms=0Looptotal=0For p=1 To n Sum=0 For k=1 To p s=1 For i=1 To k s=s*i Next i Sum=Sum+s Next k total=total+SumNext pPrint 总和为:总和为:;total53第53页Dim i As Integer,j As IntegerFor i=500 To 1000 For j=2 To Int(Sqr(i)If i Mod j=0 Then Exit For ElseIf i Mod j 0 And j=Int(Sqr(i)Then Print i End If Next jNext i例2另一个算法l例2 输出5001000之间全部素数。Dim i As Integer,j As IntegerFor i=500 To 1000 For j=2 To i-1 If i Mod j=0 Then Exit For ElseIf i Mod j 0 And j=i-1 Then Print i End If Next jNext i58第58页
展开阅读全文