1、VISUAL BASIC程序设计程序设计基础全套教案基础全套教案第第5章章 vb程序控制结构程序控制结构第五章第五章 VBVB程序控制结构程序控制结构【学习目标学习目标】1.知道结构化程序设计的三种结构2.重点掌握实现选择结构的语句及语法,能利用IF ELSE语句解决实际问题第一次课第一次课一.结构化程序设计的三种结构顺序结构 选择结构 循环结构二二.双分支条件双分支条件 语句语句1.块结构格式:If 条件 Then 语句块1 else 语句块2 Endif说明:如果条件为真,则执行语句块1,否则则执行语句块2T T(真)(真)F F(假)(假)条件满足?条件满足?语句块语句块1 1语句块语句
2、块2 2执行下一条语句执行下一条语句2.2.单行结构单行结构格式:格式:if if 条件条件 then then 语句块语句块1 else 1 else 语句块语句块2 2注意:注意:then then 或或 elseelse后面若有多条语句,那么各语句之间用后面若有多条语句,那么各语句之间用“:”分隔分隔练习:读程序,写结果练习:读程序,写结果1.1.j1=10:j2=20 j1=10:j2=20 if j1j2 then print j2;if j1j2 then print j2;print j1 print j12.2.x=5:y=36 x=5:y=36 if not x0 then
3、x=if not x0 then If x0 then print print“输入的数大于输入的数大于0 0”ElseElse if x0 then if x60 then I=1 if a60 then I=1 if a70 then I=2 if a70 then I=2 if a80 then I=3 if a80 then I=3 if a90 then I=4 if a90 then I=4 print print“I=I=”;I;I 2.2.a=val(inputbox(“请输入一个数请输入一个数)i=0 if a60 then if a60 then I=1 I=1 Elsei
4、f a70 then Elseif a70 then I=2 I=2 Elseif a80 then Elseif a80 then I=3 I=3 Else Else i i=100=100 Endif Endif print print“I=I=”;I;I当从键盘上输入的数为当从键盘上输入的数为4545时时,结果为结果为_当从键盘上输入的数为当从键盘上输入的数为8585时时,结果为结果为_例例1:(思考思考)输入二级考试成绩,要求显示对应三级制的输入二级考试成绩,要求显示对应三级制的 评定。评定条件为:评定。评定条件为:Mark=Text1.TextIfMark=90ThenPrint“优
5、”ElseIfMark=60ThenPrint“通过”ElsePrint“未通过”EndIf【例例2 2】输入一个学生的成绩输入一个学生的成绩score,根据其所在分数段给,根据其所在分数段给出他的考试等级。出他的考试等级。score60时,打印时,打印“不及格不及格”;60=score=70时,打印时,打印“一般一般”;70score=80时,打印时,打印“中等中等”;80score=90时,打印时,打印“良好良好”;90score100时,打印时,打印“成绩有问题成绩有问题”。1.块结构条件语句中,正确的是A)各个条件对应的语句块中,一定有一个语句块被执行B)找到条件为true第一个入口,
6、便从此开始执行其后的所有语句块C)若有多个条件为true,则它们对应的语句块都被执行D)多行选择结构中的语句块,有可能任何一个语句块都不被执行2.执行下列语句后显示的结果是()If x then print x else print x-13.a=“1”b=“2”a=val(a)+val(b)b=val(12)if ab then print a-b else print b-a作业作业:P81 一(1)(2)(3)三P83 二(1)(2)第二次课第二次课 Select Case Select Case语句语句【学习目标学习目标】掌握多分支结构的特点、原理掌握多分支select case语句的
7、格式、功能及应用Select Case的结构形式为:的结构形式为:Select Case Case Case Case Case ElseEnd Select格式说明:格式说明:(1)“测试表达式”可以是数值表达式或字符串表达式。(2)“表达式列表”与“测试表达式”的类型必需相同。(3)当使用多个表达式组成列表时,表达式与表达式之间要用英文逗号“,”隔开。(4)“表达式列表”由下表形式的表达式组成。形式示例说明(1)表达式Case100+a数值或字符串表达式(2)一组用逗号分隔的枚举值Case2,4,6,8测试表达式的值等于2,4,6,8之一(3)表达式1To表达式2Case1To101测试表
8、达式10(4)Is关系运算符表达式CaseIs20测试表达式20SelectCase语句功能:根据“测试表达式”的值,选择第一个符合条件的语句块执行。SelectCase语句的执行过程是:先求“测试表达式”的值,然后顺序测试该值符合哪一个Case子句中情况,如果找到了,则执行该Case子句下面的语句块,然后执行EndSelect后面的语句;如果没找到,则执行CaseElse后面的语句块,然后执行EndSelect后面的语句。读程序读程序1.a=1.a=valval(inputboxinputbox(“a=”)(“a=”)select case a select case a case is=6
9、0 case is=60 a=a+1 a=a+1 case is=50 case is=50 a=a+10 a=a+10Case is=40 Case is=90 Text2.Text=优秀 Case Is=80在x90不成立时,再判断x80是否成立 Text2.Text=良好 Case Is=70 Text2.Text=中 Case Is=60 Text2.Text=及格 Case Else Text2.Text=不及格 End SelectEnd Sub【例例2 2】某交易中介公司按交易双方成交额收取中介费用,收费标准如下:交易额=100005%5000=交易额100003%1000=交易
10、额50002%500=交易额10001%交易额500免费假设交易额通过文本框Text1输入,则“计算费用”按钮Command1的事件代码如下:PrivateSubCommand1_Click()Trade=Val(Text1.Text)SelectCaseTradeCaseIs500Discount=0CaseIs1000Discount=0.01CaseIs5000Discount=0.02CaseIs=2000 Then sj=gz*0.05Else sj=0End IfPrint 工资;gz;的所得税为;sjEnd Sub但要计算10000个人的所得税,如何实现呢?实际上就是中间的程序块
11、重复10000次。即:对于 第次到第10000次 输入工资,计算所得税,输出结果 重复下一次如何实现一块程序重复n次呢?用程序的循环控制结构实现。在程序中,凡是需要重复相同或相似的操作步骤,都可以使用循环结构来实现。循环结构由两部分组成:循环体,即要重复执行的语句序列;循环控制部分,即用于规定循环的重复条件或重复次数,同时确定循环范围的语句。要使计算机能够正常执行某循环,由循环控制部分所规定的循环次数必须是有限的。VB提供了三种不同风格的循环结构,分别是:计数循环(ForNext循环)当循环(WhileWend循环)Do循环(DoLoop循环)其中计数循环常用于已知循环次数的循环,而当循环和D
12、o循环适合于循环次数未知,只知道循环结束条件的循环。一一.格式:格式:For 循环变量=初值 To 终值 Step 步长 循环体Next 循环变量 二二.循环的说明:循环的说明:循环(控制)变量循环(控制)变量:也叫“循环计数器”,用于控制循环次数。初值、终值:初值、终值:一般是整数,也可以是实数,实数会自动取整。可以是正数,也可以是负数。步长步长:循环变量每次循环的增量。实数会取整。正数:递增循环 负数:递减循环 :死循环,故不能为 :加1循环,“Step 1”可以省略。Next:循环结束语句,后面的循环变量必须与For语句中的循环变量一样。For与Next必须成对出现,且先有For、后有N
13、ext,缺一不可。循环体循环体:每次重复执行的语句。循环体可以是一个语句,也可以是多个语句。甚至可以一个语句也没有(空循环)。三.For循环执行过程(1)系统将初值赋给循环变量,并自动记下终值和步长。(2)判断循环变量是否超过超过终值:未超过终值,执行一次循环体;否则,结束循环(3)执行Next语句,将循环变量加上一个步长。(4)转到(2),继续执行。(5)结束循环,执行Next后面的语句。循环变量被赋初值T循环变量超过终值?Fnext之后的语句循环变量加步长循环体 步长为正数时,循环变量大于终值为“超过”。步长为负数时,循环变量小于终值为“超过”。(2)终值和初值的取值有以下情况:步长为正数
14、时,终值应该大于初值,否则循环体不会被执行。步长为负数时,终值应该大于初值,否则循环体不会被执行。当终值等于初值时,不管步长是正数是负数,均执行一次循环体。例如:分析如下程序的执行过程,并写出结果:s=0For a=1 To 10 Step 2s=s+2*a Next a分析:执行过程a=110,执行s=s+2*a=0+2*1=2,a=a+2=1+2=3a=310,执行s=s+2*a=2+2*3=8,a=a+2=3+2=5a=510,执行s=s+2*a=8+2*5=18,a=a+2=5+2=7a=710,执行s=s+2*a=18+2*7=32,a=a+2=7+2=9a=910,执行s=s+2*
15、a=32+2*9=50,a=a+2=9+2=11A=1110,退出循环程序的最后结果是:s=?a=?循环次数是:?次 四四.程序分析程序分析见上一张ppt 五五.循环次数的计算循环次数的计算循环次数Int(终值初值)步长)注:循环变量用来控制循环过程,在循环体内可以被引用,但不应被重新赋值,否则将无法确定循环次数,同时也降低了程序的结构化程度。六六.For.For循环程序的一般结构循环程序的一般结构变量初始化准备工作for循环体计算处理Next输出结果善后工作【学习目标】熟练掌握实现循环结构的 Doloop循环结构的格式、功能及执行过程复习:1.For循环的循环条件是什么2.Exit for语
16、句的功能是什么引入:现在世界人口约为60亿,若每年以1.4%的速度增长,多少年后人口将超过70亿 第四次课第四次课 Do DoLoopLoop循环循环1.Do 1.Do WhileWhile 循环体循环体 LoopLoop2.D0 2.D0 循环体循环体 Loop Loop WhileWhile 3.Do 3.Do UntilUntil 循环体循环体 LoopLoop4.Do 4.Do 循环体循环体 Loop Loop Until Until Do While Do While 循环体循环体 LoopLoop执行过程执行过程:(先判断,后执行)(先判断,后执行)先判断循环条件先判断循环条件,若
17、为真若为真则则执行循环体执行循环体,然后再判断循环条件然后再判断循环条件 否则,跳过循环体否则,跳过循环体,执行执行LoopLoop之后语句之后语句1.x=0Dowhilex50 x=(x+2)*(x+3)N=n+1LoopPrinx,n Dim I as integer,s As Integer For I=1 To 10 s=s+I Next I Print s例例1:1:求求1+2+3+4+1+2+3+4+10+10的和的和.Do while loop D0 D0 循环体循环体 Loop While Loop While 执行过程执行过程:(先执行,后判断)(先执行,后判断)先执行循环体
18、先执行循环体,再判断循环条件再判断循环条件,若为真,若为真,继续执行循环体继续执行循环体;否则,结束循环否则,结束循环,执行执行LoopLoop之后语句之后语句 Dim I,s As Integer Dim I,s As Integer I=1 I=1 Do Do While I=10 While I=10 s=s+I s=s+I I=I+1 I=I+1 Loop Loop Print I,s Print I,s Dim I,s As Integer Dim I,s As Integer I=1 I=1 Do Do s=s+I s=s+I I=I+1 I=I+1 Loop Loop While
19、 I=10 While I=10 Print I,s Print I,s Do Do WhileWhile 循环体循环体 LoopLoop D0 D0 循环体循环体 Loop Loop WhileWhile 区别区别:(1)(1)执行顺序不同执行顺序不同形形式一式一:先判断先判断,后执行后执行循环体循环体;形式二形式二:先执行先执行循环体循环体,后判断后判断 (2)(2)执行次数不同执行次数不同(特殊情况下)形式一形式一:条件不满足条件不满足,循环体可能一次也不执行循环体可能一次也不执行 形式二形式二:不论条件如何不论条件如何,至少执行一次至少执行一次执行过程执行过程:(先判断,后执行)(先判
20、断,后执行)先判断循环条件:先判断循环条件:条件为条件为假假:执行循环体执行循环体,然后再判断条件然后再判断条件.条件为条件为真真:跳过循环体跳过循环体,执行执行LoopLoop之后语句之后语句 Do Until Do Until 循环体循环体 LoopLoopx=1:y=4Dountily3x=x*yy=y+1LoopPrintx Do Until Do Until 循环体循环体 LoopLoopDim I,s As Integer Dim I,s As Integer I=1 I=1 Do Do While I=10 While I=10 s=s+I s=s+I I=I+1 I=I+1 L
21、oop Loop Print I,s Print I,s Dim I,s As Integer Dim I,s As Integer I=1 I=1 Do Do Until I10Until I10 s=s+I s=s+I I=I+1 I=I+1 Loop Loop Print I,s Print I,s Do Do 循环体循环体 Loop Until Loop Until DoDo While While 循环体循环体 LoopLoop(While While )DoDo Until Until 循环体循环体 LoopLoop(Until Until )区别区别:While While 条件
22、为条件为真真时执行循环体时执行循环体,否则退出循环否则退出循环 Until Until 条件为条件为假假时执行循环体时执行循环体,否则退出循环否则退出循环 关系:关系:whilewhile和和UntilUntil可以相互可以相互转换转换,但循环条件,但循环条件取反取反下列循环能正常结束的是:下列循环能正常结束的是:3.3.i=6Doi=i-2Loopuntili=12.2.i=1Doi=i+2Loopuntili=104.4.i=10Doi=i+1Loopuntili01.1.i=5Doi=i+1Loopuntili0第五次课第五次课 Select Case Select Case语句语句【学
23、习目标学习目标】掌握多分支结构的特点、原理掌握多分支select case语句的格式、功能及应用Select Case的结构形式为:的结构形式为:Select Case Case Case Case Case ElseEnd SelectSelectCase语句功能:根据“测试表达式”的值,选择第一个符合条件的语句块执行。SelectCase语句的执行过程是:先求“测试表达式”的值,然后顺序测试该值符合哪一个Case子句中情况,如果找到了,则执行该Case子句下面的语句块,然后执行EndSelect后面的语句;如果没找到,则执行CaseElse后面的语句块,然后执行EndSelect后面的语句
24、。格式说明:格式说明:(1)“测试表达式”可以是数值表达式或字符串表达式。(2)“表达式列表”与“测试表达式”的类型必需相同。(3)当使用多个表达式组成列表时,表达式与表达式之间要用英文逗号“,”隔开。(4)“表达式列表”由下表形式的表达式组成。形式示例说明(1)一组用逗号分隔的枚举值Case2,4,6,8测试表达式的值等于2,4,6,8之一(2)表达式1To表达式2Case1To101测试表达式10(3)Is关系运算符表达式CaseIs20测试表达式20(4)混合使用Case 2,is20测试表达式是2或大于20P87期末成绩进行转换:059分为不及格6069分为及格7079分为中等8089
25、分为良好90-100分为优秀其他为非法数据通过调试逐语句观察思考select case语句的执行观察与思考:学生思考与上机:学生思考与上机:如果某同学考了69.5,应该是及格范畴,可是现在这个程序上显示非法数据,应该如何去改程序。教师点评上机、总结第六次课第六次课 循环的嵌套使用循环的嵌套使用【学习目标】1.熟练掌握循环语句的格式、功能及执行过程2.会利用双重循环编写“图形”和“九九乘法表”1 利用双重循环进行图案的输出*用外层循环次数控制行数,用外层循环次数控制行数,用内层循环次数控制每行的用内层循环次数控制每行的个数个数For i=1 to 5 for j=1 to 4Print “*”;Next jPrint Next i*For i=1 to 5Print tab(i);for j=1 to 4Print “*”;Next jPrint Next i