第4章VisualBasic程序设计结构.ppt
第第4章章 Visual Basic程序设计结构程序设计结构n顺序结构顺序结构n选择结构选择结构n循环结构循环结构 4.1 概述概述n在顺序结构中:程序由上到下依次执行在顺序结构中:程序由上到下依次执行每一条语句。每一条语句。n在选择结构中:程序判断某个条件是否在选择结构中:程序判断某个条件是否成立,以决定执行哪部分代码。成立,以决定执行哪部分代码。n在循环结构中:程序判断某个条件是否在循环结构中:程序判断某个条件是否成立,以决定是否重复执行某部分代码。成立,以决定是否重复执行某部分代码。4.2 顺序结构顺序结构 n程序由上到下依次执行每一条语句程序由上到下依次执行每一条语句 Private Sub Form_Click() Dim i As Integer i = i + 1 Print iEnd Sub 4.2 顺序结构顺序结构n赋值语句:赋值语句:将数据保存在一个变量或对象的将数据保存在一个变量或对象的属性中(从右向左)属性中(从右向左)n格式:格式:变量名变量名=表达式表达式Dim a As IntegerDim b As Integera = 1b = 2 * aa = a + 1 对象名对象名.属性名属性名=表达式表达式Dim cap As String cap = “窗体标题窗体标题”Caption = capForm1.Caption=cap4.2 顺序结构顺序结构n注释:注释:n开头,会自动变成绿色开头,会自动变成绿色n不被执行不被执行n起到说明作用起到说明作用4.3 4.3 选择结构选择结构 n根据某个条件来决定执行哪部分程序根据某个条件来决定执行哪部分程序 选择结构选择结构if语句语句select语句语句单行单行if语句语句多行多行if语句语句If x Mod 2 Then Print 奇数奇数 If answer = vbYes Then End End If Select Case opt Case +“ result = a + b Case - result = a - b Case * result = a * b End Select 4.3 4.3 选择结构选择结构n如果如果x是偶数,则输出是偶数,则输出“偶数偶数”n如果如果ageXageY,则则salaryX=1500n如果如果text2内容为空,提示内容为空,提示“输入数据输入数据”If 条件条件 Then 语句块语句块End If4.3 4.3 选择结构选择结构2 2If 条件条件 Then 语句块语句块1 当当条件条件为真,执行这里为真,执行这里Else 语句块语句块2 当当条件条件为假,执行这里为假,执行这里End If4.3 4.3 选择结构选择结构 salary=If 条件条件 Then 语句块语句块1 当当条件条件为真,执行这里为真,执行这里Else 语句块语句块2 当当条件条件为假,执行这里为假,执行这里End If10001500year3year= playerFplayerM = playerFplayerM = playerF Then MsgBox 输输了了, , 5555 Else MsgBox !我又赢了我又赢了, , ye ye End IfEnd Sub4.3 4.3 选择结构选择结构3 3 分段函数分段函数 y = 0If 条件条件1 Then 语句块语句块1 当当条件条件1为真,执行为真,执行ElseIf 条件条件2 Then 语句块语句块2 当当条件条件1为假,为假,条件条件2为真为真Else 语句块语句块3 当当条件条件1为假,为假,条件条件2为假为假End If1-1x0 x0y=1y=-1x=0 x=0y=04.3 4.3 选择结构选择结构3 3If 条件条件1 Then 语句块语句块1 当当条件条件1为真,执行为真,执行ElseIf 条件条件2 Then 语句块语句块2 当当条件条件1为假,为假,条件条件2为真,执行为真,执行Else 语句块语句块3 当当条件条件1为假,为假,条件条件2为假,执行为假,执行End If4.3 4.3 选择结构选择结构4 4If 条件条件1 Then 语句块语句块1 当条件当条件1成立成立ElseIf 条件条件2 Then 语句块语句块2 当条件当条件1不成里,条件不成里,条件2成立成立ElseIf 条件条件n Then 语句块语句块n 当前面当前面n-1个条件不成立,条件个条件不成立,条件n成立成立Else 语句块语句块n+1 当前面当前面n个条件都不成立个条件都不成立 End If 4.3 4.3 选择结构选择结构4 4score变量保存变量保存0100间的整数作为百分制成绩,间的整数作为百分制成绩,If score 90 Then 当成绩当成绩90, Print AElseIf score 80 Then 当成绩当成绩80 Print BElseIf score 70 Then 当成绩当成绩70 Print CElseIf score 60 Then 当成绩当成绩60 Print DElse Print E 当成绩当成绩=60 End If 4.3 4.3 选择结构选择结构使用什么格式的使用什么格式的ifif语句?语句?If 条件条件 Then .End If对对1 1种情况进行处理种情况进行处理对对2 2种情况处理种情况处理If 条件条件 Then 语句块语句块1 Else 语句块语句块2End If对对3 3种情况处理种情况处理If 条件条件1 Then 语句块语句块1 ElseIf 条件条件2 Then 语句块语句块2Else 语句块语句块3End If对对3 3种以上情况处理种以上情况处理If 条件条件1 Then 语句块语句块1 ElseIf 条件条件2 Then 语句块语句块2ElseIf 条件条件n Then 语句块语句块nElse 语句块语句块n+1 End If 4.3 4.3 选择结构选择结构 分段分段n如果如果x15,则则a=15;否则否则a=-15 0 x0n x+1 0 x1y= 2x 1 x2 x-1 2 x3 1 x 3if x0 then y=0elseif x1 then y= x+1 elseif x2 then y=2*xelseif x3 then y= x-1else y=1endif4.3 4.3 选择结构选择结构4 4Select Case 条件表达式条件表达式 Case 表达式结果列表表达式结果列表1 语句块语句块1 Case 表达式结果列表表达式结果列表2 语句块语句块2 Case Else 可以省略可以省略 语句块语句块n+1 End Select 4.3 4.3 选择结构选择结构4 4Select Case opt 根据运算符不同,进行运算不同根据运算符不同,进行运算不同 Case + result = opt1 + opt2 Case - result = opt1 - opt2 Case * result = opt1 * opt2 Case / result = opt1 / opt2End Select 4.5 4.5 循环结构程序设计循环结构程序设计 n循环结构依据某一条件(即循环结构依据某一条件(即循环条件循环条件)反复执行某段程序(即反复执行某段程序(即循环体循环体) 执行循环体的次数,称为执行循环体的次数,称为循环次数循环次数nWhileWendnForNextn不知道循环次不知道循环次数数,宜用,宜用 while 循环循环n知道循环知道循环次数次数,宜用,宜用 For.Next 循环循环4.5.1 While4.5.1 WhileWendWend语句语句 While 循环条件循环条件 循环体循环体Wend 4.5.1 While4.5.1 WhileWendWend语句语句n在窗体上打印输出在窗体上打印输出4个个“*” i = 1 While i = 4 print “*” i=i+1 Wend1. i=1*1. i=22. i=2*2. i=33. i=3*3. i=44. i=4*4. i=55. i=5循环执行结束循环执行结束4.5.1 While4.5.1 WhileWendWend语句语句程序功能是什么?执行结果是什么?程序功能是什么?执行结果是什么? sum = 0: i = 1 While i = 3 sum = sum + i i = i + 1 Wend Print sum,i 14所有整数的和所有整数的和1.sum=0 i=11.sum=1 i=11.sum=1 i=22.sum=1 i=22.sum=12 i=22.sum=12 i=33.sum=1+2 i=33.sum=1+2+3 i=33.sum=1+2+3 i=44.sum=1+2+3 i=46 44.5.1 While4.5.1 WhileWendWend语句练习语句练习求求100之内所有偶数的和?之内所有偶数的和? While Wendsum = 0: i = 2i = 100sum = sum + ii = i + 24.5.1 While4.5.1 WhileWendWend语句语句cmdComputetxtInputtxtOutputn在在txtInput中中输入整数输入整数n单击单击cmdCompute将将1输入数据间输入数据间所有奇数的和计算出来所有奇数的和计算出来n结果显示在结果显示在txtOutput中中4.5.1 While4.5.1 WhileWendWend语句语句Private Sub cmdCompute_Click()Dim i As Integer, sum As IntegerDim n As Integern = Val(txtInput.Text)sum = 0: i = 1While i = n sum = sum + i i = i + 2WendtxtOutput.Text = sumEnd Sub4.5.1 While4.5.1 WhileWendWend语句语句单击命令按钮单击命令按钮cmdCompute,计算,计算1/1+1/2+1/3+1/4.直到最后一项直到最后一项= 0.0001sum = sum + 1 / ii = i + 1lblResult.Caption = sum4.5.1 While4.5.1 WhileWendWend语句语句n求求100!Dim i As Integer, result As Doubleresult = 1: i = 1While i = 100 result = result * i i = i + 1Wend4.5.2 For4.5.2 ForNextNext语句语句For 循环变量循环变量 = 初值初值 To 终值终值 Step 步长步长 循环体循环体 Next 循环变量循环变量 n“Step 步长步长” 省略时,表示步长为省略时,表示步长为1n循环次数(终值初值)循环次数(终值初值)步长步长1 sum = 0 For i = 1 To 10 sum = sum + i Next i4.5.2 For4.5.2 ForNextNext语句语句For 循环变量循环变量 = 初值初值 To 终值终值 Step 步长步长 循环体循环体 Next 循环变量循环变量 sum = 0 For i = 1 To 10 sum = sum + i Next i4.5.2 For4.5.2 ForNextNext语句语句n求求100之内偶数的总和之内偶数的总和n求求100!n求求1!+2!+100!4.5.2 For4.5.2 ForNextNext语句语句n求求100之内偶数的总和之内偶数的总和Dim I As Integer, Sum As IntegerSum = 0For I = 2 To 100 Step 2 Sum = Sum + INext I4.5.2 For4.5.2 ForNextNext语句语句求求100!Dim I As Integer, S AsS =For ToNextI = 1 100 S = S * II1Double4.5.2 For4.5.2 ForNextNext语句语句求求100!Dim I As Integer, S As DoubleS = 1For I = 1 To 100 S = S * INext I求求1!+2!+100!Dim I As Integer, S As Double, Sum As DoubleS =Sum =For I = 1 To 100 Next I10S = S * ISum = Sum + S4.5.2 For4.5.2 ForNextNext语句语句用循环结构编程,需要问几个问题用循环结构编程,需要问几个问题:n反复执行某个操作?反复执行某个操作?n循环次数已知?循环次数已知?n循环变量循环变量 初值初值 中值中值 步长?步长?n循环体?能否使用循环变量?循环体?能否使用循环变量?4.5.2 For4.5.2 For语句和语句和WhileWhile语句的对比语句的对比 nFor-Next循环循环nWhile-Wend循环循环n不知道循环次不知道循环次数数,宜用,宜用 while 循环循环n知道循环知道循环次数次数,宜用,宜用 For.Next 循环循环4.5.2 For4.5.2 For语句和语句和WhileWhile语句的对比语句的对比n输入输入5个学生成绩,计算平均分个学生成绩,计算平均分n循环体,循环体,5次:次: 输入成绩输入成绩 score = Val(InputBox(输入成绩输入成绩) 累加累加 sum = sum + scoren求平均分求平均分 avg = sum / 5用什么循环?用什么循环?4.5.2 For4.5.2 For语句和语句和WhileWhile语句的对比语句的对比Private Sub Form_Click()Dim i As Integer ,score As IntegerDim sum As SingleDim avg As SingleFor i = 1 To 5 score = Val(InputBox(输入成绩输入成绩) sum = sum + scoreNext iavg = sum / 5End Sub4.5.2 For4.5.2 For语句和语句和WhileWhile语句的对比语句的对比n输入若干学生成绩,计算平均分,直到某输入若干学生成绩,计算平均分,直到某次输入次输入=0: 累加累加 sum = sum + score 输入成绩输入成绩 score = Val(InputBox(输入成绩输入成绩)n求平均分求平均分 avg = sum / 54.5.2 For4.5.2 For语句和语句和WhileWhile语句的对比语句的对比Private Sub Form_Click()Dim i As Integer, score As IntegerDim sum As SingleDim avg As Singlescore = Val(InputBox(输入成绩输入成绩)While score = 0 sum = sum + score score = Val(InputBox(输入成绩输入成绩)Wendavg = sum / 5End Sub4.5.3 DoLoop语句语句n语法格式语法格式1:nDo n 循环体 nLoop While 循环条件n语法格式语法格式2:nDo While循环条件n 循环体 nLoop4.5.3 DoLoop语句语句n语法格式语法格式1:nDo n 循环体 nLoop Until 循环结束条件n语法格式语法格式2:nDo Until循环结束条件n 循环体nLoop4.5.4 循环结构的嵌套循环结构的嵌套n一个循环结构的循环体内出现了另一个一个循环结构的循环体内出现了另一个循环结构循环结构 nFor i = 1 To 2n For j = 1 To 3n Print i= & i, j= & jn Next jnNext i常见错误常见错误1 1text2是不存在的对象是不存在的对象在属性窗口中看在属性窗口中看(名称名称)属性属性常见错误常见错误2 2n属性的引用方式不对属性的引用方式不对n对象名对象名.属性名属性名常见错误常见错误3 3n对象名正确对象名正确n属性名或方法名不正确属性名或方法名不正确常见错误常见错误4 4程序运行没反映程序运行没反映n事件过程是否正确事件过程是否正确单击单击command1代码编写在代码编写在command2_Click()中中n输出结果的语句是否正确输出结果的语句是否正确在在text2中显示中显示result变量值变量值text2.text=result常见错误常见错误5 5n结果运行不正确:单击设置断点结果运行不正确:单击设置断点 ,F8单步执行单步执行While score = 0 score = Val(InputBox(输入成绩输入成绩) sum = sum + score i = i + 1 Wendavg = sum / iscore=0score=90sum=90sum=90,score=90score=-1sum=90-1