资源预览内容
第1页 / 共51页
第2页 / 共51页
第3页 / 共51页
第4页 / 共51页
第5页 / 共51页
第6页 / 共51页
第7页 / 共51页
第8页 / 共51页
第9页 / 共51页
第10页 / 共51页
亲,该文档总共51页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
第5章 Visual Basic控制结构,5.1 算法及其描述 5.2 选择结构 5.3 循环结构 5.4 常用算法,5.1 算法及其描述,1.算法的概念 是解决问题的有序步骤。 2.算法的特征 (1) 有穷性。 (2) 确定性。 (3) 有效性。 (4) 零个或多个输入。 (5) 至少有一个输出。,3.算法的描述 (1)自然语言 文字冗长、表达不确切、二义性。 (2)流程图 图形方法,直观、形象、易于理解,应用广泛。 (3)N-S图 是流程图的发展,去掉了流程线,算法都表示在一个矩形框内。,3.三种基本控制结构 (1)顺序结构 在顺序结构中,算法的每一步操作都是按从上到下的线性次序执行的。 (2)选择结构 又称分支结构,根据给出的条件,选择执行一个分支。因此,在选择结构中,必然包含了条件判断。 (3)循环结构 又称重复执行结构。根据给出的条件,判断是否重复执行某一组操作。,基本的循环结构有两种:当循环和直到循环。 当循环:首先判断条件是否成立,若成立,执行循环体再判断条件,决定是否继续进行循环;若不成立,跳过这组操作,执行此循环结构后面的操作。 直到循环:首先执行循环体,然后判断条件是否成立,若成立,则继续进行循环操作;若不成立,执行此循环结构后面的操作。 在程序设计中,算法是由一系列的控制结构构成,每一个控制结构又由若干个语句组成。语句是程序中有确切含义的基本单位,也是构成程序的基本成分,程序功能是由一条条语句的执行来实现的,可把语句视为命令。,5.2 选 择 结 构 1. IfThen语句(单分支结构) If Then 语句块 End If(注意多行if语句要有End If) 或 If Then ,重要的是学会两个数的交换,若上述语句次序变一下,结果如何?,例:已知两个数x和y,比较它们的大小,使得x大于y. If xy Then t=x x=y y=t End If 或 If xy Then t=x: x=y: y=t,2. IfThenElse语句(双分支结构) If Then Else End If If Then Else 计算分段函数:,双分支结构实现: If x0 Then y=sin(x)+sqr (x*x+1) Else y=cos(x)x3+3*x End If,单分支结构实现: y=cos(x)x3+3*x If x0 Then y=sin(x)+sqr (x*x+1),3. IfThenElseIf语句(多分支结构) 形式: If Then ElseIf Then Else 语句块 n+1 End If,例5.1(补) 已知变量strC中存放了一个字符,判断该字符是字母字符、数字字符还是其它字符。 用多分支结构实现: If Ucase(strC) =“A“ And Ucase (strC) =“0“ And strC =“9“ Then Print strC + “是数字字符“ Else Print strC + “是其它字符“ End If,不管有几个分支,依次判断,当某条件满足,执行相应的语句,其余分支不再执行;若条件都不满足,且有Else子句,则执行该语句块,否则什么也不执行。. ElseIf不能写成 Else If。,例5.2(补) 已知百分制成绩mark,显示对应的五级制成绩。哪些正确,哪些错误?,4If语句的嵌套 If语句的嵌套是指If或Else后面的语句块中又包含If语句。 形式如下: If Then If Then End If End If,例5.3(补) 已知x,y,z三个数,使得xyz,用一个IF语句和一个嵌套的IF语句实现,If xy Then t=x: x=y: y=t If yz Then t=y: y=z: z=t If xy Then t=x: x=y: y=t End If End If,If语句的嵌套注意事项:书写锯齿型; If 与End If配对。,:与同类型的下面四种形式之一: 表达式 例: “A“ 一组枚举表达式(用逗号分隔) 2,4,6,8 表达式1 To 表达式2 60 To 100 Is 关系运算符表达式 Is 60,5. Select Case语句(情况语句) 形式: Select Case 变量或表达式 Case 表达式列表1 语句块1 Case 表达式列表2 语句块2 Case Else 语句块n+1 End Select,数值型或字符串表达式,例5.4(补) 变量strC中存放了一个字符,判断该字符类型。 用多分支结构实现: If Ucase(strC) =“A“ And Ucase (strC) =“0“ And strC =“9“ Then Print strC + “是数字字符“ Else Print strC + “其他字符“ End If 用Select Case语句实现: Select Case strC Case “a“ To “z“,“A“ To “Z“ Print strC + “是字母字符“ Case “0“ To “9“ Print strC + “是数字字符“ Case Else Print strC + “是其它字符“ End Select,例5.5(补) 已知坐标点(x,y),判断其落在哪个象限。,哪个能实现,哪个不能实现?,方法一 If x 0 And y 0 Then Print “在第一象限“ ElseIf x 0 Then Print “在第二象限“ ElseIf x 0 And y 0 Then Print “在第四象限“ End If,方法二 Select Case x,y Case x 0 And y 0 Print “在第一象限“ Case x 0 Print “在第二象限“ Case x 0 And y 0 Print “在第四象限“ End Select,方法二代码错误: 1. Select Case 后不能出现多个变量; 2. Case后不能出现变量及有关运算符。,例5.6 商店售货,按购买货物的多少分别给予不同优惠折扣如下:编程计算购物款数。购物不足250元,无折扣,购物满250元、不足500元,减价5%,计算机根据学生的答案判断正确与否,当结束时给出成绩。购物满500元、不足1000元,减价7.5%,购物满1000元、不足2000元,减价10%,购物满2000元,减价15%。 分析:设购物款为m,折扣为d,以上规定可表示如下:,d=,0 (m250) 5% (250m500) 7.5% (500m1000) 10% (1000m2000) 15% (2000m) 代码如下:,Private Sub Command1_Click() Dim s As Single, d As Single m = Val(InputBox(“请输入应付款:“) Select Case m Case Is 250 d = 0 Case Is 500 d = 0.05 Case Is 1000 d = 0.075 Case Is 2000 d = 0.1 Case Else d = 0.15 End Select Text1.Text = Str(m) Text2.Text = Str(d) Text3.Text = Str(m * (1 - d) End Sub,Private Sub Command2_Click() End End Sub 运行结果如下:,6.条件函数 (1)IIf函数形式是: IIf(表达式,当表达式为True时的值,当表达式为False时的值) 例如,求x,y中大的数,放入Tmax变量中,语句如下: Tmax=IIf(x y,x,y) (2)Choose函数形式是: Choose(数字类型变量,值为1的返回值,值为2的返回值) 例如,Nop是1-4的值,转换成 + 、-、运算符的语句如下: Op= Choose(Nop,“+“,“-“,“,“) 当值为1,返回字符串“+”,然后放入Op变量中,值为2,返回字符串“-”,依次类推;当Nop是1-4的非整数,系统自动取Nop的整数再判断;若Nop不在14之间,函数返回Null值。 (3) Switch函数形式是: Switch(条件表达式1,条件表达式1为True时的值 ,条件表达式2,条件表达式2为True时的值),常 见 错 误 1在选择结构中缺少配对的结束语句 对多行式的If块语句中,应有配对的 End If语句结束。 2. 多边选择ElseIf关键字的书写和条件表达式的表示 ElseIf 不要写成Else If。 3. Select Case语句的使用 Select Case 后不能出现多个变量;Case子句后不能出现变量,见例5.5。,5.3 循 环 结 构 1. For循环语句 (一般用于循环次数已知) 形式 For 循环变量初值 to 终值 Step 步长 语句块 Exit For 语句块 Next 循环变量,循环变量, =,终值,语句块,Exit For,语句块,循环变量加步长,T,F,循环变量得初值,循环体,例5.7(补) 计算1100的奇数和,程序段如下: Dim i %, s% 等价于: Dim i %, s% s=0 s=0 : i = 1 For i = 1 To 100 step 2 re: If i = 100 Then s = s + i s = s + i Next i i = i +2 GoTo re End If,0 初值终值 =0 死循环,循环次数,要注意: 出了循环,循环控制变量值的问题。 例程序段: For i=2 To 13 Step 3 循环执行次数 Print i , 输出 i的值分别为: Next i 2 5 8 11 Print : Print “I=“, i 出了循环输出为: I=14 在循环体内对循环控制变量可多次引用;但最好不要对其赋值,否则影响原来的循环控制规律。,步长,例5.8(补)改变循环控制变量对循环的影响 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 Print “退出循环后i=“; i End Sub 正常情况:i=1,3,5,7,9,11,13,15,17,19 现在:i=4,9,14,19,例5.9 输入一个班的学习成绩,统计其中及格的学生人数,并计算出全班的平均分数。学生人数不定,输入负数时截止。设全班人数不超过50人。,Private Sub Command1_Click() Dim Score As Single, PassN As Integer, n As Integer Dim i As Integer, Sum As Single Text1 = “: Text2 = “: Text3 = “ Sum = 0: PassN = 0: n = 0 For i = 1 To 50 统计人数大于50时停止循环 Score = Val(InputBox(
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号