种基本结构程序设计方案.ppt

上传人:小飞机 文档编号:5807836 上传时间:2023-08-22 格式:PPT 页数:68 大小:620.50KB
返回 下载 相关 举报
种基本结构程序设计方案.ppt_第1页
第1页 / 共68页
种基本结构程序设计方案.ppt_第2页
第2页 / 共68页
种基本结构程序设计方案.ppt_第3页
第3页 / 共68页
种基本结构程序设计方案.ppt_第4页
第4页 / 共68页
种基本结构程序设计方案.ppt_第5页
第5页 / 共68页
点击查看更多>>
资源描述

《种基本结构程序设计方案.ppt》由会员分享,可在线阅读,更多相关《种基本结构程序设计方案.ppt(68页珍藏版)》请在三一办公上搜索。

1、第四章 三种基本结构程序设计,本章内容及要求:1.了解算法概念及算法的表示,掌握用NS流程序表示算法 2.熟练掌握赋值语句、End语句和注释语句等语句及输入/输出消息框函数的使用;3.熟练掌握行if语句、块if结构、Select Case情况选择结构有使用,掌握选择的嵌套结构;4.熟练掌握实现循环结构的For/Next循环结构及Exit For语句、Do/Loop循环结构的使用,掌握多重循环。,重点:选择结构及循环结构的实现及其应用,难点:选择的嵌套及多重循环结构,4.1 算法及算法的表示,4.1.1 算法概述 什么是算法:广义地讲:算法是为完成一项任务所应当遵循的一步一步的规则的、精确的、无

2、歧义的描述,它的总步数是有限的。狭义地讲:算法是解决一个问题采取的方法和步骤的描述。下面通过两个简单的例子加以说明:,例4.1 输入三个数,然后输出其中最大的数。将三个数依次输入到变量、B、C中,设变量MAX存放最大数。其算法如下:,例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

3、)步。(6)打印输出max,1)输入A、B、C。2)A与B中大的一个放入MAX中。3)把C与MAX中大的一个放入MAX中。4)输出MAX,MAX即为最大数。,4.1.2 算法的特性,有穷性确定性有0个或多个输入有一个或多个输出有效性,4.1.3 算法的表示 一、自然语言与伪代码表示算法自然语言:就是指人们日常使用的语言,可以是汉语、英语或其它语言。伪代码:是用介于自然语言和计算机语言之间的文字和符号(包括数学符号)来描述算法。例如:例4.1可用如下的伪代码表示Begin(算法开始)输入 A,B,C IF AB 则 AMax 否则 BMax IF CMax 则 CMaxPrint MaxEnd(

4、算法结束),二 用传统流程图表示算法,处理框,起止框,I/O框,判断框,流程线,连接点,1、传统流程图中的基本符号,2、三种基本结构的表示(1)顺序结构,条件,语句1,语句2,Y,N,语句1,语句2,(2)选择结构,条件,(a),条件,语句组,(3)循环结构,a)当型循环,b)直到循环,Y,N,Y,N,(b),语句组,三种基本结构的特点:,(1)只有一个入口(2)只有一个出口(3)不存在死语句(4)不存在死循环,例:例4.2输入10个数,打印输出其中的最大的数的流程图,从10个数中选出最大的数的流程图,N10,Max=A N=1,AMax,Max=A,输入A,开始,再输入给A,N=N+1,打印

5、Max,结束,Y,N,N,Y,4.1.4 用NS流程图表示算法,将全部算法写在一个矩形框内,在矩形内还可包含其它从属于它的框,三种基本结构的NS图表示:,语句A,语句B,语句A,语句B,条件,Y,N,1、顺序结构,2、选择结构,语句组,(3)循环结构,a)当型循环,b)直到循环,当条件成立,语句组,直到当条件成立,例:画出从10个数中选出最大的数的NS 流程图,(a),(b),传统流程图,N10,Max=A N=1,AMax,Max=A,输入A,开始,再输入给A,N=N+1,打印Max,结束,Y,N,N,Y,输入A,当N10,Max=A,N=N+1,打印Max,Max=A,N=1,NS流程图,

6、AMax,Y,N,输入A,Private Sub Form_Click()Dim a%,max%,i%a=Val(InputBox(A=?)max=a For i=1 To 10 a=Val(InputBox(A=?)If a max Then max=a Next i Print Max=;maxEnd Sub,最后需要说明的是:上面介绍的算法表示是给人看的,即是为帮助程序开发人员阅读、编写程序而设计的一种辅助工具,程序则必须符一计算机语言的语法规则。下面是例4.2的计算机 程序,即为用计算机语言表示算法:,4.1.6 结构化程序设计方法(补充),(一)、用计算机解决问题的过程,提出、分析问

7、题,确定算法模型,设计算法,编写程序,调试程序,分析输出结果,正确合理,结束,不正确,(二)、结构化程序设计思想,自顶向下、逐步细化、模块化,自顶向下:先从全局、整体设计逐步细化:将一个问题分解成几个较小的问题解决模块化:将一个大任务分解成若干个较小的部分,每 个部分承担一定功能,称为“功能模块”,例:给100个整数,打印输出其中的素数,S1,NS流程图,S3,S2,S1,NS流程图,S3,S2,S21,细化后的流程图,4.2 顺序结构,4.2.1 赋值语句 形式:变量名表达式 对象.属性表达式 功能:将表达式的值赋值给变量名或指定对象的属性。一般用于给变量赋值或对控件设定属性值.例:sRat

8、e!=0.1 Text1.Text 欢迎使用Visual Basic 6.0”说明:1 执行过程:先求表达式的值,然后将值赋值给左边的变量。2 右边的表达式可以是变量、常量、函数调用等特殊的表达式。3 不要将“”理解为数学上的等号:A=A+1 是表示将A单元的值加后以放回到A单元。,执行过程如右图,4赋值符号“=”左边一定只能是变量名或对象的属性引用,不能是常量、符号常量、表达式。下面的赋值语句都是错的:5=X 左边是常量。Abs(X)=20 左边是函数调用,即是表达式。,5.赋值符号“=”两边的数据类型一般要求应一致。,4.2.2 数据的输出Print方法,Print方法的一般格式:对象名.

9、Print,|;,说明:对象名.可以是窗体名、图片框名,也可是立即窗口“Debug”。若省略对象,则表示在当前窗体上输出。在2.3节窗体对象的方法中对Print方法做了详细的介绍。用Print方法在图片框和立即窗口对象中输出与在窗体对象中输出完全相同。,4.2.3 用户交互函数和过程 1.InputBox函数变量名=InputBox$(,)其中:提示 提示信息,标题 标题区显示,缺省输入区缺省值。例如,要在屏幕上显示如下的对话框:,例如:有下列语句如下:Dim x%x=Val(InputBox(“请输入一个数”,“输入框”,100)语句执行后打开如下对话框。,2.MsgBox函数和MsgBox

10、过程 函数形式:变量%=MsgBox(提示,按钮图标+缺省按钮+模式,标题)过程形式:MsgBox 提示,按钮图标+缺省按钮+模式,标题,说明:“标题”和“提示”与InputBox函数中对应的参数相同;“按钮图标+缺省按钮+模式”是整型表达式,决定信息框按钮数目、出现在信息框上的图标类型及操作模式(见表4.1)若程序中需要返回值,则使用函数,否则可调用过程。,按钮及图标值如下:,根据用户所选按钮,函数返回17的整数值,其含义如下表:(表4.2),4.2.4 注释语句,其语法格式为:Rem 或 说明:1.指要包括的任何注释文本。在Rem关键字和注释内容之间要加一个空格。可以用一个英文单引号“”来

11、代替Rem关键字。2.如果在其他语句行后面使用Rem关键字,必需用冒号(:)与语句隔开。若用英文单引号“”,则在其他语句行后面不必加冒号(:)。例如:Const PI=3.1415925 符号常量PIS=PI*r*r:Rem计算圆的面积,4.3 选择结构 1.IfThen语句(单分支结构)If Then 语句块 End If 或 If Then,例:已知两个数x和y,比较它们的大小,使得x大于y.If xy Then t=x:x=y:y=t End If 或 If xy Then t=x:x=y:y=t,2.IfThenElse语句(双分支结构)If Then Else End If If T

12、hen Else,例如:输出x,y两个中值较大的一个值。IF XY Then Print XElse Print YEnd If也可以写成如下的单行形式:IF XY Then Print X Else Print Y,双分支选择结构执行过程,例4.3 设计一个求解一元二次方程的程序,3.IfThenElseIf语句(多分支结构)形式:If Then ElseIf Then Else 语句块 n+1 End If,例4.4:输入一学生成绩,评定其等级。方法是:90100分为“优秀”,8089分为“良好”,7079分为“中等”,6069分为“及格”,60分以为“不合格”,执行过程,使用IF语句实现

13、的程序段如下:If x=90 thenPrint 优秀ElseIf x=80 ThenPrint 良好ElseIf x=70 ThenPrint 中等ElseIf x=60 ThenPrint 及格ElsePrint 不及格End If,4.3.2 Select Case语句(情况语句)形式:Select Case 变量或表达式Case 表达式列表1语句块1Case 表达式列表2语句块2Case Else语句块n+1End Select:与同类型的下面四种形式之一:表达式 例:A+5 一组枚举表达式(用逗号分隔)2,4,6,8 表达式1 To 表达式2 60 to 100 Is 关系运算符表达

14、式 Is 60,数值型或字符串表达式,例如:将例4.3 使用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,补充例题:设计一个由计算机来当小学低年级学生算术老师的VB应用程序,要求给出一系列的两个110数的四则运算的算术题,学生输入该题的答案,计算机根据学生的答案判断正确与否,并给出成绩,单击结束命令按钮,退出应用程序。分析

15、:产生110操作数,可通过Int(10*Rnd+1)实现,4.3.3 选择结构的嵌套 在IF语句的Then分支和Else分支中可以完整地嵌套另一IF语句或Select Case语句,同样Select Case语句每一个Case分支中都可嵌套另一IF语句或另一Select Case语句。下面是两种正确的嵌套形式:(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,注意:只要在一个分支

16、内嵌套,不出现交叉,满足结构规则,其嵌套的形式将有很多种,嵌套层次也可以任意多。对于多层IF嵌套结构中,要特别注意IF与Else的配对关系,一个Else必须与IF配结,配对的原则是:在写含有多层嵌套的程序时,建议使用缩进对齐方式,这样容易阅读和维护。,例4.5,设计一个用户身份验证程序,运行界面如下图所示。,4.4 循环结构1.For循环语句(一般用于循环次数已知)形式 For 循环变量初值 to 终值 Step 步长 语句块Exit For 语句块 Next 循环变量,循环次数,例:For I=2 To 13 Step 3 Print I,Next I Print“I=“,I,循环执行次数

17、输出I的值分别为:2 5 8 11 出了循环输出为:I=14,例4.6 编程计算:S=1+2+3+100,Dim S%,I%S=0 累加前变量S为0For I=1 to 100 S=S+INext IPrint S=,S,当N=100,N=N+1,打印S,S=0,N=1,S=S+N,例4-5的算法流程图,形式1:(当型循环)Do While|Until 语句块 Exit Do 语句块 Loop,4.4.2 DoLoop循环语句,形式2:(直到循环)Do 语句块 Exit Do 语句块Loop While|Until,Do UntilLoop执行过程 DoLoop Until执行过程,说明:(1

18、)当使用While构成循环时,当条件为“真”,则反复执行循环体,当条件为“假”,则退出循环。(2)当使用Until 构成循环时,当条件为“假”,则反复执行循环体,直到条件成立,即为“真”时,则退出循环。,(3)在循环体内一般应有一个专门用来改变条件表达式中变量的语句,以使随着循环的执行,条件趋于不成立(或成立),最后达到退出循环。(4)语句Exit Do的作用是退出它所在的循环结构,它只能用在DO/Loop结构中,并且常常是同选择结构一起出现在循环结构中,用来实现当满足某一条件时提前退出循环。,4.4.3 WhileWend语句使用格式如下:While Wend 说明:该语句的功能与Do Wh

19、ile.Loop实现的循环完全相同。,例:用doLoop语句改写前面的例题4.5,例4.8 求两个整数的最大公约数、最小公倍数,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 n LoopPrint 最大公约数=,n Print 最小公倍数=,nm/n,算法使用转碾除法,流程图如右,实现的程序代码如下:,4.4.4 循环的嵌套多重循环结构 如果在一个循环内完整地包含另一个循环结构,则称为多重循环,或循环嵌套,嵌套的层数可以根据需要而定,嵌套一层称为二重循环,嵌套二层称为三重循环。上

20、面介绍的几种循环控制结构可以相互嵌套,下面是几种常见的二重嵌套形式:,(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)外循环必须完全包含内循环,不

21、能交叉;(3)不能从循环体外转向循环体内,也不能从外循环转向内循环.正 确错 误,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,For i=1 To 10 For j=1 To 20 Next j Next i,For i=1 To 10 Next i For i=1 To 10 Next i,4.4.5 几种循环语句比较,4.4.6 循环结构与选择结构的嵌套,在循环结构中可以完整嵌套选择结构即整个选择结构都属于循环体。在选择结构中嵌套循环结构时,则要求整个循环结构必须完整

22、地嵌套在一个分支内,一个循环结构不允许出现在两个或两个以上的分支内。,(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,4.5 其它控制语句 4.5.1 Goto 语句 形式:Go To 标号|行号 作用是

23、无条件地转移到标号或行号指定的那行语句.标号是一个字符序列,行号是一个数字序列。,4.5.2 Exit 语句,Exit 语句用于退出 Do.Loop、For.Next、Function或Sub代码块。对应的使用格式为:Exit Do、Exit For、Exit Function、Exit Sub。分别表示退出DO循环、For循环、函数过程、子过程。,例如:下面的例子是使用 Exit 语句退出 For.Next 循环、Do.Loop 循环及子过程。,Private Sub Form_Click()Dim I%,Num%Do While True 建立无穷循环。For I=1 To 100 循环

24、100 次。Num=Int(Rnd*100)生成一个099的随机数。Select Case Num Case 10:Exit For 退出 For.Next 循环。Case 50:Exit Do 退出 Do.Loop 循环。Case 64:Exit Sub 退出子过程。End Select Next I LoopEnd Sub,4.5.3 End 语句 形式:End 功能:结束一个程序的运行。在Visual Basic中还有多种形式的End语句,用于结束一个程序块或过程。其形式有:End If End Select End Type End With End Sub End Function等

25、它们与对应的语句配对使用。,4.5.4 暂停语句 Stop语句用来暂停程序的执行,相当于在事件代码中设置断点。语法格式为:Stop说明:1.Stop语句的主要作用是把解释程序置为中断(Break)模式,以便对程序进行检查和调试。可以在程序的任何地方放置Stop语句,当执行Stop语句时,系统将自动打开立即窗口。2.与End语句不同。,4.5.5 With.End With 语句 形式:With 对象名 语句块 End With 说明:With 语句可以对某个对象执行一系列的语句,而不用重复指出对象的名称。例如,要改变一个对象的多个属性,可以在 With 控制结构中加上属性的赋值语句,这时候只是

26、引用对象一次而不是在每个属性赋值时都要引用它。下面的例子显示了如何使用 With 语句来给同一个对象的几个属性赋值。,例如,需要对同一对象设置几个属性。途径之一是使用多条语句。Private Sub Form_Load()Command1.Caption=退出(E&xit)Command1.Top=500Command1.Left=4500Command1.Enabled=TrueEnd Sub使用With.End With 语句,上面程序的代码如下。Private Sub Form_Load()With Command1.Caption=退出(E&xit).Top=500.Left=4500

27、.Enabled=TrueEnd WithEnd Sub,4.6 应用程序举例,4.6.1 素数与哥德巴赫猜想,例4.10 判断一个给定的整数是否为素数。,算法思路:素数指除了能被1和自身外,不能被其他整数整除的自然数。判断整数N是不是素数的基本方法是:将N分别除以2,3,N-1,若都不能整除,则N为素数。因为N=Sqr(N)*Sqr(N),所以,当N能被大于等于Sqr(N)的整数整除时,一定存在一个小于等于Sqr(N)的整数,使N能被它整除,因此只要判断N能否被2,3,Sqr(N)整除即可。算法流程图如下:,Dim N%,I%,K%N=Val(InputBox(N=?)K=Int(Sqr(N

28、)For I=2 To K If N Mod I=0 Then Exit ForNext IIf IK Then Print N;是素数Else Print N;不是素数End If,例4.11 编一程序验证哥德巴赫猜想:一个大于等于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所示。将程序代码写到窗体的单击事件中。,实现上面算

29、法的程序代码如下:,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

30、Then 如果N2也为素数,则打印输出 Print N&=&N1&+&N2 End If End If Next N1End Sub,4.6.2 字符串处理,例4.12 统计文本框中英文单词的个数。算法设计(1)从文本(字符串)的左边开始,取出一个字符;设逻辑量WT表示所取字符是否是单词内的字符,初值设为False。(2)若所取字符不是“空格”、“逗号”、“分号”或“感叹号”等单词的分隔符,再判断WT是否为True,若WT不为True,则表示新单词的开始,让单词数Nw=Nw+1;让WT=True。(3)若所取字符是“空格”、“逗号”、“分号”或“感叹号”等单词的分隔符,则表示字符不是单词内字符

31、,让WT=False。(4)再依次取下一个字符,重复(2)(3)步直到文本结束。,例4.13 字符的加密和解密加密算法是:将每个字母C加(或减)一序数K,即用它后的第K个字母代替,变换式公式:c=chr(Asc(c)+k)例如:设序数k为5,这时 A F,a f,B G 当加序数后的字母超过Z或z则 c=Chr(Asc(c)+k-26)例如:You are good Dtz fwj ltti 解密算法:解密为加密的逆过程 将每个字母C减(或加)一序数K,即 c=chr(Asc(c)-k),例如:序数k为5,这时 ZU,zu,YT当加序数后的字母小于A或a则 c=Chr(Asc(c)-k+26),迭代法在数学上也称“递推法”,凡是由一给定的初值,通过某一算法(公式)可求得新值,再由新值按照同样的算法又可求得另一个新值,这样经过有限次即可求得其解。,4.6.3 迭代法,例4.14 用迭代法求某个数的平方根。已知求平方根的迭代公式为:,算法思想如下:设平方根的解为x,可假定一个初值x0=a/2(估计值),根据迭代公式得到一个新的值x1,这个新值x1比初值x0更接近要求的值x;再以新值作为初值,即:x1x0,重新按原来的方法求x1,重复这一过程直到|x1-x0|(某一给定的精度)。此时可将x1作为问题的解。,程序代码见教材Pg.103,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号