




已阅读5页,还剩69页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
201801,.,第四章 三种基本结构程序设计,本部分内容及要求: 1.了解算法概念及算法的表示,了解用NS流程图表示算法 2. 熟练掌握赋值语句、End语句和注释语句等语句及输入/输出消息框函数的使用; 3. 熟练掌握行if语句、块if结构、Select Case情况选择结构的使用,掌握选择的嵌套结构; 4. 熟练掌握实现循环结构的For/Next循环结构及Exit For语句、Do/Loop循环结构的使用,掌握多重循环。,重点:选择结构及循环结构的实现及其应用,难点:选择的嵌套及多重循环结构,201801,.,一、算法及算法的表示 (补充),1. 算法概述 什么是算法: 广义地讲:算法是为完成一项任务所应当遵循的一步一步的规则的、精确的、无歧义的描述,它的总步数是有限的。 狭义地讲:算法是解决一个问题采取的方法和步骤的描述。下面通过两个简单的例子加以说明:,例1 输入三个数,然后输出其中最大的数。 将三个数依次输入到变量、B、C中,设变量MAX存放最大数。其算法如下:,201801,.,例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,1) 输入A、B、C。2) A与B中大的一个放入MAX中。3) 把C与MAX中大的一个放入MAX中。4) 输出MAX,MAX即为最大数。,201801,.,2. 算法的特性,(1)有穷性(2)确定性(3)有0个或多个输入(4)有一个或多个输出(5)有效性,201801,.,3. 算法的表示 (一)、用自然语言与伪代码来表示算法自然语言:就是指人们日常使用的语言,可以是汉语、英语或其它语言。伪代码:是用介于自然语言和计算机语言之间的文字和符号(包括数学符号)来描述算法。 例如:例1可用如下的伪代码表示Begin(算法开始) 输入 A,B,C IF AB 则 AMax 否则 BMax IF CMax 则 CMaxPrint MaxEnd (算法结束),201801,.,(二)、 用传统流程图表示算法,处理框,起止框,I/O框,判断框,流程线,连接点,(1)、传统流程图中的基本符号,201801,.,(2)三种基本结构的表示 (a)顺序结构,语句1,语句2,(b)选择结构,201801,.,条件,( a ),条件,语句组,(c)循环结构, 前测型循环, 后测型循环,Y,N,Y,N,( b ),语句组,前测型的语句组可能一次都没有执行过,后测型的语句组至少执行过一次,201801,.,三种基本结构的特点:,(1)只有一个入口(2)只有一个出口(3)不存在死语句(4)不存在死循环,例: 例2输入10个数,打印输出其中的最大的数的流程图,201801,.,从10个数中选出最大的数的流程图(例2),NMax,Max =A,输入A,开始,再输入给A,N=N+1,打印Max,结束,Y,N,N,Y,201801,.,(三)、 用NS流程图表示算法,将全部算法写在一个矩形框内,在矩形内还可包含其它从属于它的框,三种基本结构的NS图表示:,语句A,语句B,语句A,语句B,条件,Y,N,1、顺序结构,2、选择结构,201801,.,语句组,(3)循环结构,a) 当型循环,b) 直到循环,当条件成立,语句组,直到当条件成立,例: 画出从10个数中选出最大的数的NS 流程图(例2),( a ),( b ),201801,.,传统流程图,NMax,Max =A,输入A,开始,再输入给A,N=N+1,打印Max,结束,Y,N,N,Y,输入A,当N=Max,Y,N,201801,.,Private Sub Form_Click() Dim a%, max%, i% max = a For i = 1 To 10 a = Val(InputBox(A=?) If a max Then max = a Next i Print Max=; maxEnd Sub,最后需要说明的是:上面介绍的算法表示是给人看的,即是为帮助程序开发人员阅读、编写程序而设计的一种辅助工具,程序则必须符合计算机语言的语法规则。 下面是例2的计算机 程序,即为用计算机语言表示算法:,201801,.,二、 结构化程序设计方法(补充),(一)、用计算机解决问题的过程,提出、分析问题,确定算法模型,设计算法,编写程序,调试程序,分析输出结果,正确合理,结束,不正确,201801,.,(二)、结构化程序设计思想,自顶向下、逐步细化、模块化,自顶向下:先从全局、整体设计逐步细化:将一个问题分解成几个较小的问题解决模块化: 将一个大任务分解成若干个较小的部分, 每 个部分承担一定功能,称为“功能模块”,例:给100个整数,打印输出其中的素数,201801,.,S1,NS流程图,S3,S2,201801,.,S1,NS流程图,S3,S2,S21,201801,.,细化后的流程图,201801,.,4.1 基本语句,4.1.1 赋值语句 形式: 变量名表达式 对象名.属性表达式 功能: 将表达式的值赋值给变量名或指定对象的属性。 一般用于给变量赋值或对控件设定属性值. 例: sRate!=0.1 Text1.Text 欢迎使用Visual Basic 6.0”说明: 1 执行过程:先求表达式的值,然后将值赋值给左边的变量。 2 右边的表达式可以是变量、常量、函数调用等特殊的表达式。 3 不要将“”理解为数学上的等号: A=A+1 是表示将A单元的值加后以放回到A单元。 4 这里的”=”和关系运算符中的”=”不是一个概念.,201801,.,执行过程如右图,4赋值符号“=”左边一定只能是变量名或对象的属性引用,不能是常量、符号常量、表达式。 下面的赋值语句都是错的:5=X 左边是常量。Abs(X)=20 左边是函数调用,即是表达式。,5. 赋值符号“=”两边的数据类型一般要求应一致。 若为数值型数据,“=”两边类型不一致,将强制转换成“=”左边的精度,201801,.,10*x=sin(x)+yC=3+sqr(-3)C+x+y=c*yX=sin(x)/(20 mod 2),201801,.,3.5.2 数据的输出Print方法,Print方法的一般格式: 对象名.Print,|;,说明: 对象名. 可以是窗体名、图形框名,也可是立即窗口“Debug”。若省略对象,则表示在当前窗体上输出。在2.4节窗体对象的方法中对Print方法做了详细的介绍。用Print方法在图片框和立即窗口对象中输出与在窗体对象中输出完全相同。,201801,.,3.5.3 用户交互函数和过程(输入) 1. InputBox函数变量名=InputBox$(, , ) 其中:提示 提示信息,标题 标题区显示,缺省输入区默认值 该函数返回的是 字符串类型的数据例如,要在屏幕上显示如下的对话框:,201801,.,例如:有下列语句如下: Dim strName As String * 40, strS1 As String * 40 strS1 = “请输入你的姓名” + Chr(13) + Chr(10) + “然后单击确定” strName= InputBox$(strS1, “输入框”, , 100,100) 当键盘输入“王晓明” 后,变量strName获得键盘输入的值.,201801,.,2. MsgBox函数和MsgBox过程 函数形式:变量% = MsgBox(提示,按钮图标+ 缺省按钮+模式,标题) 过程形式: MsgBox 提示,按钮图标 +缺省按钮+ 模式,标题,201801,.,说明: “标题”和“提示”与InputBox函数中对应的参数相同; “按钮图标 +缺省按钮+模式”是整型表达式,决定信息框按钮数目、出现在信息框上的图标类型及操作模式(见书P71表1.3.15) 若程序中需要返回值,则使用函数,否则可调用过程。 4 以应用模式建立对话框,则必须响应对话框才能继续当前的应用程序,若以系统模式建立对话框,所有的应用程序都将被挂起,直到用户响应了对话框 5 其返回值为一整型常数 见表1.3.16,201801,.,按钮及图标值如下:,根据用户所选按钮,函数返回17的整数值,其含义如下表:(表1.3.16),201801,.,3.5.4 注释语句,其语法格式为:Rem 或 说明:1. 指要包括的任何注释文本。在Rem关键字和注释内容之间要加一个空格。可以用一个英文单引号“”来代替Rem关键字。2. 如果在其他语句行后面使用Rem关键字,必需用冒号(:)与语句隔开。若用英文单引号“”,则在其他语句行后面不必加冒号(:)。例如:Const PI=3.1415925 符号常量PIS=PI*r*r : Rem 计算圆的面积,201801,.,练习题,1.利用inputbox输入三角形三条边的长度a,b,c,计算并显示三角形的面积,公式为: 面积 其中:2.利用inputbox输入一个正实数,用print方法在一行上显示出它的平方和平方根、立方和立方根,每个数保留三位小数,之间有间隔。3.随机产生一个三位正整数,然后逆序输出,产生的数与逆序数同时显示,例如:产生246,输出642,201801,.,3.5.5 选择结构 1. IfThen语句(单分支结构) (1) If Then 语句块 End If 或 (2) If Then 表达式:可以是关系表达式、逻辑表达式。也可是算术表达式,这时,把非0当作 TRUE,0当作FALSE,例:已知两个数x和y,比较它们的大小,使得x大于y. If xy Then t=x : x=y: y=t End If 或 If xY Then Print XElse Print YEnd If也可以写成如下的单行形式: IF XY Then Print X Else Print Y,双分支选择结构执行过程,例1 设计一个计算分段函数的程序 书P81,201801,.,3. IfThenElseIf语句(多分支结构) 形式: If Then ElseIf Then Else 语句块 n+1 End If,例2:输入一学生成绩,评定其等级。方法是:90100分为“优秀”,8089分为“良好”,7079分为“中等”,6069分为“及格”,60分以下为“不合格”,执行过程,201801,.,使用IF语句实现的程序段如下:If x=90 thenPrint 优秀ElseIf x=80 ThenPrint 良好ElseIf x=70 ThenPrint 中等ElseIf x=60 ThenPrint 及格ElsePrint 不及格End If注意:(1)不管有几个分支,程序执行了一个分支后,其余分支不再执行。(2)elseif 不能写成:else if,中间不能有空格,201801,.,4 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 关系运算符表达式 Is y,x,y)(2)Choose函数Choose(数学类型变量,为1时的返回值,为2时的返回值)例:根据变量NOP的值为14,转换成+、-、*、运算符语句: OP=Choose(NOP,”+”,”-”,”*”,”),201801,.,3.5.6 循环结构1. For循环语句 (一般用于循环次数已知的循环结构)形式 For 循环变量初值 to 终值 Step 步长 语句块Exit For 语句块 Next 循环变量,注:循环变量必须为数值型变量,201801,.,该语句执行过程:(1)循环变量被赋初值(2)判断循环变量是否在终值内,如果是,执行循环体;如果否,结束循环,执行NEXT后面的语句;(3)循环变量自动加上步长值,转(2),继续循环如果形成了一个死循环,按Ctrl + Pause Break 组合键可退出死循环,201801,.,循环次数,例: For I=2 To 13 Step 3 Print I , Next I Print “I=“, I,循环执行次数 输出I的值分别为: 2 5 8 11 出了循环时输出I的值为: I=14注意:当退出循环后,循环变量的值保持退出时的值不变,上例退出循环后,I=14不变。除非重新给变量I赋值,201801,.,例4 编程计算:S=1+2+3+100,Dim S%, I%S=0 累加前变量S为0For I=1 to 100 S=S+INext IPrint S=,S,当NK Then Print N; 是素数Else Print N; 不是素数End If,201801,.,例4.10 编一程序验证哥德巴赫猜想:一个大于等于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所示。将程序代码写到窗体的单击事件中。,实现上面算法的程序代码如下:,201801,.,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,201801,.,4.6.2 字符串处理,例4.11 统计文本框中英文单词的个数。 算法设计(1)从文本(字符串)的左边开始,取出一个字符;设逻辑量WT表示所取字符是否是单词内的字符,初值设为False。(2)若所取字符不是“空格”、“逗号”、“分号”或“感叹号”等单词的分隔符,再判断WT是否为True,若WT不为True,则表示新单词的开始,让单词数Nw=Nw+1;让WT=True。(3)若所取字符是“空格”、“逗号”、“分号”或“感叹号”等单词的分隔符,则表示字符不是单词内字符,让WT=False。(4)再依次取下一个字符,重复(2)(3)步直到文本结束。,201801,.,例4.12 字符的加密和解密加密算法是: 将每个字母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,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 成本管理模型训练营
- 糖尿病出院后护理
- 中班健康教育活动:交警叔叔进课堂
- 肿瘤患者阳光心态建设路径
- 施工升降司机培训
- 培养小孩劳动教育
- 肾静脉疾病超声诊断
- 网课教师培训
- 儿童护理培训
- 供应室护士岗前培训课件
- 四川省南充市四校联考2025年英语八下期末质量检测试题含答案
- 2025年中国全棉靛蓝色织布市场调查研究报告
- 2024年四川金融控股集团有限公司招聘笔试真题
- 沃尔玛收货管理制度
- 铁塔施工方案(3篇)
- 2025年高考化学湖北卷试题真题解读及复习备考指导(精校打印)
- 湖南长沙市长郡教育集团2025年七年级英语第二学期期中联考试题含答案
- 安全监理工作方案
- 水位观测水尺设计与施工方法
- 2024初级会计职称考试《经济法基础》真题和答案
- 包装公司日常管理制度
评论
0/150
提交评论