资源预览内容
第1页 / 共46页
第2页 / 共46页
第3页 / 共46页
第4页 / 共46页
第5页 / 共46页
第6页 / 共46页
第7页 / 共46页
第8页 / 共46页
第9页 / 共46页
第10页 / 共46页
亲,该文档总共46页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第5章 选择结构程序设计,VB中提供了三种用来实现选择结构的流程控制语句,即: 块结构条件语句IfThenEnd If 多分支条件语句ElseIf 多分支选择语句Select CaseEnd Select,5.1 块if语句 块结构if语句语法格式如下:,块结构if语句语法格式如下: If Then Else End If 其中为必选项,它是一个逻辑值的表达式,其返回结果必须是True或False。对于数值表达式,VB将0作为False,非0作为True 来处理;对于字符串表达式,VB只允许出现包含数字的字符串,当字符串中的数字值为0时,则认为是False,否则认为是True。,说明: 说明: 1整个块结构必须以If开始,以End If结束。 2块结构If 语句中Then后面的语句不能与其写在同一行上,否则,必须加上分隔符。 3块结构中的是可以省略的。 4.在块结构中,If后面显式的给出了判断条件,Else后面虽然没有显式的给出一个条件,但相当于存在一个与If部分相反的隐含条件。,块结构If 语句的简单形式: If Then Else 如:If X0 Then Print Print -X If X0 Then Print 简单的块结构If语句解决是“二选一”的两分支选择问题。在实际应用中,经常会遇到“多分支”选择的程序,即从多种情况中选择执行其中一种情况,这时,就要使用块if语句的嵌套。,5.2 块if语句的嵌套 块结构If语句可以嵌套,即在上述结构中的和部分仍然可以包含另外一个块结构If语句。 例如,下面就是一个简单的块结构嵌套的语句。 If Then If Then Else End If Else End If,这个语句就是在块结构的If部分嵌套了另外一个块结构。执行该语句时,首先判断是否成立,如果成立,则再判断是否成立,如果成立,则执行,否则执行;如果不成立,则执行。 当然,在Else部分也可以嵌套另外的块If结构,If和Else部分也可以同时嵌套。,说明: 1如果存在嵌套时,语句中的每一个Else必须和一个If相对应,应避免产生混乱。在书写时,可以将同一层的If子句和Else子句左对齐,内层的各语句块相对于外层向右缩进若干空格,以使程序结构更加清楚,便于阅读和查错。 2每一个块结构都必须以If开始,以End If结束。 3利用块If语句的嵌套可以解决“多分支”选择的问题。,5.3 ElseIf语句 格式: If 条件1 then 语句块1 ElseIf 条件2 then 语句块2 Else 语句块n+1 End If,格式说明: 1可以放置任意多个ElseIf子句。 2关键字ElseIf中间没有空格,不能写成Else If。 功能:依次判断条件,如某一条件成立,则执行其下面的语句块;如果所有条件均不成立,则执行Else后面的语句。在相应语句块执行完后,会跳过End If,执行其后面的语句。,功能说明: 1不管有几个ElseIf子句,程序执行完一个语句块后,其余ElseIf子句不再执行。 2当多个ElseIf子句中的条件都成立时,只执行第一个条件成立的子句中的语句块。因此,在使用ElseIf语句时,要特别注意各判断条件的前后次序。 ElseIf语句可以用来处理当条件不成立时又内嵌块If语句的情形,以使程序简化易写。,格式: Select Case 表达式 Case 取值1 语句块1 Case 取值2 语句块2 Case 取值n 语句块n Case Else 语句块n+1 End Select,格式说明: 1“测试表达式”可以是数值表达式或字符串表达式。 2“表达式列表”与“测试表达式”的类型必需相同。 3“表达式列表”由表5-1所示形式的表达式组成。 4当使用多个表达式组成列表时,表达式与表达式之间要用英文逗号“,”隔开。,形式示例说明 (1)表达式 Case 100+a 数值或字符串表达式 (2)一组用逗号分隔的枚举值 Case 2,4,6,8 测试表达式的值等于2,4,6,8之一 (3)表达式1 To表达式2 Case 1 To 10 1 测试表达式 10 (4)Is 关系运算符表达式 Case Is 20 测试表达式 20,功能: 根据“测试表达式”的值,选择第一个符合条件的语句块执行。 Select Case语句的执行过程是:先求“测试表达式”的值,然后顺序测试该值符合哪一个Case子句中情况,如果找到了,则执行该Case子句下面的语句块,然后执行End Select后面的语句;如果没找到,则执行Case Else后面的语句块,然后执行End Select后面的语句。,(三)循环程序结构,在编程时,常常需重复执行一组语句,这可通过循环结构来实现。VB中提供了两种类型的循环语句:一种是计数循环语句;另一种是条件循环语句。,格式:For 循环变量 = 初值 To 终值 Step 步长 Next 循环变量,1、ForNext语句(计数循环),说明: 循环变量必须为数值型。 循环的初值、终值和步长都是数值表达式。其中,增量参数可正可负。如果没有设置step,则增量默认为1。 Next是循环终端语句,在Next后面的循环变量与For中的循环变量必须相同。当循环是单层循环时,Next后面的循环变量可以不写。,例:求1+2+3+100。,sum=0 For i=1 to 100 sum=sum+i Next,例:找出所有小于50的正整数中等于7的倍数的数。,For i=7 to 50 step 7 print i Next,练习:1、编写程序求 S=20!的值 2、编写程序求 S=12+22+32+n2 (其中n的值由用户输入),作业:要求用 ForNext语句编写以下程序: 1、计算Y=A!+B!+C!的值,其中A=6,B=8,C=5。 2、求半径从1到n的n个圆面积之和 (其中n的值由用户输入)。,练习: (1)通过键盘输入10个学生的考试成绩,计算并显示其平均成绩。 (2)从键盘输入10个整型数据,将其中的负数以及负数的和显示出来。,2、条件循环语句(DoLoop) (1)当型循环(Do WhileLoop、DoLoop While) (2)直到型循环(Do Until Loop、DoLoop Until),格式:Do While 条件表达式 循环体 Exit Do 循环体 Loop,说明: 循环体中要有控制循环的语句,以避免出现死循环。 由于该循环的特点是先判断条件,然后再决定是否要执行循环体里的语句。所以,这种循环可以一次也不执行循环体。 Exit Do 表示当遇到该语句时,强制退出循环,执行Loop后的下一条语句。,T,例:S=1+2+3+n,编写程序求使得S1000的最小n值。,Dim n As Integer, s As Integer s = 0 n = 1 Do While s 1000的最小n值是:“ & n,练习:某工厂1995年的产值为100万元,计划年增长率为5%, 求首次使得产值达到或超过120万元的年份。,说明: 至少要执行循环体一次。 与Do WhileLoop循环的区别: Do WhileLoop循环先测试条件是否成立,只有成立才执行循环;而DoLoop While循环先执行循环体,再测试条件是否成立。,格式: Do 循环体 Exit Do 循环体 Loop While条件表达式,例:对比以下两段程序,分别写出其执行结果,Dim i As Integer i = 1 Do While i 1 Print i Loop,Dim i As Integer i = 1 Do Print i Loop While i 1,练习:分别用ForNext语句,Do whileLoop语句和DoLoop While语句编写代码求100以内偶数之和。,举例,1)判断两个数的乘积是否是正数。 Private Sub Command1_Click() Dim x As Integer, y As Integer x = Val(Text1.Text) y = Val(Text2.Text) If x * y 0 Then Text3.Text = “x*y0“ Else Text3.Text = “x*y=0“ End If End Sub,例2 S=1+2+3+n,编写程序求使得S1000的最小n值。 Dim n As Integer, s As Integer s = 0 n = 1 Do While s 1000的最小n值是:“ & n,例3,判断用户输入的数是否为素数。 分析:素数的特征是只能被1和它自身整除。假设用户输入的正整数为N,我们只需确定在大于1小于等于的正整数中是否存在能整除N的数。如果有,则N就不是素数;如果没有,则N就是素数。,Private Sub Form_Click() Dim n%, flag%, I%, k% n = InputBox(“请输入一个正整数(3)“) k = Int(Sqr(n) flag = 0 For I = 2 To k If n Mod I = 0 Then flag = 1 Next I If flag = 0 Then Print n; “是一个素数“ Else Print n; “不是素数“ End If End Sub,【例4】假设我国现有人口12亿,若年增长率为1.5%,试计算多少年后我国人口增加到或超过20亿。 人口计算公式为:p=y(1+r)n y为人口初值,r为年增长率,n为年数。,Private Sub Form_click() Dim p!, r!, I% p = 12 r = 0.015 I = 0 While p 20 p = p * (1 + r) I = I + 1 Wend Print I; “年后,我国人口将达到“; p; “亿“ End Sub,【例5】打印九九乘法表。 分析:打印九九乘法表,只要利用循环变量作为乘数和被乘数就可以方便的解决。,Private Sub Form_Click() Dim i%, j%, str$ Print Tab(35); “九九乘法表“ For i = 1 To 9 For j = 1 To 9 str = i Next j Print Next i End Sub,【例6】 输入一个学生的一门课分数X(百分制),当x90时,输出“优秀”;当80x90 时,输出“良好”;当 70x80 时,输出“中”;当60x70 时,输出“及格”,当 x60 时,输出“不及格”。 算法分析:本例适合用多路分支结构来解决。运行界面如下图所示。,控件属性设置,程序代码如下: “鉴定”按钮代码 Private Sub Command1_Click() Dim score! score = Text1.Text If score = 90 Then Text2.Text = “优秀“,ElseIf score = 80 Then Text2.Text = “良好“ ElseIf score = 70 Then Text2.Text = “中“ ElseIf score = 60 Then Text2.Text = “及格“ Else,Text2.Text = “不及格“ End If End Sub “退出”按钮代码 Private Sub Command2_Click() End End Sub,把例中 “鉴定”按钮的代码用Select Case语句改写。 Private Sub Command1_Click() Dim score! score
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号