欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    vb程序设计的3种基本结构.ppt

    • 资源ID:6522696       资源大小:838KB        全文页数:100页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    vb程序设计的3种基本结构.ppt

    第4章 程序设计的3种基本结构,重点:选择结构及循环结构的实现及其应用,难点:选择的嵌套及多重循环结构,本章内容及要求:1.了解算法概念及表示,掌握用NS流程图表示算法;2.熟练掌握赋值语句、输入/输出消息框函数的使用;3.熟练掌握行if语句、块if结构、Select Case情况选择结构有使用,掌握选择的嵌套结构;4.熟练掌握实现循环结构的For/Next循环结构及Exit For语句、Do/Loop循环结构的使用,掌握多重循环。,4.1.1 算法概述 什么是算法:广义地讲:算法是为完成一项任务所应当遵循的一步一步的规则的、精确的、无歧义的描述,它的总步数是有限的。狭义地讲:算法是解决一个问题采取的方法和步骤的描述。下面通过两个简单的例子加以说明:,4.1 算法及算法的表示,1)输入A、B、C。2)A与B中大的一个放入MAX中。3)把C与MAX中大的一个放入MAX中。4)输出MAX,MAX即为最大数。,例4.1 输入三个数,然后输出其中最大的数。将三个数依次输入到变量、B、C中,设变量MAX存放最大数。其算法如下:,例4.1算法的描述,例4.2 输入10个数,打印输出其中最大的数。算法设计如下:(1)输入1个数,存入变量A中,将记录数据个数的变量N赋值为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)打印输出max,例4.2 算法的描述2,有穷性确定性有0个或多个输入有一个或多个输出有效性,4.1.2 算法的特性,一、自然语言与伪代码表示算法自然语言:就是指人们日常使用的语言,可以是汉语、英语或其它语言。伪代码:是用介于自然语言和计算机语言之间的文字和符号(包括数学符号)来描述算法。,4.1.3 算法的表示,例如:例4.1可用如下的伪代码表示Begin(算法开始)输入 A,B,C IF AB 则 AMax 否则 BMax IF CMax 则 CMaxPrint MaxEnd(算法结束),伪代码示例,处理框,起止框,I/O框,判断框,流程线,连接点,1、传统流程图中的基本符号,二 用传统流程图表示算法,(1)顺序结构,(2)选择结构,2、三种基本结构的表示,a)当型循环,b)直到循环,(3)循环结构,(1)只有一个入口(2)只有一个出口(3)不存在死语句(4)不存在死循环,例:例4.2输入10个数,打印输出其中的最大的数的流程图,三种基本结构的特点,从10个数中选出最大的数的算法流程图,算法流程图示例,将全部算法写在一个矩形框内,在矩形内还可包含其它从属于它的框,4.1.4 用NS流程图表示算法,(3)循环结构,NS 流程图示例,例:从10个数中选出最大的数,A=Val(InputBox(A=?)B=Val(InputBox(B=?)C=Val(InputBox(C=?)If AB then Max=AElse Max=BEnd IfIf CMax then Max=CPrint Max=;Max,下面是例4.1的计算机 程序,即为用计算机语言表示算法:,用计算机语言表示算法,(一)、用计算机解决问题的过程,提出、分析问题,确定算法模型,设计算法,编写程序,调试程序,分析输出结果,正确合理,结束,不正确,4.1.6 结构化程序设计方法(补充),自顶向下、逐步细化、模块化,自顶向下:先从全局、整体设计逐步细化:将一个问题分解成几个较小的问题解决模块化:将一个大任务分解成若干个较小的部分,每 个部分承担一定功能,称为“功能模块”,例:给100个整数,打印输出其中的素数,(二)、结构化程序设计思想,S1,NS流程图,S3,S2,(三)、结构化程序设计过程示例,S1,NS流程图,S3,S2,S21,示例2,细化后的流程图,示例3,4.2 顺序结构,4.2.1 赋值语句,形式:变量名表达式 对象.属性表达式 功能:将表达式的值赋值给变量名或指定对象的属性。一般用于给变量赋值或对控件设定属性值.例:sRate!=0.1 Text1.Text 欢迎使用Visual Basic 6.0”说明:1 执行过程:先求表达式的值,然后将值赋值给左边的变量。2 右边的表达式可以是变量、常量、函数调用等特殊的表达式。3 不要将“”理解为数学上的等号:A=A+1 是表示将A单元的值加后以放回到A单元。,4赋值符号“=”左边一定只能是变量名或对象的属性引用,不能是常量、符号常量、表达式。下面的赋值语句都是错的:5=X 左边是常量。Abs(X)=20 左边是函数调用,即是表达式。5.赋值符号“=”两边的数据类型一般要求应一致。说明:当表达式的类型与变量的类型不一致时,VB系统会自动地将表达式的值强制地转换成变量的类型。例:iA%=10/3 iA中的结果为3 iA%=11/3 iA中的结果为4(四舍五入)iA%=-11/3 iA中的结果为-4(四舍五入)iA%=38000 出错,数据溢出。,赋值语句2,说明:当表达式是数字字符串,变量是数值类型时,系统自动地将数字字符串转换成数值再赋值;当表达式中含有非数字字符时,则出错。例:iA%=123 iA中的结果为123 iA%=123abc 错误,类型不匹配!说明:逻辑型值赋值给数值型变量;系统自动转换。例:iA%=True iA中的结果为-1 iA%=Flase iA中的结果为0说明:非字符类型值赋值给字符型变量时,系统自动转换。例:cA$=True cA中的结果为True cA$=123 cA中的结果为123 cA$=#2003/3/12#cA中的结果为03-3-12 注意:VB不能在一句语句中给多个变量赋值。,Dim x%,y%:x=y=100,n=n+1,iA%=Val(“123abc”),赋值语句3,Vb数据的输出Print方法,Print方法的一般格式:对象名.Print,|;,说明:对象名.可以是窗体名、图片框名,也可是立即窗口“Debug”。若省略对象,则表示在当前窗体上输出。用Print方法在图片框和立即窗口对象中输出与在窗体对象中输出完全相同。,4.2.2 Print方法,4.2.3 用户交互函数和过程,1.InputBox函数变量名=InputBox$(,)其中:提示 提示信息,标题 标题区显示,缺省输入区缺省值。例如,要在屏幕上显示如下的对话框:,例如:有下列语句如下:Dim x%x=Val(InputBox(请输入一个数,输入框,100)语句执行后打开如下对话框。,InputBox示例,2.MsgBox函数和MsgBox过程,函数形式:变量%=MsgBox(,按钮图标+缺省按钮+模式,标题)过程形式:MsgBox,按钮图标+缺省按钮+模式,标题,说明:“标题”和“提示”与InputBox函数中对应的参数相同;“按钮图标+缺省按钮+模式”是整型表达式,决定信息框按钮数目、出现在信息框上的图标类型及操作模式(见表4.1)若程序中需要返回值,则使用函数,否则可调用过程。,MsgBox参数说明,按钮及图标值如下:,MsgBox参数说明2,根据用户所选按钮,函数返回17的整数值,其含义如下表:(表4.2),MsgBox函数示例,用户可根据MsgBox函数的不同返回值,实现程序的控制流程,就必需通过编写程序代码才能实现。例如下面一段程序中的MsgBox函数,显示的对话框在“是”、“否”两个按钮,默认按钮为第一个按钮“是”。i=MsgBox(发生错误,是否继续?,vbYesNo+vbQuestion,提示信息)If i=7 Then End 或写成 If i=vbNo Then End 当用户单击“否”,程序就结束,单击“是”或直接按回车键,程序则继续向下执行。,其语法格式为:Rem 或 说明:1.指要包括的任何注释文本。在Rem关键字和注释内容之间要加一个空格。可以用一个英文单引号“”来代替Rem关键字。2.如果在其他语句行后面使用Rem关键字,必需用冒号(:)与语句隔开。若用英文单引号“”,则在其他语句行后面不必加冒号(:)。例如:Const PI=3.1415925 符号常量PIS=PI*r*r:Rem计算圆的面积,4.2.4 注释语句,例4.3 输入时间(小时,分和秒),然后使用输出消息框输出总计多少秒。使用文本框输入数据,使用消息框输出计算结果,程序运行界面如图3-14所示。,4.2.5 应用举例,图4-14 程序运行界面,例4.4 编一程序,求一内半径R1=10cm,外半径R2=20cm的球环的体积。要求按四舍五入保留到小数点后4位。,4.2.5 顺序结构应用举例,本题所求的球环面的体积公式:,Private Sub Form_Click()Dim R1#,R2#R1,R2 表示球的内外半径 Dim Vol As Double Vol表示体积 Const PI#=3.1415926 符号常量PI代表 R1=10:R2=20 Vol=4/3*PI*(R2 3-R1 3)Vol=Fix(Vol*10000+0.5)/10000 保留小数点后4位 Print 球环的体积:V=;Vol;立方厘米End Sub,4.3 选择结构,选择结构是根据条件选择执行不同的分支语句,以完成问题的要求。在Visual Basic程序设计中,使用IF语句和Select Case语句来处理选择结构。其特点是:根据所给定的条件成立(True)或不成立(False),从各实际可能的不同分支中执行某一分支的相应操作(程序块),并且任何情况下总有“无论条件多寡,必择其一;虽然条件众多,仅选其一”的特性。,4.3.1 If条件语句,1.IfThen语句(单分支结构)If Then 语句块 End If 或 If Then,说明:表达式一般为关系表达式或逻辑表达式,也可以是算术表达式。若为算术表达式,则表达式的值非零时为TRUE,零为FALSE。语句块可以是一个语句,也可以是多个语句。若在程序中采用行IF语句,则多个语句之间一定要用冒号分隔。,选择结构示例,例 已知两个数x和y,比较它们的大小,并把大者赋值给x,小者赋值给y.If xy Then t=x x=y y=t End If 或 If xy Then t=x:x=y:y=t,重要的是学会两个数的交换,若上述语句次序变一下,结果如何?,?一瓶酱油、一瓶醋,例 从键盘输入两个整数x和y,输出两者中的大者。Private Sub Form_Click()Dim x%,y%,max%,mmm$x=Val(InputBox(请输入一个整数给x)y=Val(InputBox(请输入一个整数给y)max=x If max y Then max=y mmm=(x&,&y&两者中的大数是:&max)MsgBox(mmm)End Sub,双分支选择结构执行过程,2.IfThenElse语句(双分支结构),If Then Else End If If Then Else,例如:输出x,y两个中值较大的一个值。IF XY Then Print X Else Print Y End If也可以写成如下的单行形式:IF XY Then Print X Else Print Y,选择结构示例2,单分支结构实现:y=cos(x)x3+3*x If x0 Then y=sin(x)+sqr(x*x+1),双分支结构实现:If x0 Then y=sin(x)+sqr(x*x+1)Else y=cos(x)x3+3*x End If,选择结构示例3,例:计算分段函数,IIF函数可用来执行简单的条件判断操作,它相当于IFThen.Else结构。IIF函数的使用格式:IIF(,)说明:(1)与IF语句中的表达式相同,通常是关系表达式、逻辑表达式,也可为算术表达式。如果是算术表达式,其值按非0为True,0为False进行判断。(2)当为真时,函数返回的值,当为假时,函数返回的值。(3)、可以是任何表达式。例如:Max=IIF(XY,X,Y)它与下面语句等价:IF XY Then Max=x Else Max=Y,3.条件函数,执行过程,4.IfThenElseIf语句(多分支结构),形式:If Then ElseIf Then Else 语句块 n+1 End If,使用IF语句实现的程序段如下:If x=90 then Print 优秀ElseIf x=80 Then Print 良好 ElseIf x=70 Then Print 中等 ElseIf x=60 Then Print 及格 Else Print 不及格End If,例4.6:输入一学生成绩,评定其等级。方法是:90100分为“优秀”,8089分为“良好”,7079分为“中等”,6069分为“及格”,60分以为“不合格”,选择结构例4.6,数值型或字符串表达式,4.3.2 Select Case语句,1.Select Case语句形式:Select Case 变量或表达式Case 表达式列表1语句块1Case 表达式列表2语句块2Case Else语句块n+1End Select,注意:Case子句后的表达式中不能出现变量.,Select Case语句说明,说明:与同类型的下面四种形式之一:(1)表达式 A+5(2)一组枚举表达式(用逗号分隔)2,4,6,8(3)表达式1 To 表达式2 60 to 100(4)Is 关系运算符表达式 Is 60,A只能是符号常量!,例如:将例4.6 使用select case.语句来实现的程序段如下:Select Case x Case 90 to 100 Print 优秀 Case 80 to 89 Print 良好 Case 70 to 79 Print 中等 Case 60 to 69 Print 及格 Case Else Print 不及格End Select,Select Case语句示例,Choose函数使用格式:Choose(,.)说明:Choose函数根据的值来决定返回其后中的那个表达式的值。如果的值为1,则返回的值,如果的值为2,则返回的值,以此类推。若的值小于1或大于n,则函数返回Null(空)。例如:根据Nop的值,得到+、-、*,/的运算符,可由下面语句来实现。Nop=Int(Rnd*4)+1 OP=Choose(Nop,+,-,*,/),2.Choose函数,Switch函数形式是:Switch(条件表达式1,条件表达式1为True时的值,条件表达式2,条件表达式2为True时的值),3.Switch函数,自左至右,只能返回一个值。,例如:根据Nop的值,得到+、-、*,/的运算符,也可由下面的语句来实现。Nop=Int(Rnd*4)+1OP=Switch(Nop=1,+,Nop=2,-,Nop=3,*,Nop=4,/),下面是两种嵌套形式:(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,4.3.3 选择结构的嵌套,注意:只要在一个分支内嵌套,不出现交叉,满足结构规则,其嵌套的形式可以任意多。一个Else必须与IF配结,配对的原则是:在写含有多层嵌套的程序时,建议使用缩进对齐方式,这样容易阅读和维护。,例4.7 设计一个用户身份验证程序,运行界面如下图所示。,设密码分别为 1234567(普通用户)、1989643(授权用户)和1687799(特许用户),按回车键表示密码输入结束。如果输入密码正确,则用MsgBox对话框显示“你的口令正确,已通过身份验证”并显示用户类型;否则显示“密码不符,要重试一遍吗!”(有“是”和“否”两个按钮),当用户单击“是”则将焦点定位到文本框中、清除文本框中的内容并允许再输入一遍,如果单击“否”则退出程序。,选择结构例4.7,补充例题:闰年问题,判断某年是否为闰年的两个条件:1该年年号能被4整除,但不能被100整除;2该年年号能被4整除,同时又能被400整除。,所有年号,能被4整除,能被100整除,能被400整除,Private Sub Form_Click()Dim y%,flag As Boolean y=Val(InputBox(请输入年号)If y Mod 4=0 Then If y Mod 100=0 Then If y Mod 400=0 Then flag=True Else flag=flase End If Else flag=True End If Else flag=flase End If If flag Then Print y;年是闰年!Else Print y;年不是闰年!End IfEnd Sub,Private Sub Form_Click()Dim y%,flag As Boolean y=Val(InputBox(请输入年号)flag=(y Mod 4=0)And(y Mod 100 0)flag=flag Or(y Mod 400=0)If flag Then Print y;年是闰年!Else Print y;年不是闰年!End IfEnd Sub,1.For循环语句(一般用于循环次数已知)形式:For 循环变量初值 to 终值 Step 步长 语句块Exit For 语句块 Next 循环变量,4.4 循环结构,循环次数,例:For I=2 To 13 Step 3 Print I,Next I Print I=,I,循环执行次数:输出I的值分别为:2 5 8 11 出了循环输出为:I=14,Int(13-2)/3+1)=4,For循环语句示例,例4.8 编程计算:S=1+2+3+100,Dim S%,I%S=0 累加前变量S为0For I=1 to 100 S=S+INext IPrint S=,S,例4.8的算法流程图,For循环示例4.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,补充例题:改变循环控制变量对循环的影响。,补充例题:通过改变循环控制变量,控制循环提前结束。,题目:打印出最小的水仙花数(一个三位数,其值等于它的三个数位的值的立方之和,例如:371=33+73+13)。,Private Sub Form_Click()Dim m%,a%,b%,c%For m=100 To 999 a=m 100 c=m Mod 10 b=(m-a*100)10 If m=a3+b3+c3 Then Print m;End If Next m PrintEnd Sub,Private Sub Form_Click()Dim m%,a%,b%,c%For m=100 To 999 a=m 100 c=m Mod 10 b=(m-a*100)10 If m=a3+b3+c3 Then Print m;m=1000 Exit For End If Next m PrintEnd Sub,形式1:(当型循环)Do While|Until 语句块 Exit Do 语句块 Loop,4.4.2 DoLoop循环语句,条件也可以是数值、字符串或逻辑表达式。,Do 语句块 Exit Do 语句块Loop While|Until,形式2:(直到循环),Do UntilLoop执行过程 DoLoop Until执行过程,DoLoop执行过程,(1)当使用While构成循环时,当条件为“真”,则反复执行循环体,当条件为“假”,则退出循环。(2)当使用Until 构成循环时,当条件为“假”,则反复执行循环体,直到条件成立,即为“真”时,则退出循环。(3)在循环体内一般应有一个专门用来改变条件表达式中变量的语句,以使随着循环的执行,条件趋于不成立(或成立),最后达到退出循环。(4)语句Exit Do的作用是退出它所在的循环结构,它只能用在DO/Loop结构中,并且常常是同选择结构一起出现在循环结构中,用来实现当满足某一条件时提前退出循环。,DoLoop有关说明:,使用格式如下:While Wend 说明:该语句的功能与Do While.Loop实现的循环完全相同。,例:用doLoop语句改写前面的例题4.5,4.4.3 WhileWend语句,例4.10 求两个整数的最大公约数、最小公倍数,Dim n%,m%,nm%,r%m=Val(InputBox(m=)n=Val(InputBox(n=)nm=n*mIf m 0)m=n n=r r=m mod nLoopPrint 最大公约数=,n Print 最小公倍数=,nm/n,算法流程图,循环结构示例4.10,辗转相减法求最大公约数当 mn时:m=m-n当 nm时:n=n-m 重复操作直到m=n时为止 m=n即为最大公约数Do While m n m n If m n Then 14 6 m=m n 8 6 Else 2 6 n=n m 2 4 End If 2 2Loop,多重循环结构 如果在一个循环内完整地包含另一个循环结构,则称为多重循环,或循环嵌套,嵌套的层数可以根据需要而定,嵌套一层称为二重循环,嵌套二层称为三重循环。上面介绍的几种循环控制结构可以相互嵌套,下面是几种常见的二重嵌套形式:,4.4.4 循环的嵌套,(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,常见的嵌套形式,For i=1 To 9 For j=1 To 9 se=i Next j Picture1.Print Next i,例题:打印九九乘法表.,(1)内循环变量与外循环变量不能同名;(2)外循环必须完全包含内循环,不能交叉;(3)不能从循环体外转向循环体内,也不能从外循环转向内循环.下面是正确的嵌套,例4.11:将一张面值为100元的人民币等值换成100张5元、1元和0.5元的零钞,要求每种零钞不少于1张,问有哪几种组合?,循环嵌套注意事项:,For i=1 To 10 For j=1 To 20 Next i Next j,For i=1 To 10 For i=1 To 20 Next i Next i,不正确的嵌套,4.4.5 几种循环语句比较,在循环结构中可以完整嵌套选择结构即整个选择结构都属于循环体。在选择结构中嵌套循环结构时,则要求整个循环结构必须完整地嵌套在一个分支内,一个循环结构不允许出现在两个或两个以上的分支内。,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 I=Case Case Next I End Select,(3)For I=IF Then Next I End IF,(2)IF Then For I=Next I End IF,(4)For I=Select Case Case Case End Select Next I,嵌套示例,(5)Select Case Case Case For I=Next I Case End Select,4.5.1 Goto 语句 形式:Go To 标号|行号 作用是无条件地转移到标号或行号指定的那行语句.标号是一个字符序列,行号是一个数字序列。例如:Lp:goto lp,4.5 其它控制语句,Exit 语句用于退出 Do.Loop、For.Next、Function或Sub代码块。对应的使用格式为:Exit Do、Exit For、Exit Function、Exit Sub。分别表示退出DO循环、For循环、函数过程、子过程。,例如:下面的例子是使用 Exit 语句退出 For.Next 循环、Do.Loop 循环及子过程。,4.5.2 Exit 语句,Private Sub Form_Click()Dim Num%Do While True 建立无穷循环。Num=Int(Rnd*100)生成一个099的随机数。Select Case Num Case 0 to 35:msgbox 退出 For.Next 循环 Exit For Case 36 to 70:msgbox 退出 Do.Loop循环 Exit Do Case else:Exit Sub 退出过程。End Select LoopEnd Sub,例:用Exit 语句退出 循环,形式:End 功能:结束一个程序的运行。在Visual Basic中还有多种形式的End语句,用于结束一个程序块或过程。其形式有:End If End Select End Type End With End Sub End Function等,它们与对应的语句配对使用。,4.5.3 End 语句,Stop语句用来暂停程序的执行,相当于在事件代码中设置断点。语法格式为:Stop说明:1.Stop语句的主要作用是把解释程序置为中断(Break)模式,以便对程序进行检查和调试。可以在程序的任何地方放置Stop语句,当执行Stop语句时,系统将自动打开立即窗口。2.与End语句不同。,4.5.4 暂停语句,形式:With 对象名 语句块 End With 说明:With 语句可以对某个对象执行一系列的语句,而不用重复指出对象的名称。例如,要改变一个对象的多个属性,可以在 With 控制结构中加上属性的赋值语句,这时候只是引用对象一次而不是在每个属性赋值时都要引用它。下面的例子显示了如何使用 With 语句来给同一个对象的几个属性赋值。,4.5.5 With.End With 语句,例如,需要对同一对象设置几个属性。途径之一是使用多条语句。Private Sub Form_Load()Command1.Caption=退出(E&xit)Command1.Top=500 Command1.Left=4500 Command1.Enabled=TrueEnd Sub,使用 With 语句来给多个属性赋值,使用With 语句,上面程序的代码如下。Private Sub Form_Load()With Command1.Caption=退出(E&xit).Top=500.Left=4500.Enabled=True End WithEnd Sub,此类问题都要使用循环,根据问题的要求,确定循环变量的初值、终值或结束条件及用来表示计数、和、阶乘的变量的初值。,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,思考:若把循环体前面置各变量初值的语句放在循环体内,程序运行时会产生什么情况?,补充例题:求N的阶乘,求N的阶乘是一个标准的递推公式:N!=N*(N-1)!(注:已知:1!=1),Private Sub Form_Click()Dim i%,f#f=1 For i=1 To 10 f=f*i Print(i f Next iEnd Sub,在若干个数中求最大值,一般先假设一个较小的数为最大值的初值,若无法估计较小的值,则取第一个数为最大值的初值;然后将每一个数与最大值比较,若该数大于最大值,将该数替换为最大值;依次逐一比较。例 随机产生10个100200之间的数,求最大值。,Private Sub Command1_Click()Max=100 For i=1 To 10 x=Int(Rnd*101+100)Print x;If x Max Then Max=x Next i Print Print 最大值=;MaxEnd Sub,2.补充算法:极值问题,有一根长度为321米的钢材料,要将它截取成两种规格a、b的长度分别为17米和27米的短料,问分隔成a,b各多少段后,剩余的残料 r 最少?分析,该题利用“穷举法”通过循环求残料r的最小值。程序如右:,Private Sub Form_Click()Dim a%,b%,r%For b=1 To 321 27 a=(321-b*27)17 r=321-b*27-a*17 Print a,b,r Next bEnd Sub,例4.18 实际应用,求最短残料。,Private Sub Form_Click()Dim a%,b%,r%,ma%,mb%,mr%mr=321 For b=1 To 321 27 a=(321-b*27)17 r=321-b*27-a*17 If r mr Then mr=r mb=b ma=a End If Next b Print ma,mb,mrEnd Sub,例4.14 判断一个给定的整数是否为素数。,算法思路:素数指除了能被1和自身外,不能被其他整数整除的自然数。判断整数N是不是素数的基本方法是:将N分别除以2,3,N-1,若都不能整除,则N为素数。因为N=Sqr(N)*Sqr(N),所以,当N能被大于等于Sqr(N)的整数整除时,一定存在一个小于等于Sqr(N)的整数,使N能被它整除,因此只要判断N能否被2,3,Sqr(N)整除即可。,3.素数与哥德巴赫猜想,Dim N%,I%,K%N=Val(InputBox(N=?)K=Int(Sqr(N)For I=2 To K If N Mod I=0 Then Exit ForNext IIf IK Then Print N;是素数Else Print N;不是素数End If,算法流程图,素数算法流程图及程序,例4.15 编一程序验证哥德巴赫猜想:一个大于等于6的偶数可以表示为两个素数之和。例如:6=3+3 8=3+5 10=3+7,算法设计:设N为大于等于6的任一偶数,将其分解为N1和N2两个数,使用N1+N2=N,分别判断N1和N2是否为素数,若都是,则为一组解。若N1不是素数,就不必再检查N2是否素数。先从N1=3开始,直到N1=N/2为止。算法流程图如图4-29所示。将程序代码写到窗体的单击事件中。,实现上面算法的程序代码如下:,例4.15 编一程序验证哥德巴赫猜想,Private Sub Form_Click()Dim N%,N1%,N2%,I%,K1%,K2%N=Val(InputBox(输入大于6的偶数)For N1=3 To N 2 Step 2 K1=Int(Sqr(N1)For I=2 To K1 判断N1是否是素数 If N1 Mod I=0 Then Exit For Next I If I K1 Then 如果N1为素数,将N分解为N1+N2 N2=N-N1 K2=Int(Sqr(N2)For I=2 To K2 判断N2是否是素数 If N2 Mod I=0 Then Exit For Next I If I K2 Then 如果N2也为素数,则打印输出 Print N&=&N1&+&N2 End If End If Next N1End Sub,哥德巴赫猜想程序,4.补充算法:递推法,“递推法”的基本思想是把一个复杂的计算过程转化为简单过程的多次重复。每次重复都从旧值的基础上递推出新值,并由新值代替旧值。补充例题 猴子吃桃。小猴在某天摘桃若干个,当天吃掉一半,觉得还不过瘾,又多吃了一个;第二天吃了剩下的桃子的一半多一个;以后每天都这样吃下去,直到第7天要吃时只剩下一个,问小猴子第一天共摘下了多少个桃子?分析:这是一个“递推”问题,先从最后一天推出倒数第二天的桃子,再从倒数第二天的桃子推出倒数第三天的桃子。设第n天的桃子为xn,那么它是前一天的桃子数的xn-1 的一半减1,即 xn=xn-1/2-1 xn-1=(xn+1)2,Private Sub Form_Click()Dim n%,i%x=1 第7天的桃子 Print 第 7 天的桃子数为:1只 For i=6 To 1 Step-1 x=(x+1)*2 Print 第;i;天的桃子数为:;x;只 Next iEnd Sub,补充例题:Fibonacci数列,著名意大利数学家Fibonacci 曾提出这样一个有趣的问题:设有一对新生的兔子,从第三个月开始它们每个月都生一对兔子。按此规律,并假设没有兔子死亡,一年后共有多少对兔子?,一月:1对小兔子二月:1对大兔子三月:1大兔子+1对小兔子四月:2大兔子+1对小兔子五月:3大兔子+2对小兔子六月:5大兔子+3对小兔子七月:8大兔子+5对小兔子,Private Sub Form_Click()Dim i%,f1%,f2%,f3%f1=1:f2=1 Print f1;f2;For i=3 To 12 f3=f1+f2 Print f3;f1=f2 f2=f3 Next iEnd Sub,当最后一项的绝对值小于0.000001时停止计算,输出其计算的结果及其计算了多少项。编程分析:这是用来求多项式和的一类题目,这类题目一般要写成s=s+t(t为通项)这种形式。本题中t第1项的值为1。递推公式为:t=-t/(2*i)*(2*i+1),例4.12 编程序计算多项式的和.,Private Sub Form_Click()Dim s#,t#,i%s=1:i=0:t=1 第1项的值 do i=i+1 t=-t/(2*i)*(2*i+1)s=s+t loop while abs(t)=0.000001 Print s=;s,i=;iEnd Sub,该例题涉及两个问题:(1)用循环结构求级数和的问题。本例根据某项值的精度 来控制循环是否结束。(2)累加:e=e+t 循环体外对累加和的变量清零 e=0 连乘:n=n*i 循环体外对连乘积变量置1 n=1 Private Sub Form_Click()Dim i%,n eEnd Sub,补充例题:求自然对数e的近似值,要求其误差小于0.00001:,补充例题:国际象棋棋盘与古印度国的粮食,相传古代印度国王舍罕要褒赏他的宰相达依尔(国际象棋的发明者),问他需要什么,达依尔回答说:“国王只要在国际象棋棋盘的第一格里放上1粒麦子,在第二格里放上2粒麦子,在第三格里放上4粒麦子,以后按此比例每一格加一倍,一直放到第64格,我就感恩不尽,其它我什么也不想要了。”结果全印度国的粮食都不够!(注:1M3麦子1.42108颗),Private Sub Form_Click()Dim i%,s!,t!t=1:s=0 For i=1 To 64 s=s+t t=t*2 Next i s=s/142000000#Print 需要麦子;s;立方米End Sub,迭代法算法思想:迭代法在数学上也称“递推法”,凡是由一给定的初值,通过某一算法(公式)可求得新值,再由新值按照同样的算法又可求得另一个新值,这样经过有限次即可求得其解。,5.迭代法,牛顿迭代公式:x=x0-f(x0)/f(x0),补充例题:二分法高次方程求根。,其递推方法如下:(1)输入两个点的x坐标值a,b,使f(a)*f(b)0,即确保在区间a,b内有一根。(2)求区间a,b的中点c=(a+b)/2。(3)计算f(c)的值,若该值小于给定的精度要求,则

    注意事项

    本文(vb程序设计的3种基本结构.ppt)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开