第5章 选择分支与循环.ppt
第第5章章 选择分支与循环选择分支与循环学习目标:学习目标:u 掌握掌握If 条件语句和条件语句和Select Case选择语句选择语句 u 掌握掌握ForNext和和DoLoop循环语句循环语句 u 掌握两重循环,了解多重循环掌握两重循环,了解多重循环 u 了解了解Exit、End语句语句 u 掌握程序的简单调试方法掌握程序的简单调试方法 第第5章章 算法基础及算法基础及VB基本语句基本语句 教学内容:教学内容:.分支结构与分支结构语句分支结构与分支结构语句 .循环循环结构与循环结构语句结构与循环结构语句 .程序示例程序示例5.1 分支结构与分支结构语句分支结构与分支结构语句u选选择择结结构构:当当设设定定条条件件成成立立时时执执行行某某些些语语句句,条条件件不不成成立立时时则则跳跳过过这这些语句或执行其它的语句。些语句或执行其它的语句。u选选择择结结构构中中要要使使用用选选择择语语句句,有有两两路路分分支支和和多多路路分分支支两两种种情情况况,对对应应的的选选择择语语句句有有If语语句句(两两路路出出口口)和和Select Case语句语句(多路出口多路出口)。返回目录返回目录5.1 分支结构与分支结构语句分支结构与分支结构语句-If If条件语句条件语句条件语句条件语句 1.If Then End if 其中,其中,是一个条件表达式或逻辑表达式是一个条件表达式或逻辑表达式 例如,例如,If Data=90 Then Print 优秀优秀 例例输入一个数,如果是输入一个数,如果是3的的倍数则输出。倍数则输出。Private Sub Form_Click()Dim Data As Integer Data=InputBox(请输入一个值:请输入一个值:)If Data Mod 3=0 Then msgbox Data End if End Sub返回目录返回目录Data是是3的倍数的倍数 Data=90?输出输出“优秀优秀”YesNoData=90?输出输出“优秀优秀”YesNo输出输出“合格合格”输出输出“计算完毕计算完毕”5.1 分支结构与分支结构语句分支结构与分支结构语句-If If条件语句条件语句条件语句条件语句2.If Then Else End if 例如,例如,Dim Data As Integer Data=InputBox(请输入成绩:请输入成绩:)If Data=90 Then Print 优秀优秀 Else Print 合格合格“end if Print 计算完毕计算完毕 上例的上例的If 语句可以改写为:语句可以改写为:If Data 90 Then Print 合格合格 Else Print 优秀优秀 end if返回目录返回目录5.1分支结构与分支结构语句分支结构与分支结构语句-If If条件语句条件语句条件语句条件语句 3.块状块状If语句语句 返回目录返回目录If Then End If 例例 If Then Else End If A=InputBox(“A值值”):B=InputBox(B值值)Print A,B If A B Then T=A:A=B:B=T End If Print A,B 5.1分支结构与分支结构语句分支结构与分支结构语句-If If条件语句条件语句条件语句条件语句4.If语句嵌套语句嵌套 If语句嵌套使用可形成多分支的条件语句结构语句嵌套使用可形成多分支的条件语句结构 If Then ElseIf Then Else End If返回目录返回目录说明:说明:ElseIf之间不要加空格。之间不要加空格。Else和位于其上方的最近的和位于其上方的最近的If配对配对 5.1分支结构与分支结构语句分支结构与分支结构语句示例示例u例例5-1 已知三角形三条边的长度,设计求此三角已知三角形三条边的长度,设计求此三角形面积的程序。形面积的程序。5.15.1分支结构与分支结构语句分支结构与分支结构语句分支结构与分支结构语句分支结构与分支结构语句Select CaseSelect Case选择语句选择语句选择语句选择语句 u语法格式:语法格式:Select Case Case Case Case Else End Selectu功能:根据测试表达式的值,决定程序的流向。功能:根据测试表达式的值,决定程序的流向。返回目录返回目录 值的类型是数值的类型是数值型、字符串型、日期型等,值型、字符串型、日期型等,一旦与某个一旦与某个Case后的后的值相等,则执行这个值相等,则执行这个Case中的中的,完成后执行,完成后执行End Select后的语句。后的语句。如果所有的如果所有的Case后的后的都不与都不与项匹配,项匹配,则执行则执行Case Else后的后的。5.15.1分支结构与分支结构语句分支结构与分支结构语句分支结构与分支结构语句分支结构与分支结构语句Select CaseSelect Case选择语句选择语句选择语句选择语句例例5-2 学生成绩分等学生成绩分等 private sub form_click()Data=InputBox(请输入一个成绩请输入一个成绩,成绩分等成绩分等)Select Case Int(Data/10)Case 10 MsgBox 满分满分,成绩分等成绩分等 Case 9 MsgBox 优秀优秀,成绩分等成绩分等 Case 8 MsgBox 良好良好,成绩分等成绩分等 Case 7 MsgBox 一般一般,成绩分等成绩分等 Case 6 MsgBox 合格合格,成绩分等成绩分等 Case Else MsgBox 不合格不合格,成绩分等成绩分等 End SelectEnd sub单单击击窗窗体体确确定定5.15.1分支结构与分支结构语句分支结构与分支结构语句分支结构与分支结构语句分支结构与分支结构语句Select CaseSelect Case选择语句选择语句选择语句选择语句例例5-3 测试输入的字符测试输入的字符 Char=InputBox(请输入一个字符请输入一个字符,测试测试)Select Case Char Case 0 To 9 MsgBox 字符是数字字符是数字,测试测试 Case a To z MsgBox 字符是小写字母字符是小写字母,测试测试 Case A To Z MsgBox 字符是大写字母字符是大写字母,测试测试 Case Else MsgBox 字符是其它符号字符是其它符号,测试测试End Select用用if语语句改写。句改写。确确定定单单击击窗窗体体5.2 循环语句循环语句u 程序的另一种结构是循环结构程序的另一种结构是循环结构u 循环结构作用是重复执行一段程序循环结构作用是重复执行一段程序u 循环是有条件的、次数是有限的循环是有条件的、次数是有限的u VB的循环语句:直到型循环与当型循环。的循环语句:直到型循环与当型循环。u 应用最多的:应用最多的:ForNext与与Do WhileLoop返回目录返回目录5.2 循环语句循环语句DoLoop循环循环 1.当型循环当型循环 返回目录返回目录Do While 循环体循环体Loop Do 循环体循环体Loop While 条件表达式条件表达式成立?成立?循环体循环体NoYes条件表达式条件表达式成立?成立?循环体循环体NoYes先判断后执行先判断后执行 先执行后判断先执行后判断特点:条件表达式特点:条件表达式成立执行成立执行循环体内容循环体内容 5.2 循环语句循环语句DoLoop循环循环 2.直到型循环直到型循环 返回目录返回目录Do Until 循环体循环体Loop Do 循环体循环体Loop Until 特点:条件表达式特点:条件表达式不成立执行不成立执行循环体内容循环体内容 先判断后执行先判断后执行 条件表达式条件表达式成立?成立?循环体循环体NoYes先执行后判断先执行后判断条件表达式条件表达式成立?成立?循环体循环体NoYes5.2 循环语句循环语句DoLoop循环循环 例例5-3 设计采用欧几里德算法求解两个自然数设计采用欧几里德算法求解两个自然数的最大公约数的程序。的最大公约数的程序。步骤步骤:1.输入两个自然数输入两个自然数M、N;2.求求M除以除以N的余数的余数R;3.使使M=N,即用即用N代换代换M;4.使使N=R,即用即用R代换代换N;5.若若R0,则重复执行步骤则重复执行步骤2、3、4,否则转步骤否则转步骤6;6.输出输出M,M即为即为M和和N的最大公约数。的最大公约数。5.2 循环语句循环语句ForNext循环循环 uForNext循环一般应用于循环次数已知的场合循环一般应用于循环次数已知的场合 For =初值初值 To 终值终值 Step 步长步长 语句块(循环体)语句块(循环体)Next 循环变量循环变量 u工作原理工作原理 返回目录返回目录循环变量循环变量=初值初值循环变量超出范围?循环变量超出范围?循环体循环体循环变量增加一个步长循环变量增加一个步长NoYesStep缺省为缺省为 1 5.2 循环语句循环语句ForNextForNext循环循环循环循环 例例5-4 求求1+3+5+7+99Private Sub Form_Click()Dim Sum As Integer,I As Integer Sum=0 保存累加和,先清零保存累加和,先清零 For I=1 To 99 Step 2 Sum=Sum+I Next I MsgBox 1+3+5+99=&Sum,求和求和End Sub 返回目录返回目录 本例的特点是数据本例的特点是数据项之间相差项之间相差2,即即Step的值为的值为2 思考:思考:例中当输出对话框出现时,例中当输出对话框出现时,I 的值是多少?的值是多少?For语句能不能改写成语句能不能改写成For I=99 To 1 Step-2?5.2 循环语句循环语句ForNext循环循环例例5-5 从一个由字母、数字组成的字符串中找出所从一个由字母、数字组成的字符串中找出所有大写字母并逆序输出的程序。有大写字母并逆序输出的程序。重点:重点:从字符串中逐个字符判定该字符是否是大写字母从字符串中逐个字符判定该字符是否是大写字母知识点:知识点:1.函数函数len,mid 2.连接运算符连接运算符&5.2 循环语句循环语句示例示例 例例 Sum=1+2+3+N 求求Sum不超过不超过10000的最大整数值和数据项数的最大整数值和数据项数N Private Sub Form_Click()Dim Sum,N As Integer N=0 开始时项数为开始时项数为0 Sum=0 保存累加值的变量保存累加值的变量Sum清零清零 Do While Sum=10000 N=N+1 Sum=Sum+N Loop Sum=Sum-N N=N-1 Print Sum=;Sum,N=;N End Sub当当Sum的值超出的值超出10000时循环才时循环才终止。因此终止。因此Sum值要减去多加的值要减去多加的一个一个N;而在循环过程中,而在循环过程中,N也也被多加了一个被多加了一个1,需要减去。,需要减去。5.2 循环语句循环语句两重循环两重循环两重循环两重循环 两重循环两重循环:在一个循环的循环体中还包含另一个循环:在一个循环的循环体中还包含另一个循环例例 在窗体上显示一个几何图形在窗体上显示一个几何图形Private Sub Form_Click()Dim I,J As Integer I、J为循环变量为循环变量 For I=1 To 8 I 控制行数控制行数(8行行)Print Tab(10-I);定每行定每行*的起始位的起始位 For J=1 To I J 控制每行输出控制每行输出I个个*Print*;Next J Print 换行换行 Next IEnd Sub注意:两重循环不能形成交叉注意:两重循环不能形成交叉 5.2 循环语句循环语句两重循环两重循环两重循环两重循环两重循环两重循环:在一个循环的循环体中还包含另一个循环:在一个循环的循环体中还包含另一个循环例例输出乘法口诀表输出乘法口诀表Private sub form_click()for i=1 to 9 I 控制行数控制行数(9行行)for j=1 to i J 控制每行输出控制每行输出I个值(个值(两两乘两两乘积积)Print i;*;j;=;i*j;next j print 打印换行打印换行 next IEnd sub5.2 循环语句循环语句两重循环两重循环两重循环两重循环例例5-6一个模拟摇奖程序。一个模拟摇奖程序。重点:产生随机数。重点:产生随机数。知识点:函数知识点:函数rnd 产生下限产生下限上限范围之间的随机数表达式:上限范围之间的随机数表达式:int(上限上限-下限下限+1)*rnd+下限下限)5.3程序示例程序示例5-8编写一个按月收入额计个人收入调节税的应用编写一个按月收入额计个人收入调节税的应用程序。程序。知识点:知识点:选择结构选择结构5.3程序示例程序示例例例5-9编写程序,找出所有三位水仙花数。所谓水编写程序,找出所有三位水仙花数。所谓水仙花数,是指各位数字的立方和等于该数本身。仙花数,是指各位数字的立方和等于该数本身。重点:重点:计算出某位三位数中的各位数字,即百位、十计算出某位三位数中的各位数字,即百位、十位、个位。位、个位。5.3程序示例程序示例例例3.20 判断一个正整数是否为素数判断一个正整数是否为素数(质数质数)N=InputBox(请输入一个正整数请输入一个正整数,验证素数验证素数)For I=2 To N-1 If N Mod I=0 Then Exit For End If Next I If I=N Then MsgBox N&是素数是素数,验证素数验证素数 Else MsgBox N&不是素数不是素数,验证素数验证素数 End If 素数素数:一个正整数:一个正整数N除了能被除了能被1和自身和自身所整除外,不能被其它任何数所整除所整除外,不能被其它任何数所整除。其他语句其他语句ExitExit与与与与EndEnd 1.Exit语句语句Exit Do:跳出跳出DoLoop循环循环Exit For:跳出跳出ForNext循环循环返回目录返回目录其他语句其他语句ExitExit与与与与EndEnd 2.End语句语句uEnd:终止程序的运行终止程序的运行uEnd Sub:终止一个过程;终止一个过程;uEnd Function:终止函数过程终止函数过程uEnd If:终止条件语句终止条件语句uEnd Type:终止类型声明终止类型声明uEnd Select:终止情况语句终止情况语句uEnd Property:终止属性过程终止属性过程uEnd With:终止终止With语句语句例如:例如:Private Sub Command1_Click()EndEnd Sub