《四章节算法基础及VB基本语句教案》由会员分享,可在线阅读,更多相关《四章节算法基础及VB基本语句教案(96页珍藏版)》请在金锄头文库上搜索。
1、江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计四章节算法基础及VB基本语句Stillwatersrundeep.流静水深流静水深,人静心深人静心深Wherethereislife,thereishope。有生命必有希望。有生命必有希望江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计1 1、了解结构化程序设计的基本概念、了解结构化程序设计的基本概念2 2、掌握、掌握VB VB 程序设计中的常用语句程序设计中的常用语句3 3、掌握顺序、选择、和循环结构及相应的语句、掌握顺序、选择、和循环结构及相应的语句教学要求教学要求2江苏计算机等
2、江苏计算机等级考试级考试 Visual Basic 程序设计程序设计教学内容教学内容教学内容教学内容4.1 4.1 算法及程序设计基础算法及程序设计基础4.2 4.2 赋值语句及赋值语句及InputBoxInputBox、MsgBoxMsgBox函数函数4.3 4.3 分支结构与分支结构语句分支结构与分支结构语句4.4 4.4 循环结构与循环结构语句循环结构与循环结构语句4.5 4.5 程序示例程序示例3江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计4.1 4.1 4.1 4.1 算法及程序设计基础算法及程序设计基础算法及程序设计基础算法及程序设计基础l l一
3、个程序一个程序一个程序一个程序( ( ( ( 过程过程过程过程) ) ) )应包括:应包括:应包括:应包括:l lNikiklaus WirthNikiklaus WirthNikiklaus WirthNikiklaus Wirth认为认为认为认为:l有人认为:有人认为: 对数据的描述对数据的描述:指定所用数据的类型,作用域和数据的:指定所用数据的类型,作用域和数据的 组织形式,即数据结构(组织形式,即数据结构(data structure)。)。 对操作的描述对操作的描述:即操作步骤,也就是算法(:即操作步骤,也就是算法(algorithm)。)。数据结构数据结构+算法算法=程序程序程序程
4、序=算法算法+数据结构数据结构+程序设计方法程序设计方法+语言工具和环境语言工具和环境4江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计1 1 1 1、算法的概念、算法的概念、算法的概念、算法的概念l算法算法即即解解决决某某个个问问题题或或处处理理某某件件事事的的方方法法和和步步骤骤;“采采用用什什么么结构,使用什么语句以及如何安排这些语句结构,使用什么语句以及如何安排这些语句”。l算法分类:算法分类:数值计算算法数值计算算法非数值计算算法非数值计算算法l算法算法优劣优劣: 正确性,效率,占用系统资源,便于理解,易于调试等。正确性,效率,占用系统资源,便于理解,
5、易于调试等。5江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计1810M N R8108 2 8 2 0 2 0R=8R=2R=0M=2即最大公约数即最大公约数求求最最大大公公约约数数 题目题目 :求两个自然数的最大公约数:求两个自然数的最大公约数 分析分析 :求最大公约数的常用方法是辗转相除法:求最大公约数的常用方法是辗转相除法( (欧几里德算法欧几里德算法) )。2 2、算法示例、算法示例6江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计 算法描述算法描述算法描述算法描述 :S1 S1 输入两个自然数:输入两个自然数:M M,
6、N N;S2 S2 求求M M除以除以N N的余数的余数R R;S3 S3 使使M=NM=N,即用,即用N N代换代换M M;S4 S4 使使N=RN=R,即用,即用R R代换代换N N;S5 S5 若若R0R0,则重复执行,则重复执行S2,S3,S4,S2,S3,S4,否则转至否则转至S6S6S6 S6 输出输出M M,M M即为即为M M,N N的最大公约数。的最大公约数。7江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计3 3 3 3、算法的特征、算法的特征、算法的特征、算法的特征2 确定性确定性2 可行性可行性2 有穷性有穷性2 输入性输入性2 输出性输
7、出性8江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计4 4 4 4、算法的描述、算法的描述、算法的描述、算法的描述 l程序流程图程序流程图求求最最大大公公约约数数9江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计程序编码程序编码实现算法实现算法l算法仅提供解题思路,计算机不可直接执行。算法仅提供解题思路,计算机不可直接执行。l用用某某一一程程序序设设计计语语言言所所提提供供的的语语言言成成分分,根根据据该该语语言言的的特特点点,并并利利用用该该语语言言的的各各种种工工具具和和手手段段,遵遵照照规规定定的的语语法法规规则去实现算法
8、,得到原程序代码,计算机可识别并执行。则去实现算法,得到原程序代码,计算机可识别并执行。10江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计5.5.5.5.基本算法结构基本算法结构基本算法结构基本算法结构1 1). . 顺序结构顺序结构语句语句1语句语句2语句块语句块结结构构化化程程序序设设计计11江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计l2)选择结构)选择结构条件满足?块1块2TrueFalse结结构构化化程程序序设设计计12江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计l3)循环结构)
9、循环结构块块TrueFalse条件条件结结构构化化程程序序设设计计13江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计三种基本结构的共同特点三种基本结构的共同特点三种基本结构的共同特点三种基本结构的共同特点l只有单一入口和单一出口;只有单一入口和单一出口;l结构中的每一部分都有被执行的可能;结构中的每一部分都有被执行的可能;l结构内不应出现永不终止的死循环。结构内不应出现永不终止的死循环。14江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计4.2 4.2 4.2 4.2 赋值语句及赋值语句及赋值语句及赋值语句及InputBoxIn
10、putBoxInputBoxInputBox、MsgBoxMsgBoxMsgBoxMsgBox函数函数函数函数4.2.1 赋值语句赋值语句4.2.2 InputBoxInputBox函数函数4.2.3 MsgBoxMsgBox函数函数15江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计4.2.1 赋值语句赋值语句 格式格式 : = 功能功能 :先计算表达式的值,再将该值赋予左端的变量。:先计算表达式的值,再将该值赋予左端的变量。 说明说明 : - -赋值号左端不仅可以是变量名,还可以是对象的属性;赋值号左端不仅可以是变量名,还可以是对象的属性; - -表达式的类
11、型和变量的类型要一致表达式的类型和变量的类型要一致 - -赋值语句是按语句出现的先后顺序执行的(顺序结构)赋值语句是按语句出现的先后顺序执行的(顺序结构) 举例举例 : str1 = Nice to meet you number% = 72 Lable1.Caption = Filename is: Text.FontSize = 12 改变字号改变字号16江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计使用下面的方法可以获取一个对象的属性值:使用下面的方法可以获取一个对象的属性值:var = object . Property 例如:例如:Label1.Ca
12、ption=Text1.Text 式中,式中,varvar是变量名、是变量名、objectobject是对象名、是对象名、propertyproperty是该对是该对象的某个属性名。象的某个属性名。特别注意:特别注意:属性也存在数据类型,所以在获取对象的属性值时,属性也存在数据类型,所以在获取对象的属性值时,最好使用具有相同数据类型的变量。最好使用具有相同数据类型的变量。 说明说明 17江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计注意:赋值号(注意:赋值号(= =)与比较运算符()与比较运算符(= =)不同)不同v 赋值是独立的一条语句;赋值是独立的一条语句
13、; 由运算符(由运算符(= =)连结两个操作数的关系表达式是)连结两个操作数的关系表达式是语句的一部语句的一部分分, , 不可单独存在不可单独存在v 比较运算符不会改变操作数的值;比较运算符不会改变操作数的值; 赋值语句会,改变赋值号左边的量,所以必须是可以被赋赋值语句会,改变赋值号左边的量,所以必须是可以被赋值的变量或属性值的变量或属性Dim x As Integer, y As Integer, z As Booleanx=3 : y=4 : y=xz = x=yPrint x, y, z18江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计Private S
14、ub Form_Click() Dim a As Integer,b As Integer a=10 b=3*a Print a,bEnd SubPrivate Sub Form_Click() Dim a As Integer,b As Integer b=3*a a=10 Print a,bEnd Sub例:单击窗体,下列两段程序的执行结果分别是例:单击窗体,下列两段程序的执行结果分别是()()和和()()。提示:利用赋值语句给变量赋值后,在未有新的提示:利用赋值语句给变量赋值后,在未有新的赋值语句再次给它赋值前,变量值保持不变。赋值语句再次给它赋值前,变量值保持不变。19江苏计算机等江苏
15、计算机等级考试级考试 Visual Basic 程序设计程序设计例:交换两个变量的值。例:交换两个变量的值。Private Sub Form_Click() Dim a As Integer,b As Integer a=10 : b=2 Print a,b 填入程序代码填入程序代码 Print a,bEnd Sub正确答案正确答案Dim Temp As IntegerTemp=a : a=b : b=Temp题目说明题目说明单击窗体程序执行结果为:单击窗体程序执行结果为: 10 2 10 2 2 10 2 10 注意注意 变量变量a a和和b b为两个不定值的变量,为两个不定值的变量,因此不
16、能直接用因此不能直接用 a=2 : b=10 a=2 : b=10语句来解决这个问题。语句来解决这个问题。一旦利用赋值语句给变量赋一旦利用赋值语句给变量赋新值,会覆盖原值,所以不能新值,会覆盖原值,所以不能直接用直接用 a=b : b=a a=b : b=a语句来解决这个问题。语句来解决这个问题。20江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计例:求一元一次方程例:求一元一次方程x+5=0x+5=0的解。的解。Private Sub Form_Click() Dim x As Integer 3*x+5=0 Print “x=”;xEnd SubPrivat
17、e Sub Form_Click() Dim x As Integerx=(0-)/3 - Print “x=”;xEnd Sub 语句语句是该例题的算法。是该例题的算法。错误程序错误程序正确程序正确程序总结:总结: 利用程序设计语言处理问题,我们首先要知道的是利用程序设计语言处理问题,我们首先要知道的是怎么解怎么解决问题决问题,其次要知道怎么将解决问题的方法,其次要知道怎么将解决问题的方法用程序设计语言来用程序设计语言来表达表达。21江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计4.2.2 InputBox4.2.2 InputBox函数函数 格式格式 :I
18、nputBox$(,) 功能功能 : 弹出对话框,用户输入数据后回车或单击弹出对话框,用户输入数据后回车或单击“确定确定”按钮后,按钮后,将输入内容赋值给相应的变量;按将输入内容赋值给相应的变量;按ESCESC键或单击键或单击“取消取消”按钮,按钮,返回返回空串空串。22江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计 说明说明 (1 1)promptprompt:必选项。对话框中的提示信息。:必选项。对话框中的提示信息。(2 2)titletitle:可选。对话框的标题。省略则为应用程序名。:可选。对话框的标题。省略则为应用程序名。(3 3)defaultde
19、fault:可选。显示在用户编辑框中的缺省值,省略为空。:可选。显示在用户编辑框中的缺省值,省略为空。(4 4)x,y:x,y:可选。指定对话框的显示位置,省略则居中。可选。指定对话框的显示位置,省略则居中。例:例:i = InputBox(“i = InputBox(“输入数组元素输入数组元素”+Chr(10)+“”+Chr(10)+“第一个元素为第一个元素为:”:”, 程序示例程序示例, , 100)100)缺省值缺省值标题标题提示字符串提示字符串23江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计例:用例:用InputBox函数输入出生日期,计算年龄。函数
20、输入出生日期,计算年龄。Option ExplicitOption ExplicitPrivate Sub Form_Click()Private Sub Form_Click() Dim BirthDay As Date, Age As Integer Dim BirthDay As Date, Age As Integer BirthDay = InputBox( BirthDay = InputBox(输入出生日期输入出生日期, , 计算年龄计算年龄) Age = Year(Date) - Year(BirthDay) Age = Year(Date) - Year(BirthDay)
21、Print Print 你今年:你今年:; Age; ; Age; 岁岁 End SubEnd Sub24江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计4.2.3 MsgBox4.2.3 MsgBox函数函数格式格式:MsgBox(Prompt,Button,Title,HelpFile,Context) 功能功能 :向用户发布提示信息,并要求用户作出必要的响应。:向用户发布提示信息,并要求用户作出必要的响应。 说明说明 : (1 1)Prompt:Prompt:必选项。字符串表达式,对话框中的提示信息。必选项。字符串表达式,对话框中的提示信息。 (2 2)B
22、utton:Button:指定显示按钮的数目及形式,使用的图标样式,指定显示按钮的数目及形式,使用的图标样式,这是一个由这是一个由4 4个数值常量组成的式子,形式为个数值常量组成的式子,形式为c1+c2+c3+c4c1+c2+c3+c4,用,用于决定信息框中按钮的个数和类型以及出现在信息框中的图标于决定信息框中按钮的个数和类型以及出现在信息框中的图标类型,各个参量的可选值及其功能类型,各个参量的可选值及其功能; ; 详见详见P.62P.62表表4.24.2 (3 3)Title:Title:对话框标题栏的显示信息。对话框标题栏的显示信息。26江苏计算机等江苏计算机等级考试级考试 Visual
23、Basic 程序设计程序设计MsgBox MsgBox 需要重新来一次需要重新来一次?, 2 + 32 + 256 + 4096, ?, 2 + 32 + 256 + 4096, 询问询问 MsgBox MsgBox 数据非法,请重输!数据非法,请重输!,1 + 16 + 0 + 4096, ,1 + 16 + 0 + 4096, 警告警告 举举 例例27江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计方法一方法一: 发布提示信息,无须用户响应,在程序中作为独立发布提示信息,无须用户响应,在程序中作为独立语句存在语句存在,不加括号;不加括号;例:例: MsgBo
24、x 非法数据!非法数据!, , 警告警告如果省略其中参数,如果省略其中参数,逗号不能省略逗号不能省略MsgBox函数的用法函数的用法方法二方法二: 需要用户响应,和普通函数调用方法相同。需要用户响应,和普通函数调用方法相同。例:例: Response=MsgBox(真的删除该项吗?真的删除该项吗?,4+48,提示信息提示信息) If Response=vbYes Then Else End If28江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计4.3 4.3 4.3 4.3 分支结构与分支结构语句分支结构与分支结构语句分支结构与分支结构语句分支结构与分支结构语
25、句4.3.1 If-Then-Else- End If语句语句4.3.2 Select- Case-End Select语句语句29江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计1、 If-Then-Else语句语句格式格式1:If Then Else End If4.3.1 If-Then-Else- End If4.3.1 If-Then-Else- End If语句语句逻辑变量、关系表达逻辑变量、关系表达式、逻辑表达式式、逻辑表达式B组语句组语句条件?条件?不成立不成立成成立立A组语句组语句 逻辑框图逻辑框图 : 功能功能 : 如果条件成立,则执行如果条
26、件成立,则执行A A组语句,组语句,否则执行否则执行B B组语句。组语句。 说明说明 :IfIf和和End IfEnd If语句成对出现,缺一不可;语句成对出现,缺一不可;ElseElse和和B组语句组语句部分可以省略部分可以省略, ,当条件不成立时当条件不成立时, ,直接执行直接执行End IfEnd If的的后继语句;后继语句;30江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计Private Sub cmdCalculate_Click() Dim x as Single x=Val(text1.text) If x= 0 Then Text2.text
27、= Str(Sqr(x) Else Text2.text = 数据小于数据小于0,错误!,错误! End IfEnd SubPrivate Sub cmdExit_Click() EndEnd SubPrivate Sub cmdClear_Click() Text1.Text = Text2.Text = Text1.SetFocusEnd Sub例:从键盘输入一个数,求它的平方根。例:从键盘输入一个数,求它的平方根。缩格输入缩格输入31江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计例:计算分段函数例:计算分段函数y y的值。的值。Private Sub c
28、mdCalculate_Click() Dim x As Single,y As Single x=Val(Text1.Text) If x = 0 Then y = 2*Sqr(x+7)-6 Else y = 5*x+Exp(x)-2 End If Text2.Text=Str(y)End SubcmdCalculate32江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计 格式格式22:单行:单行If-Then-ElseIf-Then-Else语句语句 If If Then Then Else Else 2 说明说明 :(1 1)在)在A组语句组语句和和B组语
29、句组语句都只有一个语句时,可使用该格式;都只有一个语句时,可使用该格式;(2 2)End IfEnd If语句省略。语句省略。例:上例可改写为以下程序段。例:上例可改写为以下程序段。Private Sub cmdCalculate_Click() Dim y As Single,x As Single x=Val(Text1.Text) If x = 0 Then y = 2*Sqr(x+7)-6 Else y = 5*x+Exp(x)-2 Text2.Text=Str(y)End Sub33江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计条件满足条件满足?块块
30、1TrueFalse 格式格式33: If Then End If格式格式4:4: If Then 逻辑框图逻辑框图34江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计2.2.2.2.嵌套的嵌套的嵌套的嵌套的IfIfIfIf结构结构结构结构 在在在在If If语句的语句的语句的语句的“ “语句块语句块语句块语句块” ”中包含另一个中包含另一个中包含另一个中包含另一个If If语句,叫做嵌套的语句,叫做嵌套的语句,叫做嵌套的语句,叫做嵌套的If If结构。结构。结构。结构。If Then 外层外层 If Then 内层内层 Else If then Else 最内
31、层最内层 End IfElse If Then End IfEnd If用于解决有多用于解决有多种情况的问题种情况的问题35江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计开始开始边长边长0?是否能组成三角形是否能组成三角形计算计算输出输出出错信息出错信息结束结束是是否否是是否否例:输入三角形的三边例:输入三角形的三边a a、b b、c c,求三角形的面积,求三角形的面积P 64 例例4-1a0 and b0 and c0a+bc and b+ca and a+cb36江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计Private
32、 Sub cmdCalculate_Click() Dim a As Single,b As Single,c As Single,p As Single,s As Single a=Val(Text1.Text) b=Val(Text2.Text) c=Val(Text3.Text) If (1) Then If a+bc And b+ca And c+ab Then p=(a+b+c)/2 s=Sqr(p*(p-a)*(p-b)*(p-c) Text4.Text=Str(s) Else Text4.Text=“不能构成三角形不能构成三角形” End If Else Text4.Text=“
33、边长不能小于边长不能小于0 0” End IfEnd Sub计算公式:计算公式:其中:其中:a0 And b0 And c037江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计例:计算分段函数例:计算分段函数y y的值。的值。Private Sub cmdCalculate_Click() Dim x As Single,y As Single x=Val(Text1.Text) If x0 Then y=1/(x-5) Else If x5 Then y=3*x2+4*x+5 Else y=Log(x) End If End If Text2.Text=Str
34、(y)End Sub0538江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计例:输入分数并判断等级分。计算规则如下:例:输入分数并判断等级分。计算规则如下: 分数分数 100-90 89-80 79-70 69-60 60 100-90 89-80 79-70 69-60 = 90 And Score = 80 Then Degree = B Else If Score = 70 Then Degree = C Else If Score = 60 Then Degree = D Else Degree = E End If End If End If End
35、If Text2.Text = Degree End IfEnd Sub缺点:缺点: 嵌套层次过多,结构嵌套层次过多,结构不清晰,容易出错不清晰,容易出错。从文本框取数据从文本框取数据向文本框放数据向文本框放数据39江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计3 3、多分支、多分支If-Then-ElseIfIf-Then-ElseIf语句语句 格式格式 : IfIf Then Then ElseIf ElseIf Then Then ElseIf ElseIf Thenn Then Else Else End If End If 功能功能 :- -对条件自
36、上而下依次判断对条件自上而下依次判断, ,若条件若条件i i成立成立, ,则执行相应的则执行相应的Ai组语句组语句;- -若所有条件都不成立,则执行若所有条件都不成立,则执行An+1组语句组语句。- -无论执行了哪个语句块,都将执行无论执行了哪个语句块,都将执行End IfEnd If的后继语句。的后继语句。条件条件1条件条件2假假假假真真真真语句块语句块1语句块语句块2条件条件 n真真假假语句块语句块n语句块语句块n+140江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计(1 1)该语句结构可以解决多分支问题,只有一个)该语句结构可以解决多分支问题,只有一个E
37、nd End IfIf语句,语句,避免避免IfIf语句嵌套层数过多的情况;语句嵌套层数过多的情况;(2 2)ElseElse语句可以省略;语句可以省略;(3 3)该结构是一个单出口的结构,即该结构是一个单出口的结构,即只会执行只会执行一组语句一组语句,若条,若条件中有两个成立,则按语句的顺序执行前面的件中有两个成立,则按语句的顺序执行前面的一组语句。一组语句。说说 明明41江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计Private Sub Text1_KeyPress(KeyAscii As Integer) Dim Score As Integer, De
38、gree As String If KeyAscii = 13 Then Score = Val(Text1.Text) If Score = 90 And Score = 80 Then Degree = B ElseIf Score = 70 Then Degree = C ElseIf Score = 60 Then Degree = D Else Degree = E End If Text2.Text = Degree End IfEnd Sub特点:特点:结构清晰。结构清晰。将上例用将上例用If-Then-ElseIfIf-Then-ElseIf语句改写:语句改写:90Score=
39、80 ?42江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计格式格式:Select Case Case Case Case Case Else End Select 功能功能 : 计算测试表达式的值,自计算测试表达式的值,自上而下检查测试条件上而下检查测试条件; ; 若表达式的值符合测试若表达式的值符合测试 i i,则执行相应的语句块,则执行相应的语句块 i i; 若所有条件都不成立,则若所有条件都不成立,则执行语句块执行语句块n+1n+1。无论执行了。无论执行了哪个语句块,都将执行哪个语句块,都将执行End End SelectSelect的后继语句。的后继语
40、句。4.3.2 4.3.2 多分支多分支Select-Case-End SelectSelect-Case-End Select语句语句43江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计(1 1)测试表达式可以是算术表达式或字符表达式;)测试表达式可以是算术表达式或字符表达式;(2 2)测试条件有四种形式:)测试条件有四种形式:v 常量,如常量,如2 2、3 3、“A”“A”等等v 闭区间闭区间,如,如3 3 ToTo 78 78、“B” “B” ToTo“H”“H”等等v 开区间,如开区间,如IsIs2020、 IsIs“P”“P”等等v 以上三种形式的组合
41、,以以上三种形式的组合,以逗号间隔逗号间隔,条件组合是,条件组合是或或的关系,的关系,不能表示与的关系不能表示与的关系 (3 3)Case ElseCase Else语句部分可以省略;语句部分可以省略;(4 4)以)以End SelectEnd Select语句结束;语句结束;(5 5)该结构是一个单出口的结构,即该结构是一个单出口的结构,即只会执行一个语句块只会执行一个语句块,若条,若条件中有两个成立,则按语句的顺序执行前面的语句块。件中有两个成立,则按语句的顺序执行前面的语句块。说说 明明44江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计例:将上例用例:将
42、上例用Select CaseSelect Case语句改写。语句改写。Private Sub Text1_KeyPress(KeyAscii As Integer) Dim Score As Integer, Degree As String If KeyAscii = 13 Then Score = Val(Text1.Text) Select Case Score Case 90 To 100 Degree = A Case 80 To 89 Degree = B Case 70 To 79 Degree = C Case 60 To 69 Degree = D Case Is60 Deg
43、ree = E End Select Text2.Text = Degree End IfEnd Sub45江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计练习:练习:键盘输入三个数,将它们从大到小依次排列输出。键盘输入三个数,将它们从大到小依次排列输出。Private Sub Form_Click()Dim a As Integer, b As Integer, c As Integer, temp As Integer a = InputBox(输入输入a, 顺序输出顺序输出) b = InputBox(输入输入b, 顺序输出顺序输出) c = InputB
44、ox(输入输入c, 顺序输出顺序输出) If a b Then temp = a a = b b = temp End If If a c Then Print a, b, c Else Print a, c, b End IfEnd Sub保证保证a为为a,b两数中的大值两数中的大值46江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计分支结构的适用情况分支结构的适用情况l验证用户输入数据的合法性验证用户输入数据的合法性l分段函数计算分段函数计算l用于区分等级用于区分等级l其他须根据条件不同执行不同操作的情况其他须根据条件不同执行不同操作的情况47江苏计算机等江
45、苏计算机等级考试级考试 Visual Basic 程序设计程序设计4.4 4.4 4.4 4.4 循环结构与循环结构语句循环结构与循环结构语句循环结构与循环结构语句循环结构与循环结构语句4.4.1 Do-loop循环结构语句循环结构语句(条件循环)(条件循环)4.4.2 For-Next 循环结构语句循环结构语句(计数循环)(计数循环)4.4.3 循环嵌套循环嵌套48江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计 由一定的条件控制,反复执行某个程序段的程序结构称由一定的条件控制,反复执行某个程序段的程序结构称为为循环结构循环结构。 用于解决一些需要重复进行某些
46、操作的问题。用于解决一些需要重复进行某些操作的问题。 循环要素:循环要素: & & 循环控制条件循环控制条件 条件或逻辑表达式条件或逻辑表达式 & & 循环体循环体 重复执行的语句块重复执行的语句块 & & 为防止死循环,在循环体内必须要有对应语句,为防止死循环,在循环体内必须要有对应语句,使得循环控制条件会不满足,结束循环运行。使得循环控制条件会不满足,结束循环运行。基本概念基本概念49江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计例:在窗体上打印例:在窗体上打印10行行“Hello”。 循环控制条件循环控制条件 是否已打印了是否已打印了1010行行 循环体
47、循环体在窗体上打印一行在窗体上打印一行“Hello”“Hello” 提示:要设立一个变量,用于记录已打印的行数,每打提示:要设立一个变量,用于记录已打印的行数,每打印一行,计数变量要加印一行,计数变量要加1 1,循环控制条件即计数变量小于等于,循环控制条件即计数变量小于等于101050江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计一、一、“当型当型”循环循环条件成立时,执行循环体条件成立时,执行循环体条件?条件?循环体循环体成立成立循环循环的后继语句的后继语句不成立不成立条件?条件?循环体循环体不成立不成立循环循环的后继语句的后继语句成立成立图图2 2:先执行
48、一次循环体,然后再判断条件,决定是否继续执行循:先执行一次循环体,然后再判断条件,决定是否继续执行循环,此结构环,此结构至少执行一次循环体至少执行一次循环体。图图 1图图 2图图1 1:先判断条件,当条件成立则执行循环体,否则执行循环结构:先判断条件,当条件成立则执行循环体,否则执行循环结构的后续语句。的后续语句。51江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计二、二、“直到型直到型”循环循环条件不成立时,执行循环体条件不成立时,执行循环体条件?条件?循环体循环体不成立不成立循环循环的后继语句的后继语句成立成立条件?条件?循环体循环体成立成立循环循环的后继语
49、句的后继语句不成立不成立图图3 3:先判断条件,条件不成立则执行循环体,直到条件不成立,:先判断条件,条件不成立则执行循环体,直到条件不成立,执行循环结构的后续语句。执行循环结构的后续语句。图图 3图图 4图图4 4:先执行一次循环体,再判断条件,决定是否继续执行循环。:先执行一次循环体,再判断条件,决定是否继续执行循环。52江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计 4.4.1 Do-Loop 4.4.1 Do-Loop 循环结构语句循环结构语句格式一格式一 Do While Loop条件?条件?循环体循环体成立成立Loop的后继语句的后继语句不成立不成
50、立执行步骤:执行步骤:1 判断条件是否成立。如果条件判断条件是否成立。如果条件不成立,转向第不成立,转向第4步步2 执行循环体;执行循环体;3 转向执行第转向执行第1步;步;4 执行执行Loop语句的后继语句。语句的后继语句。当当型型循循环环53江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计Private Sub Form_click() Dim i as integer i=0 Do While i10 print “hello” i=i+1 LoopEnd Sub上例的实现:上例的实现:缩格缩格54江苏计算机等江苏计算机等级考试级考试 Visual Bas
51、ic 程序设计程序设计例例 求求S=1+2+3+4+100Private Sub Form_click() Dim n as Integer,s as Long n=1 s=0 Do While n=100 s=s+n n=n+1 Loop Print “1+2+3+100=”;sEnd Sub实现累加实现累加55江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计格式二格式二: Do Loop While 条件?条件?循环体循环体不成立不成立Loop的后继语句的后继语句成立成立执行步骤:执行步骤:1 执行循环体;执行循环体; 2 判断条件是否成立。如果条判断条件是
52、否成立。如果条件成立,转向第件成立,转向第 1 步步3 条件不成立,则结束循环,条件不成立,则结束循环,执行执行Loop语句的后继语句。语句的后继语句。当当型型循循环环56江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计格式三格式三 Do Until Loop条件?条件?循环体循环体不成立不成立Loop的后继语句的后继语句成立成立执行步骤:执行步骤:1 判断条件是否成立。如果条判断条件是否成立。如果条件成立,转向第件成立,转向第4步步2 执行循环体;执行循环体;3 转向执行第转向执行第 1 步;步;4 执行执行Loop语句的后继语句。语句的后继语句。直直到到型型
53、循循环环57江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计格式四格式四 Do Loop Until 条件?条件?循环体循环体不成立不成立Loop的后继语句的后继语句成立成立执行步骤:执行步骤:1 执行循环体;执行循环体; 2 判断条件是否成立。如果条判断条件是否成立。如果条件不成立,转向第件不成立,转向第 1 步,若条步,若条件成立,则执行件成立,则执行 第第3步步 3 执行执行Loop语句的后继语句。语句的后继语句。直直到到型型循循环环58江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计(1 1)While While 短语总
54、是在条件成立时,继续进行循环;条件短语总是在条件成立时,继续进行循环;条件不成立时,结束循环。因此用于不成立时,结束循环。因此用于“当型当型”循环;循环;(2 2)Until Until 短语总是在条件不成立时,执行循环体;条件短语总是在条件不成立时,执行循环体;条件成立时,则结束循环。因此称为成立时,则结束循环。因此称为“直到型直到型”循环;循环;(3 3)上述两条短语是可以相互转换的。)上述两条短语是可以相互转换的。总总 结结 Do While i=10 print “hello” i=i+1 Loop59江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计格式
55、五(特殊形式)格式五(特殊形式): Do Loop执行过程:反复执行循环体。执行过程:反复执行循环体。该结构称为该结构称为“死循环死循环“,在循环体,在循环体内必须通过内必须通过 Exit Do 语句强制退出语句强制退出循环体。循环体。Exit Do语句一般与语句一般与If-then语句结合语句结合使用,即当满足某一条件时,才强使用,即当满足某一条件时,才强制退出循环。制退出循环。 If Then Exit Do循环体循环体Loop后续语句后续语句 Do print “hello” i=i+1 If i=10 then Exit Do Loop60江苏计算机等江苏计算机等级考试级考试 Visu
56、al Basic 程序设计程序设计(1 1)DoDo和和LoopLoop为循环结构关键字,必须成对出现,缺一不可;为循环结构关键字,必须成对出现,缺一不可;(2 2)循环体为可执行语句组成)循环体为可执行语句组成, ,可以嵌套分支结构和循环结构;可以嵌套分支结构和循环结构;(3 3)语句)语句 Exit Do Exit Do 用于无条件退出循环,可在任意用于无条件退出循环,可在任意Do-LoopDo-Loop语语句结构的循环体中出现。句结构的循环体中出现。(4 4)使用循环结构,一定要避免死循环的出现。)使用循环结构,一定要避免死循环的出现。 Do-Loop Do-Loop语句使用说明语句使用
57、说明61江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计 算法算法分析分析 :求最大公约数的常用方法是:求最大公约数的常用方法是 辗转相除法。辗转相除法。例:求两个数的最大公约数。例:求两个数的最大公约数。P 68 例例4-31810M N R8108 2 8 2 0 2 0R=8R=2R=0M=2即最大公约数即最大公约数62江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计 在该例中,我们使用了三个变量,分别表示被除数(在该例中,我们使用了三个变量,分别表示被除数(m m)、)、除数(除数(n n)及余数()及余数(r r)。)。
58、 Do r=m Mod n m=n n=rLoop Until r=0最大公约数是(最大公约数是( )?)?63江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计 由于输入的数据由于输入的数据M M和和N N要求是自然数,在程序中应加入对要求是自然数,在程序中应加入对数据的合法性进行检验的部分;数据的合法性进行检验的部分; 考虑到程序的应用范围,数据类型可选用长整型。考虑到程序的应用范围,数据类型可选用长整型。 问题分析及界面设计问题分析及界面设计64江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计Private Sub Comma
59、nd1_Click() Dim m As Long, n As Long, r As Long m = Val(Text1.Text) 取数据取数据M n = Val(Text2.Text) 取数据取数据N If m Int(m) Or m 1 Or n Int(n) Or n 1 Then Text3.Text = 数据错误!数据错误! Else Do 求最大公约数求最大公约数 r = m Mod n m = n n = r Loop Until r = 0 Text3.Text = CStr(m) 输出最大公约数输出最大公约数 End If End Sub Private Sub Comm
60、and2_Click() Text1.Text = Text2.Text = Text3.Text = End Sub Private Sub Command3_Click() End End Sub检验数据检验数据合法性合法性Mod 前后加空格前后加空格65江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计例:将十进制数转换成二进制。例:将十进制数转换成二进制。 算法分析算法分析 :十进制向二进制转换,十进制向二进制转换, 采取的是除采取的是除2 2取余法。取余法。4522221112122252101001高位高位低位低位(45)10=(101101)2解决这
61、类问题必须考虑的是如下几点:解决这类问题必须考虑的是如下几点:(1 1)需要重复运行的操作)需要重复运行的操作除除2 2取余取余(2 2)终止循环的条件)终止循环的条件商为商为0 0a=0?a Mod 2a=a2F结束循环结束循环T66江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计注意:注意:在循环控制条件中必须出现变量,且该变量在循环体中一定在循环控制条件中必须出现变量,且该变量在循环体中一定要改变值,否则会造成要改变值,否则会造成“死循环死循环”,即无休止的循环。,即无休止的循环。若在运行程序过程若出现若在运行程序过程若出现“死循环死循环”,用,用Ctrl
62、+BreakCtrl+Break可可以强制终止程序的执行。以强制终止程序的执行。Private Sub Command1_Click() Dim a As Integer, r as Integer,s As String a = Val(Text1.Text) Do While a 0 r=a Mod 2 a = a 2 Loop Text2.Text = sEnd Subs = Cstr(r) & s将余数逆序输出,即将最新获得的余数,将余数逆序输出,即将最新获得的余数,连接在已获得的余数串的前面连接在已获得的余数串的前面67江苏计算机等江苏计算机等级考试级考试 Visual Basic
63、程序设计程序设计练习练习1 1:计算圆周率的近似值。计算公式如下:计算圆周率的近似值。计算公式如下:计算精确到通项的值小于计算精确到通项的值小于1010-7-7。 提示提示 :s=s+s=s+ 可实现累加。可实现累加。解决求累加和的问题,关键注意两点:解决求累加和的问题,关键注意两点:(1 1)通项的表示;)通项的表示; (2 2)循环的结束条件;)循环的结束条件;68江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计Private Sub Form_Click() Dim Pi As Single, s As Single, r As Single Dim n
64、As Integer n = 1: s = 0ss为累加器为累加器 Do r = 1 / (2 * n - 1) 2求通项求通项 s = s + r n = n + 1 Loop While r 1e-7 Pi = Sqr(8 * s) Print PiEnd Sub69江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计计算精确到通项的绝对值小于计算精确到通项的绝对值小于1010-4-4。练习练习2 2:若公式改为:若公式改为70江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计Private Sub Form_Click() Dim
65、 Pi As Single, s As Single, r As Double Dim n As Integer n = 1: s = 0 Do r = (-1) (n + 1) * 1 / (2 * n - 1)求通项求通项 s = s + r n = n + 1 Loop While Abs(r) 0.0001 Pi = 4 * s Print PiEnd Sub71江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计 格式格式 : For For = To To Step Step 循环体循环体 Next Next 功能功能 :由计数变量控制,由计数变量控制,
66、有限次地执行循环体。有限次地执行循环体。4.4.2 4.4.2 计数循环(计数循环(For-NextFor-Next循环)循环) 步骤步骤 :1. 1. 计算初值、终值和步长值,将初值计算初值、终值和步长值,将初值赋予计数变量;赋予计数变量;2. 2. 比较计数变量和终值,若计数变量比较计数变量和终值,若计数变量大于终值,结束循环;大于终值,结束循环;3. 3. 计数变量小于终值,执行循环体;计数变量小于终值,执行循环体;4. 4. 计数变量计数变量= =计数变量计数变量+ +步长值步长值5. 5. 转向第转向第2 2步。步。计数变量计数变量=初值初值计数变量计数变量终值终值是是循环体循环体计
67、数变量计数变量=计数变量计数变量+步长值步长值否否计算初值,终值,步长计算初值,终值,步长72江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计v For - Next For - Next是关键字,成对出现,缺一不可;是关键字,成对出现,缺一不可;v 循环体由可执行语句组成,可嵌套分支结构和循环结构;循环体由可执行语句组成,可嵌套分支结构和循环结构;v 计数变量应为计数变量应为整型或单精度型整型或单精度型,初值、终值和步长值为相应,初值、终值和步长值为相应类型的表达式;类型的表达式;v 步长值可以为正,也可以为负,省略时默认步长值为步长值可以为正,也可以为负,省
68、略时默认步长值为1 1;v 循环次数为:循环次数为:Int(Int(终值终值- -初值)初值)/ /步长值)步长值)+1+1v Exit For Exit For语句可以出现在循环体中,用于无条件退出循环语句可以出现在循环体中,用于无条件退出循环 说说 明明73江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计Private Sub Form_Click() For i = 1 To 10 Step 2 Print i; Next i Print i=; iEnd Sub 执执行行本本程程序序,窗窗体体上上将将显显示示:1 1 3 3 5 5 7 7 9 9 i=
69、11i=11。它它表明循环一共执行了表明循环一共执行了5 5次,退出循环时,次,退出循环时,i i的取值为的取值为1111。例:请写出窗体上打印的内容,以及循环执行的次数。例:请写出窗体上打印的内容,以及循环执行的次数。P 7074江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计 循环控制变量主要是用于控制循环的执行次数循环控制变量主要是用于控制循环的执行次数, , 但我们通过但我们通过合理的设置合理的设置, ,可以在循环体中巧妙加以利用可以在循环体中巧妙加以利用, ,以提高程序的效率以提高程序的效率. . 分析分析 :这个式子有现成的求和公式,在这里主要借助该
70、例体现:这个式子有现成的求和公式,在这里主要借助该例体现一下在循环体中计数变量的应用。一下在循环体中计数变量的应用。 设计数变量为设计数变量为i i,初值为,初值为1 1,终值为,终值为100100,步长值为,步长值为1 1,可省略。,可省略。i i从从1 1变化到变化到2 2、3 3、4 4、100100,正好和式子中的通项变化一致。,正好和式子中的通项变化一致。S=0For i=1 To 100 S=S+iNext iS=0For i=100 To 1 Step -1 S=S+iNext i例:求例:求S=1+2+3+100S=1+2+3+100。S=0:n=0For i=1 To 100
71、 n=n+1 S=S+nNext i75江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计写出下列程序的运行结果写出下列程序的运行结果写出下列程序的运行结果写出下列程序的运行结果Private Sub Form_Click() Dim p As Integer, i As Integer, n As Integer p = 2: n = 20 For i = 1 To n Step p p = p + 2 n = n - 3 i = i + 1 If p = 10 Then Exit For Next i Print i, p, nEnd Sub76江苏计算机等江
72、苏计算机等级考试级考试 Visual Basic 程序设计程序设计分析分析:这类问题没有什么算法,只有将所有情况列举然后检查得:这类问题没有什么算法,只有将所有情况列举然后检查得分情况,直到发现答案为止。设该生共答对分情况,直到发现答案为止。设该生共答对i道题,答错(道题,答错(26-i)道题,道题,如果如果 i*8-(26-i)*5=0那么那么i就是答案。就是答案。i的变化范围是的变化范围是1-26。一旦找到答案,可以立即结束。一旦找到答案,可以立即结束循环。循环。穷举法要点:穷举法要点:-通过循环语句,通过循环语句,遍历所有可能的遍历所有可能的情况;情况;-在循环体内通在循环体内通过条件语
73、句,将过条件语句,将符合条件的情况符合条件的情况找出来。找出来。例:某试卷有例:某试卷有26个问题,答对一题得个问题,答对一题得8分,答错一题扣分,答错一题扣5分,某学生分,某学生回答了全部回答了全部26个问题,总分为个问题,总分为0分,问他答对几道题,答错几道题。分,问他答对几道题,答错几道题。Private Sub Form_Click() Dim i As Integer For i = 1 To 26 If i * 8 - (26 - i) * 5 = 0 Then Exit For Next i Print 答对答对; i; 道道, 答错答错; 26 - i; 道道End Sub条件
74、(关条件(关系表达式)系表达式)77江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计例例4_5 4_5 从字母数字组成的字符串中找出所有的大写从字母数字组成的字符串中找出所有的大写字母并逆序输出字母并逆序输出78江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计一、界面设计(如上图)一、界面设计(如上图)二、算法设计二、算法设计 由题意,所需执行的操作应该是:依次判断字符串中的每由题意,所需执行的操作应该是:依次判断字符串中的每一个字符是否是大写字母,若是,则取出放入结果字符串中。一个字符是否是大写字母,若是,则取出放入结果字符串中
75、。 考虑通过在一个循环结构里面嵌套一个判断结构实现,因考虑通过在一个循环结构里面嵌套一个判断结构实现,因重复执行判断的次数,即字符串的长度重复执行判断的次数,即字符串的长度len(s)len(s)已知,则循已知,则循环结构用环结构用FORFOR语句实现语句实现; ; 判断一个字符是否是大写字母,可先将单个字符从字符串判断一个字符是否是大写字母,可先将单个字符从字符串中取出中取出Mid(s,i,1)Mid(s,i,1),并将该字符直接与,并将该字符直接与“A”“A”、”Z”Z”字符字符进行比较,应大于等于进行比较,应大于等于“A” “A” ,并同时小于等于,并同时小于等于”Z”Z”x=“A” A
76、ND x=“A” AND x= A And x = Z Then t = x & t End If Next i注意与书上代码的比较注意与书上代码的比较80江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计 分析分析 :素数:除了:素数:除了1 1和它本身,不能被其它数整除的数。和它本身,不能被其它数整除的数。 算法考虑用穷举法。算法考虑用穷举法。 程序程序 : For i = 2 To x - 1 If x Mod i = 0 Then Exit For Next i例:判断一个数是否为素数例:判断一个数是否为素数. .If Then Print x; 是素数!
77、是素数!Else Print x; 不是素数!不是素数!End Ifi = x 错误程序错误程序 For i=For i=2 2 To To x-1x-1 If x Mod i=0 Then If x Mod i=0 Then Print x; Print x;不是素数不是素数 Else Else Print x=; Print x=;是素数是素数 End If End IfNext iNext i其实不用整除到其实不用整除到X-1,整除到,整除到Sqr(X),即可判断),即可判断81江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计格式:格式:For For D
78、o Do For Do Do For Next Loop Loop Next Next Next Loop Loop 4.4.3 4.4.3 循环的嵌套循环的嵌套 所谓循环的嵌套,是指在循环结构中包含另一个循环结构。所谓循环的嵌套,是指在循环结构中包含另一个循环结构。条件循环和计数循环可以相互嵌套。条件循环和计数循环可以相互嵌套。82江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计例:在窗体上按行依次打印例:在窗体上按行依次打印1 1到到1010,每个数字打印,每个数字打印1010遍。遍。 分析分析 :这是一个典型的需要用二重循环结构的例子,外层用于控:这是一个
79、典型的需要用二重循环结构的例子,外层用于控制打印数字的个数,内层控制每个数字打印的遍数。制打印数字的个数,内层控制每个数字打印的遍数。Private Sub Form_cliclk() Dim i as integer,j as integer For i=1 to 10 For j=1 to 10 Print i; Next j Print Next IEnd Sub问题问题: 在执行整个程序中在执行整个程序中 print i 语句共执行了多少次?语句共执行了多少次?打印打印10个数字个数字每个数字打印每个数字打印10遍遍换行换行83江苏计算机等江苏计算机等级考试级考试 Visual Bas
80、ic 程序设计程序设计(1 1)内层循环必须完全包含在外层循环之中,不能交叉;)内层循环必须完全包含在外层循环之中,不能交叉;(2 2)内层循环中还可以嵌套循环结构,但建议不要使用多层循)内层循环中还可以嵌套循环结构,但建议不要使用多层循环,解决一般问题最多需要三重循环;环,解决一般问题最多需要三重循环;(3 3)在多重)在多重DO-LOOPDO-LOOP循环中,若有循环中,若有EXIT DOEXIT DO语句,则只会强制退语句,则只会强制退出该语句所在的循环,并执行出该语句所在的循环,并执行LOOPLOOP的后续语句,并不会退出所的后续语句,并不会退出所有的循环。有的循环。(4 4)在多重)
81、在多重FOR-NEXTFOR-NEXT循环中,若有循环中,若有EXIT FOREXIT FOR语句,则只会强制语句,则只会强制退出该语句所在的循环,并执行退出该语句所在的循环,并执行NEXTNEXT的后续语句,并不会退出的后续语句,并不会退出所有的循环。所有的循环。说说 明明84江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计4.5 4.5 4.5 4.5 程序示例程序示例程序示例程序示例85江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计例:产生例:产生10个个2050随机整数,打印在窗体上,随机整数,打印在窗体上,并指出最大值
82、和最小值。并指出最大值和最小值。 分析分析 :1. 1. 要求得到要求得到1010个随机数,用记数循环个随机数,用记数循环FORFOR语句实现。语句实现。2. 2. 产生随机整数的方法是产生随机整数的方法是 x = Int x = Int(上界(上界 - -下界下界+1+1)*Rnd*Rnd)+ +下界下界 必须和必须和RandomizeRandomize语句配合使用。语句配合使用。3. 3. 要求出最大值和最小值,则每产生一个随机数,即与已知要求出最大值和最小值,则每产生一个随机数,即与已知的最大数、最小数比较,若它大于已知的最大数,则它是新的的最大数、最小数比较,若它大于已知的最大数,则它
83、是新的最大数;若它小于已知的最小数,则它是新的最小数。最大数;若它小于已知的最小数,则它是新的最小数。86江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计Private Sub Form_Click() Dim i As Integer, x As Integer, Dim max As Integer, min As Integer For i = 1 To 10 x = Int(Rnd * 31) + 20 Print x; Next I Print Print max=; max Print min=; minEnd Submax = 0: min = 5
84、1If max x Then min = x87江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计Private Sub Form_Click() Dim S As Long, i As Integer Dim j As Integer, fact As Long For i = 1 To 10 fact = 1 For j = 1 To i fact = fact * j Next j S = S + fact Next i Print s=; SEnd SubPrivate Sub Form_Click() Dim S As Long, i As Intege
85、r Dim fact As Long fact = 1 For i = 1 To 10 fact = fact * i S = S + fact Next i Print s=; SEnd Sub问题:这两段程序的功能分别是什么?问题:这两段程序的功能分别是什么?请注意多重循环中赋初值语句的位置。请注意多重循环中赋初值语句的位置。88江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计 分析分析 :1 1设要解的方程为设要解的方程为f(x)=0,f(x)=0,并已知一个不够精确的初始解并已知一个不够精确的初始解X X0 0,则有则有牛顿迭代公式:牛顿迭代公式:X X
86、n+1n+1=X=Xn n-f(X-f(Xn n)/f)/f(X(Xn n) n=0) n=0,1 1,2 2,2 2利用迭代公式,依次求得利用迭代公式,依次求得X X1 1,X X2 2,X X3 3, , 3 3 当当| X| Xn+1n+1-X-Xn n | | 时,时, X Xn+1n+1即为所求得根即为所求得根。3 3 注意此算法的三要素:注意此算法的三要素:迭代公式、初值、和迭代精度迭代公式、初值、和迭代精度(结束条件)(结束条件). .例例4-9 用牛顿迭代法求方程用牛顿迭代法求方程xex-1=0在在X0=0.5附近的一附近的一 个根,要求精确到个根,要求精确到10-7。89江苏
87、计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计Private Sub Form_Click() Dim x as Single,x0 as Single x=0.5 Do x0=x x=x0-(x0*exp(x0)-1)/(exp(x0)*(x0+1) Loop Until Abs(x-x0)=1e-7 Print xEnd Sub90江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计例例4_10 4_10 求反码求反码91江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计Private Sub Comm
88、and1_Click() Dim Source As String, i As Integer Source = Text1.Text If Mid(Source, 1, 1) 1 Then Text2 .Text= 正数没有反码正数没有反码 Else Text2 = Source End IfEnd Sub For i = 2 To Len(Source) If Mid(Source, i, 1) = 1 Then Mid(Source, i, 1) = 0 Else Mid(Source, i, 1) = 1 End If Next iMid函数的特殊功能用指定的字符替换字符串中指定位置的
89、内容函数的特殊功能用指定的字符替换字符串中指定位置的内容92江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计练练 习习(1)随机产生)随机产生10个个201000之间的整数,分别之间的整数,分别 求出奇数偶数之和;求出奇数偶数之和;(2)求出)求出1000以内的完数;完数即该数是其所有以内的完数;完数即该数是其所有 因子之和,如:因子之和,如:6=1+2+3;93江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计Private Sub Form_Click()Dim n As Integer, i As Integer Dim ou
90、 As Double, ji As Double Print 该组随机数为:该组随机数为: Randomize For i = 1 To 10 n = Int(Rnd * (1000 - 20 + 1) )+ 20 Print n; If n Mod 2 = 0 Then ou = ou + n Else ji = ji + n End If Next i Print Print 奇数之和奇数之和=; ji Print 偶数之和偶数之和=; ouEnd Sub94江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计例:找出例:找出10001000以内的所有完数。所谓
91、完数,是指它的所有的质以内的所有完数。所谓完数,是指它的所有的质因子之和等于它本身的数,如因子之和等于它本身的数,如6=1+2+36=1+2+3。l 解题思路:解题思路: 第一步:找出确定一个数是完数的方法;第一步:找出确定一个数是完数的方法; 第二步:从第二步:从1 1到到10001000依次判断。依次判断。l 算法实现算法实现: : 两层循环:两层循环: 内内层层循循环环用用于于找找出出某某数数 m m 的的所所有有因因子子并并相相加加求求和和,并并在在循循环结束后依据因子和是否与该数相等来判断该数是否是完数;环结束后依据因子和是否与该数相等来判断该数是否是完数; 外层循环外层循环则用于穷举所有则用于穷举所有10001000以内的整数。以内的整数。95江苏计算机等江苏计算机等级考试级考试 Visual Basic 程序设计程序设计Private Sub Form_Click() Dim i As Integer, f As Integer, s As Integer For i = 1 To 1000 s = 0 For j = 1 To i - 1 If i Mod j = 0 Then s = s + j Next j If s = i Then Print i Next iEnd Sub注意注意s赋初值的位置赋初值的位置96