1、第四章第四章 三种基本结构程序设计三种基本结构程序设计 本章内容及要求:本章内容及要求: 1.了解算法概念及算法的表示,掌握用流程图表示算了解算法概念及算法的表示,掌握用流程图表示算法法 2. 熟练掌握赋值语句、熟练掌握赋值语句、EndEnd语句和注释语句等语句及输语句和注释语句等语句及输入入/输出消息框函数的使用;输出消息框函数的使用; 3. 熟练掌握行熟练掌握行ifif语句、块语句、块ifif结构、结构、Select CaseSelect Case情况情况选择结构的使用,掌握选择的嵌套结构;选择结构的使用,掌握选择的嵌套结构; 4. 熟练掌握实现循环结构的熟练掌握实现循环结构的For/Ne
2、xtFor/Next循环结构及循环结构及Exit Exit ForFor语句、语句、Do/LoopDo/Loop循环结构的使用,掌握多重循环。循环结构的使用,掌握多重循环。重点:重点:选择结构及循环结构的实现及其应用选择结构及循环结构的实现及其应用难点:难点:选择的嵌套及多重循环结构选择的嵌套及多重循环结构4.1 算法及算法的表示算法及算法的表示 4. 1.1 算法概述算法概述 什么是算法:什么是算法: 广义地讲:算法是为完成一项任务所应当遵循的一步广义地讲:算法是为完成一项任务所应当遵循的一步一步的规则的、精确的、无歧义的描述,它的总步数是有一步的规则的、精确的、无歧义的描述,它的总步数是有
3、限的。限的。 狭义地讲:算法是解决一个问题采取的方法和步骤的狭义地讲:算法是解决一个问题采取的方法和步骤的描述。描述。下面通过两个简单的例子加以说明:下面通过两个简单的例子加以说明:例例4.1 输入三个数,然后输出其中最大的数。输入三个数,然后输出其中最大的数。 将三个数依次输入到变量、将三个数依次输入到变量、B、C中,设变量中,设变量MAX存放存放最大数。其算法如下:最大数。其算法如下: 例例4.2 输入输入10个数,打印输出其中最大的数。个数,打印输出其中最大的数。算法设计如下:算法设计如下:(1)输入)输入1个数个数,存入变量存入变量A中中,将记录数据个数的变量将记录数据个数的变量N赋值
4、赋值为为1,即,即N=1(2)将)将A存入表示最大值的变量存入表示最大值的变量Max中,即中,即Max=A(3)再输入一个值给)再输入一个值给A,如果,如果AMax 则则 Max=A, 否则否则Max不变不变(4)让记录数据个数的变量增加)让记录数据个数的变量增加1,即,即N=N+1(5)判断)判断N是否小于是否小于10,若成立则转到第(,若成立则转到第(3)步执行,否)步执行,否则转到第(则转到第(6)步。)步。(6)打印输出)打印输出max1) 输入输入A、B、C。2) A与与B中大的一个放入中大的一个放入MAX中。中。3) 把把C与与MAX中大的一个放入中大的一个放入MAX中。中。4)
5、输出输出MAX,MAX即为最大数。即为最大数。4.1.2 算法的特性算法的特性 1有穷性有穷性 一个算法必须经过有限步骤之后就能解决某个问题。事实上,一般的一个算法必须经过有限步骤之后就能解决某个问题。事实上,一般的有限性限制在实际中是不够的,因为尽管解决某个特定问题的执行步有限性限制在实际中是不够的,因为尽管解决某个特定问题的执行步骤量是有限的,但可能对实际计算来说仍太大。一个有用的算法不仅骤量是有限的,但可能对实际计算来说仍太大。一个有用的算法不仅要求步骤有限,同时也要求步骤量合理。要求步骤有限,同时也要求步骤量合理。 2确定性确定性 一个算法的每一步必须是无歧义的和精确定义的。在各种情况
6、下动作一个算法的每一步必须是无歧义的和精确定义的。在各种情况下动作的执行必须严密地确定。的执行必须严密地确定。 3 有有0个或多个输入且有一个或多个输出个或多个输入且有一个或多个输出 输入可定义为算法执行前初始化时给定的一些量,输出指与输入有某输入可定义为算法执行前初始化时给定的一些量,输出指与输入有某种特定关系的,在算法执行完成时产生的一些量。种特定关系的,在算法执行完成时产生的一些量。 4 通用性通用性 一个算法最好是适用于某类问题而不只是适用于某一个问题。这种通一个算法最好是适用于某类问题而不只是适用于某一个问题。这种通用性,尽管不是必要的,但肯定是一有用算法要求的特性用性,尽管不是必要
7、的,但肯定是一有用算法要求的特性 4.1.3 算法的表示算法的表示 一、自然语言与伪代码表示算法一、自然语言与伪代码表示算法自然语言:自然语言:就是指人们日常使用的语言,可以是汉语、就是指人们日常使用的语言,可以是汉语、英语或其它语言。英语或其它语言。伪代码:伪代码:是用介于自然语言和计算机语言之间的文字和是用介于自然语言和计算机语言之间的文字和符号(包括数学符号)来描述算法。符号(包括数学符号)来描述算法。 例如:例例如:例4.1可用如下的伪代码表示可用如下的伪代码表示Begin(算法开始)(算法开始) 输入输入 A,B,C IF AB 则则 AMax 否则否则 BMax IF CMax 则
8、则 CMaxPrint MaxEnd (算法结束算法结束)二、二、 用传统流程图表示算法用传统流程图表示算法处理框起止框I/O框判断框流程线连接点1、传统流程图中的基本符号、传统流程图中的基本符号2、三种基本结构的传统表示、三种基本结构的传统表示(1)顺序结构)顺序结构条件语句1语句2YN语句1语句2(2)选择结构)选择结构条件( a )条件语句组(3)循环结构)循环结构a) 当型循环当型循环b) 直到循环直到循环YNYN( b )语句组例例4.2输入输入10个数,打印输出其中的最大的数的流程图个数,打印输出其中的最大的数的流程图NMaxMax =A输入A开始再输入给AN=N+1输出Max结束
9、YNNYPrivate Sub Form_Click() Dim a%, max%, i% a = Val(InputBox(A=?) max = a For i = 2 To 10 a = Val(InputBox(A=?) If a max Then max = a Next i MsgBox( Max=“ & Str(max)End Sub 最后需要说明的是:上面介绍的算法表示是给人看的,最后需要说明的是:上面介绍的算法表示是给人看的,即是为帮助程序开发人员阅读、编写程序而设计的一种辅即是为帮助程序开发人员阅读、编写程序而设计的一种辅助工具,程序则必须符合计算机语言的语法规则。助工具,程
10、序则必须符合计算机语言的语法规则。 下面是例下面是例4.2的计算机的计算机 程序,即为用计算机语言表示算程序,即为用计算机语言表示算法:法:4.2 顺序结构顺序结构4.2.1 4.2.1 赋值语句赋值语句 形式形式: : 变量名表达式变量名表达式 对象对象.属性表达式属性表达式 功能:功能: 将表达式的值赋值给变量名或指定对象的属性。将表达式的值赋值给变量名或指定对象的属性。 一般用于给变量赋值或对控件设定属性值一般用于给变量赋值或对控件设定属性值. 例:例: sRate!=0.1 Text1.Text 欢迎使用欢迎使用Visual B”说明:说明: 1. 执行过程:先求表达式的值,然后将值赋
11、值给左边的变量。执行过程:先求表达式的值,然后将值赋值给左边的变量。 2. 右边表达式可以是变量、常量、函数调用等特殊的表达式。右边表达式可以是变量、常量、函数调用等特殊的表达式。 3. 不要将不要将“”理解为数学上的等号:理解为数学上的等号: A=A+1 是表示将是表示将A单元的值加后以放回到单元的值加后以放回到A单元单元。执行过程如右图执行过程如右图4赋值符号赋值符号“=”左边一定左边一定只能只能是变量名或对象的属性是变量名或对象的属性引用,不能是常量、符号常量、表达式。引用,不能是常量、符号常量、表达式。 下面的赋值语句都是错的:下面的赋值语句都是错的:5=X 左边是常量。左边是常量。A
12、bs(X)=20 左边是函数调用,即是表达式。左边是函数调用,即是表达式。 5. 赋值符号赋值符号“=”两边的数据类型一般要求应一致。两边的数据类型一般要求应一致。 缺省值缺省值标题题标题题提示提示4.2.2 用户交互函数用户交互函数 1. InputBox函数函数变量名变量名=InputBox$(, , ) 其中其中:提示提示 提示信息提示信息,标题标题 标题区显示标题区显示,缺省缺省输入区缺省值输入区缺省值 有有$ 返回字符类型返回字符类型,否则为数值类型否则为数值类型. 例如,要在屏幕上显示如下的对话框例如,要在屏幕上显示如下的对话框: 例如:有下列语句如下例如:有下列语句如下: Dim
13、 strName As String * 40, strS1 As String * 40 strS1 = “请输入你的姓名请输入你的姓名” + Chr(13) + Chr(10) + “然后单然后单击确定击确定” strName= InputBox$(strS1, “输入框输入框”, , 100,100) 当键盘输入当键盘输入“王晓明王晓明” 后后,变量变量strName获得键盘输入的值获得键盘输入的值.缺省值缺省值标题题标题题提示提示2. MsgBox函数函数 函数形式函数形式:变量变量% = MsgBox(提示提示,按钮按钮图标图标+ 缺省按钮缺省按钮+模式模式,标题,标题) 图标标题提
14、示信息命令按钮说明:说明: “标题标题”和和“提示提示”与与InputBox函数中对应的参数相函数中对应的参数相同;同; “按钮图标按钮图标 +缺省按钮缺省按钮+模式模式”是整型表达式,决是整型表达式,决定信息框按钮数目、出现在信息框上的图标类型及操作模定信息框按钮数目、出现在信息框上的图标类型及操作模式式(见表见表4.1) 若程序中需要返回值,则使用函数,否则可调用过程。若程序中需要返回值,则使用函数,否则可调用过程。 按钮及图标值如下按钮及图标值如下:例例4.1 编一帐号和密码检验程序。编一帐号和密码检验程序。要求: 帐号不超过6位数字,有错,清除原内容再输入. 密码输入时在屏幕上以 “*
15、”代替; 若密码错,显示有关信息,选择“重试”按钮,清除原内容再输入,选择“取消”按钮,停止运行。分析: 帐号6位,MaxLength为6 , 密码PassWordChar为“*”,MsgBox函数设置密码错对话框.4.3 选择结构选择结构 1. IfThen语句语句(单分支结构单分支结构) If Then 语句块语句块 End If 或或 If Then tyx例例:已知两个数已知两个数x和和y,比较它们的,比较它们的大小,大小, 使得使得x大于大于y. If xy Then t=x : x=y: y=t End If 或或 If xy Then t=x: x=y: y=t2. IfThen
16、Else语句语句(双分支结构双分支结构) If Then Else End If If Then Else 例如:输出例如:输出x,y两个中值较大的一个值。两个中值较大的一个值。IF XY Then Print XElse Print YEnd If也可以写成如下的单行形式:也可以写成如下的单行形式: IF XY Then Print X Else Print Y 双分支选择结构执行过程双分支选择结构执行过程 3. IfThenElseIf语句语句(多分支结构多分支结构) 形式形式: If Then ElseIf Then Else 语句块语句块 n+1 End If 例:输入一学生成绩,评定
17、其等级。方法是:例:输入一学生成绩,评定其等级。方法是:90100分为分为“优秀优秀”,8089分为分为“良好良好”,7079分为分为“中等中等”,6069分为分为“及格及格”,60分以为分以为“不合格不合格”执行过程请问以下哪些正确,哪些错误?请问以下哪些正确,哪些错误?IIf 函数 语法:语法:IIf(expr, truepart, falsepart)部分部分描述描述expr必要参数。用来判断真伪的表达式。truepart必要参数。如果 expr 为 True,则返回这部分的值或表达式。falsepart必要参数。如果 expr 为 False,则返回这部分的值或表达式。例如:Check
18、It = IIf(TestMe 1000, Large, Small) 相当于:If TestMe 1000 Then testIt = Large Else testIt = Small End If4.3.2 Select Case语句(情况语句)语句(情况语句)形式:形式:Select Case 变量或表达式变量或表达式Case 表达式列表表达式列表1语句块语句块1Case 表达式列表表达式列表2语句块语句块2Case Else语句块语句块n+1End Select:与:与同类型的下面四种形式之一:同类型的下面四种形式之一:1. 表达式表达式 A +52. 一组枚举表达式一组枚举表达式(
19、用逗号分隔用逗号分隔) 2, 4, 6, 8 3. 表达式表达式1 To 表达式表达式2 60 to 1004. Is 关系运算符表达式关系运算符表达式 Is 60数值型或字符串表达式例 输入百分制成绩mark,显示对应的五级制成绩哪些能实现,哪些不能实现?4.3.3 选择结构的嵌套选择结构的嵌套 在在IF语句的语句的Then分支和分支和Else分支中可以完整地嵌套另一分支中可以完整地嵌套另一IF语句或语句或Select Case语句,同样语句,同样Select Case语句每一个语句每一个Case分分支中都可嵌套另一支中都可嵌套另一IF语句或另一语句或另一Select Case语句。下面是两
20、种语句。下面是两种正确的嵌套形式:正确的嵌套形式:(1)IF Then . if Then Else . End If . Else . IF Then . Else . End If . End IF(2)IF Then . Select Case Case IF Then Else . End If Case. . End Select .End IF注意:注意: 只要在一个分支内嵌套,不出现交叉,满足结构只要在一个分支内嵌套,不出现交叉,满足结构规则,其嵌套的形式将有很多种,嵌套层次也可以任意规则,其嵌套的形式将有很多种,嵌套层次也可以任意多。多。 对于多层对于多层IF嵌套结构中,要特别
21、注意嵌套结构中,要特别注意IF与与Else的配的配对关系,一个对关系,一个Else必须与必须与IF配结,配对的原则是:在写配结,配对的原则是:在写含有多层嵌套的程序时,含有多层嵌套的程序时,V会自动缩进对齐方式,会自动缩进对齐方式,这样容易阅读和维护。这样容易阅读和维护。4.3.44.3.4常见错误常见错误1在选择结构中缺少配对的结束语句对多行式的If块语句中,应有配对的 End If语句结束。2. 多边选择ElseIf关键字的书写和条件表达式的表示 ElseIf 不要写成Else If; 多个条件表达式次序问题3. Select Case语句的使用 Select Case 后不能出现多个变量
22、;Case子句后不用条件变量进行逻辑运算4.4 4.4 循环结构循环结构1. For循环语句循环语句 (一般用于循环次数已知一般用于循环次数已知)形式形式 For 循环变量初值循环变量初值 to 终值终值 Step 步长步长 语句块语句块Exit For 语句块语句块 Next 循环变量循环变量 循环变量在终值内 图 1-3-13 For 循环语句 语句块 Exit For 语句块 循环变量加步长 T F 循 环 变 量 得 初值 循环体循环体 0 初值初值终值终值 =1 时时,可省略可省略终值终值=0 死循环死循环 步长步长循环次数循环次数) 1(步长初值终值Int例例: For I=2 T
23、o 13 Step 3 Label1.Text= Label1.Text & Str(I) & Chr(13) &Chr(10) Next I Label1.Text= Label1.Text & “I=”& Str(I)4) 1(3213Int循环执行次数循环执行次数 输出输出I的值分别为的值分别为: 2 5 8 11 出了循环输出为出了循环输出为: I=14例例4.5 编程计算:编程计算:S=1+2+3+100Dim S%, I%S=0 累加前变量累加前变量S为为0For I=1 to 100 S=S+INext IMsgBox( S=“ & S) 当当N=100N=N+1打印打印SS=0
24、,N=1S=S+N例例4-5的算法流程图的算法流程图形式形式1:(当型循环):(当型循环) Do While 语句块语句块 Exit Do 语句块语句块 Loop Do 语句块语句块 Exit Do 语句块语句块 Loop While 条 件 F T Exit D o 语 句 块 语 句 块 D o W hile Loop 执 行 过 程 4.4.2 DoLoop循环语句循环语句 T F Exit Do 语 句 块 语 句 块 条 件 Do Loop W hile 的 执 行 过 程 形式形式2:(直到循环)直到循环) Do Until 语句块语句块 Exit Do 语句块语句块LoopDo
25、语句块语句块 Exit Do 语句块语句块Loop Until 条 件语句块语句块TFExit Do条 件语句块语句块TFExit Do Do UntilLoop执行过程执行过程 DoLoop Until执行过程执行过程 说明:说明:(1 1)当使用)当使用WhileWhile 构成循环时,当条件为构成循环时,当条件为“真真” 则反复执行循环体,当条件为则反复执行循环体,当条件为“假假”,则退出循环。,则退出循环。(2)当使用)当使用Until 构成循环时,当条件为构成循环时,当条件为“假假”,则反复执行循环体,直到条件成立,即为,则反复执行循环体,直到条件成立,即为“真真”时,时, 则退出循
26、环。则退出循环。(3 3)在循环体内一般应有一个专门用来改变条件表达式中)在循环体内一般应有一个专门用来改变条件表达式中 变量的语句,以使随着循环的执行,条件趋于不成立变量的语句,以使随着循环的执行,条件趋于不成立 (或成立),最后达到退出循环。(或成立),最后达到退出循环。(4)语句)语句Exit Do的作用是退出它所在的循环结构,它只能的作用是退出它所在的循环结构,它只能 用在用在DO/Loop结构中,并且常常是同选择结构一起出现在循结构中,并且常常是同选择结构一起出现在循环结构中,用来实现当满足某一条件时提前退出循环。环结构中,用来实现当满足某一条件时提前退出循环。 例例4.7 求两个整
27、数的最大公约数、最小公倍数求两个整数的最大公约数、最小公倍数 Dim n%,m%,nm%,r%m=Val(InputBox(m=)n=Val(InputBox(n=)nm=n*mIf mn Then t=m: m=n: n=t r=m mod n Do While (r 0) m=n n=r r= m mod n LoopPrint 最大公约数最大公约数=, n Print 最小公倍数最小公倍数=, nm/n 分析:求最大公约数的算法思想:分析:求最大公约数的算法思想:(最小公倍数最小公倍数=两个整数之积两个整数之积/最大公约数最大公约数)(1) 对于已知两数对于已知两数m,n,使得,使得mn
28、;(2) m除以除以n得余数得余数r;(3) 若若r=0,则,则n为求得的最大公约数,算法结束;否则执行为求得的最大公约数,算法结束;否则执行(4);(4) mn,nr,再重复执行,再重复执行(2)。 4.4.4 循环的嵌套循环的嵌套多重循环结构多重循环结构 如果在一个循环内完整地包含另一个循环结构,则称如果在一个循环内完整地包含另一个循环结构,则称为多重循环,或循环嵌套,嵌套的层数可以根据需要而定,为多重循环,或循环嵌套,嵌套的层数可以根据需要而定,嵌套一层称为二重循环,嵌套二层称为三重循环。嵌套一层称为二重循环,嵌套二层称为三重循环。 上面介绍的几种循环控制结构可以相互嵌套,下面是上面介绍
29、的几种循环控制结构可以相互嵌套,下面是几种常见的二重嵌套形式:几种常见的二重嵌套形式:(1)For I=. . For J=. . Next J . Next I(2)For I=. . Do While/Until . . Loop . Next I(3)Do While. . For J=. . Next J . Loop(4)Do While/Until. . Do While/Until . . Loop . Loop对于循环的嵌套,要注意以下事项:对于循环的嵌套,要注意以下事项:(1) 内循环变量与外循环变量不能同名;内循环变量与外循环变量不能同名;(2) 外循环必须完全包含内循环,
30、不能交叉;外循环必须完全包含内循环,不能交叉; (3) 不能从循环体外转向循环体内,也不能从外循环转向内循环不能从循环体外转向循环体内,也不能从外循环转向内循环. 正正 确确错错 误误 For ii =1 To 10 For jj=1 To 20 Next ii Next jj For ii =1 To 10 For ii=1 To 20 Next ii Next ii For ii =1 To 10 For jj=1 To 20 Next jj Next ii For ii =1 To 10 Next ii For ii =1 To 10 Next ii 4.4.5 几种循环语句比较几种循环
31、语句比较 4.4.6 循环结构与选择结构的嵌套循环结构与选择结构的嵌套 在循环结构中可以完整嵌套选择结构即整个选择结在循环结构中可以完整嵌套选择结构即整个选择结构都属于循环体。在选择结构中嵌套循环结构时,则要构都属于循环体。在选择结构中嵌套循环结构时,则要求整个循环结构必须完整地嵌套在一个分支内,一个循求整个循环结构必须完整地嵌套在一个分支内,一个循环结构不允许出现在两个或两个以上的分支内。环结构不允许出现在两个或两个以上的分支内。 (1)For I= IF Then End IF Next I(6) IF Then For I= End IF Next I(5)Select Case For
32、 I= Case Case Next I End Select(3)For I= IF Then Next I End IF(2)IF Then For I= Next I End IF0(4)For I= Select Case Case Case End Select Next I4.5 4.5 其它辅助控制语句其它辅助控制语句 4.5.1 Goto 语句语句 形式形式: Go To 标号标号|行号行号 作用是无条件地转移到标号或行号指定的那行语句作用是无条件地转移到标号或行号指定的那行语句. 标号是一个字符序列标号是一个字符序列,行号是一个数字序列。行号是一个数字序列。 例例 求求100
33、以内的素数以内的素数 判别某数判别某数m是否为素数最简单的方法是是否为素数最简单的方法是: 对于对于m 从从i=2,3,m-1判别判别m能否被能否被i整除,只要有整除,只要有一个能整除一个能整除 ,m不是素数,否则不是素数,否则m是素数。是素数。 For m = 2 To 100 For i = 2 To m - 1 If (m Mod i) = 0 Then GoTo NotNextM Next i Print m NotNextM: Next m4.5.2 Exit 语句语句 Exit 语句用于退出语句用于退出 Do.Loop、For.Next、Function或或Sub代码块。代码块。
34、对应的使用格式为:对应的使用格式为:Exit Do、Exit For、Exit Function、Exit Sub。分别表示退出。分别表示退出DO循环、循环、For循环、函循环、函数过程、子过程。数过程、子过程。例如:例如: 下面的例子是使用下面的例子是使用 Exit 语句退出语句退出 For.Next 循环、循环、Do.Loop 循环及子过程。循环及子过程。Private Sub Form_Click() Dim I%, Num% Do 建立无穷循环。建立无穷循环。 For I = 1 To 100 循环循环 100 次。次。 Num = Int(Rnd * 100) 生成一个生成一个099
35、的随机数。的随机数。 Select Case Num Case 10: Exit For 退出退出 For.Next 循环。循环。 Case 50: Exit Do 退出退出 Do.Loop 循环。循环。 Case 64: Exit Sub 退出子过程。退出子过程。 End Select Next I LoopEnd Sub4.5.3 End 语句语句 形式:形式: End 功能:结束一个程序的运行。功能:结束一个程序的运行。 在在Visual Basic中还有多种形式的中还有多种形式的End语句,用于结语句,用于结束一个程序块或过程。束一个程序块或过程。 其形式有:其形式有: End If
36、End Select End With End Sub End Function等等它们与对应的语句配对使用。它们与对应的语句配对使用。 4.5.4 暂停语句暂停语句 Stop语句用来暂停程序的执行,相当于在事件代码中语句用来暂停程序的执行,相当于在事件代码中设置断点。设置断点。语法格式为:语法格式为: Stop说明:说明:1. Stop语句的主要作用是把解释程序置为中断语句的主要作用是把解释程序置为中断(Break)模式,模式,以便对程序进行检查和调试。可以在程序的任何地方放置以便对程序进行检查和调试。可以在程序的任何地方放置Stop语句,当执行语句,当执行Stop语句时,系统将自动打开立即
37、窗口。语句时,系统将自动打开立即窗口。2. 与与End语句不同。语句不同。 4.5.5 With.End With 语句语句 形式:形式: With 对象名对象名 语句块语句块 End With 说明:说明:With 语句可以对某个对象执行一系列的语句,语句可以对某个对象执行一系列的语句,而不用重复指出对象的名称。而不用重复指出对象的名称。 例如,要改变一个对象的多个例如,要改变一个对象的多个属性属性,可以在可以在 With 控制控制结构中加上属性的赋值语句,这时候只是引用对象一次而不结构中加上属性的赋值语句,这时候只是引用对象一次而不是在每个属性赋值时都要引用它。是在每个属性赋值时都要引用它
38、。4.6 常用算法常用算法1.累加、连乘累加、连乘 例:1100的5或7的倍数的和 Sum = 0 For i = 1 To 100 If i Mod 5 = 0 Or i Mod 7 = 0 Then Sum = Sum + i End If Next i Print Sum例: 310的乘积 t = 1 For i =3 To 10 t = t * i Next i Print t思考:若把循环体前面置各变量初值的语句放在循环体内,程序运行时会产生什么情况?例例4.14求自然对数e的近似值,要求其误差小于0.00001,近似公式为: 该例题涉及两个问题: (1)用循环结构求级数和的问题。本
39、例根据某项值的精度来控制循环的结束与否。 (2)累加:e=e+t 循环体外对累加和的变量清零 e=0 连乘:n=n*i 循环体外对连乘积变量置1 n=1 Private Sub Form_Click()Private Sub Form_Click() Dim i%,n&, t!, e! Dim i%,n&, t!, e! e = 0 : n = 1 e = 0 : n = 1 e存放累加和、n存放阶乘 i = 0 : t = 1 i = 0 : t = 1 i计数器、t第i项的值 Do While t 0.00001Do While t 0.00001 e = e + t : i = i +
40、1 e = e + t : i = i + 1 累加、连乘 n = n n = n * * i : t = 1 / n i : t = 1 / n Loop Loop MsgBox MsgBox( ( 计算了计算了 “ “ & Chr(i& Chr(i) & ) & 项的和是项的和是 & Chr(e & Chr(e)End SubEnd Subm1i0ii!11i!1 . !1.3!1! 211!11ei2.2.最小、最大值最小、最大值在若干个数中求最大值,一般先假设一个较小的数为最大值的初值,若无法估计较小的值,则取第一个数为最大值的初值;然后将每一个数与最大值比较,若该数大于最大值,将该数
41、替换为最大值;依次逐一比较。例随机产生例随机产生1010个个100100200200之间的整数,求最大值。之间的整数,求最大值。 Private Sub Button1_Click() Dim i As Integer Dim x, Max As Integer Max = 100 For i = 1 To 10 x = Int(Rnd() * 101 + 100) Label1.Text = Label1.Text & Str(x) & If x Max Then Max = x Next i Label1.Text = Label1.Text & Chr(13) & Chr(10) 换行换
42、行 Label1.Text = Label1.Text & 最大值最大值= & Str(Max)End Sub4.7 常见错误常见错误1. 不循环或死循环的问题不循环或死循环的问题 主要是循环条件、循环初值、循环终值、循环步长的设置有问题。2循环结构中缺少配对的结束语句循环结构中缺少配对的结束语句 For 少 配对的Next 3.循环嵌套时循环嵌套时, ,内外循环交叉内外循环交叉4累加、连乘时,存放累加、连乘结果的变量赋初值问题累加、连乘时,存放累加、连乘结果的变量赋初值问题 (1)一重循环 在一重循环中,存放累加、连乘结果的变量初值设置应在循环语句前。 (2)多重循环 这要视具体问题分别对待。
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。