版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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、则转到第(3)步执行,否则转到第(6)步。 (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
4、否则 BMax IF CMax 则 CMax Print Max End (算法结束),二 用传统流程图表示算法,处理框,起止框,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个数中选出最大的数的流
5、程图,N10,Max =A N=1,AMax,Max =A,输入A,开始,再输入给A,N=N+1,打印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,
6、打印Max,结束,Y,N,N,Y,输入A,当N=10,Max =A,N=N+1,打印Max,输入A,NS流程图,A=Max,Y,N,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=; max End Sub,最后需要说明的是:上面介绍的算法表示是给人看的,即是为帮助程序开发人员阅读、编写程序而设计的一种辅助工具,程序则必须符一计算机语言的语法规则。 下面是例4.2的计算机 程序,即为用计算机
7、语言表示算法:,4.1.6 结构化程序设计方法(补充),(一)、用计算机解决问题的过程,提出、分析问题,确定算法模型,设计算法,编写程序,调试程序,分析输出结果,正确合理,结束,不正确,(二)、结构化程序设计思想,自顶向下、逐步细化、模块化,自顶向下:先从全局、整体设计 逐步细化:将一个问题分解成几个较小的问题解决 模块化: 将一个大任务分解成若干个较小的部分, 每 个部分承担一定功能,称为“功能模块”,例:给100个整数,打印输出其中的素数,S1,NS流程图,S3,S2,S1,NS流程图,S3,S2,S21,细化后的流程图,4.2 顺序结构,4.2.1 赋值语句 形式: 变量名表达式 对象.
8、属性表达式 功能: 将表达式的值赋值给变量名或指定对象的属性。 一般用于给变量赋值或对控件设定属性值. 例: sRate!=0.1 Text1.Text 欢迎使用Visual Basic 6.0” 说明: 1 执行过程:先求表达式的值,然后将值赋值给左边的变量。 2 右边的表达式可以是变量、常量、函数调用等特殊的表达式。 3 不要将“”理解为数学上的等号: A=A+1 是表示将A单元的值加后以放回到A单元。,执行过程如右图,4赋值符号“=”左边一定只能是变量名或对象的属性引用,不能是常量、符号常量、表达式。 下面的赋值语句都是错的: 5=X 左边是常量。 Abs(X)=20 左边是函数调用,即
9、是表达式。,5. 赋值符号“=”两边的数据类型一般要求应一致。,4.2.2 数据的输出Print方法,Print方法的一般格式: 对象名.Print,|;,说明: 对象名. 可以是窗体名、图片框名,也可是立即窗口“Debug”。若省略对象,则表示在当前窗体上输出。在2.3节窗体对象的方法中对Print方法做了详细的介绍。用Print方法在图片框和立即窗口对象中输出与在窗体对象中输出完全相同。,4.2.3 用户交互函数和过程 1. InputBox函数 变量名=InputBox$(, , ) 其中:提示 提示信息,标题 标题区显示,缺省输入区缺省值 有$ 返回字符类型,否则为数值类型. 例如,要
10、在屏幕上显示如下的对话框:,例如:有下列语句如下: Dim strName As String * 40, strS1 As String * 40 strS1 = “请输入你的姓名” + Chr(13) + Chr(10) + “然后单击确定” strName= InputBox$(strS1, “输入框”, , 100,100) 当键盘输入“王晓明” 后,变量strName获得键盘输入的值.,2. MsgBox函数和MsgBox过程 函数形式:变量% = MsgBox(提示,按钮图标+ 缺省按钮+模式,标题) 过程形式: MsgBox 提示,按钮图标 +缺省按钮+ 模式,标题,说明: “标
11、题”和“提示”与InputBox函数中对应的参数相同; “按钮图标 +缺省按钮+模式”是整型表达式,决定信息框按钮数目、出现在信息框上的图标类型及操作模式(见表4.1) 若程序中需要返回值,则使用函数,否则可调用过程。,按钮及图标值如下:,根据用户所选按钮,函数返回17的整数值,其含义如下表:(表4.2),MsgBox 函数示例,本示例使用 MsgBox 函数,在具有“是”及“否”按钮的对话框中显示一条严重错误信息。示例中的缺省按钮为“否”,MsgBox 函数的返回值视用户按哪一个钮而定。本示例假设 DEMO.HLP 为一帮助文件,其中有一个内容代码为 1000。,Dim Msg, Style
12、, Title, Help, Ctxt, Response, MyString Msg = “Do you want to continue ?” 定义信息。 Style = vbYesNo + vbCritical + vbDefaultButton2 定义按钮。 Title = “MsgBox Demonstration” 定义标题。 Help = “DEMO.HLP” 定义帮助文件。 Ctxt = 1000 定义标题 上下文。 显示信息。 Response = MsgBox(Msg, Style, Title, Help, Ctxt) If Response = vbYes Then 用
13、户按下“是”。 MyString = “Yes” 完成某操作。 Else 用户按下“否”。 MyString = “No” 完成某操作。 End If,4.2.4 注释语句,其语法格式为: Rem 或 说明: 1. 指要包括的任何注释文本。在Rem关键字和注释内容之间要加一个空格。可以用一个英文单引号“”来代替Rem关键字。 2. 如果在其他语句行后面使用Rem关键字,必需用冒号(:)与语句隔开。若用英文单引号“”,则在其他语句行后面不必加冒号(:)。 例如: Const PI=3.1415925 符号常量PI S=PI*r*r : Rem计算圆的面积,4.3 选择结构 1. IfThen语句
14、(单分支结构) 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 Then Else ,例如:输出x,y两个中值较大的一个值。 IF XY Then Print X Else Print Y End If 也可以写成如下的单行形式: IF XY Then Print X Else Print Y,双分支选择结构执行过程,
15、例4.1 设计一个求解一元二次方程的程序,3. IfThenElseIf语句(多分支结构) 形式: If Then Else If Then Else 语句块 n+1 End If,例:输入一学生成绩,评定其等级。方法是:90100分为“优秀”,8089分为“良好”,7079分为“中等”,6069分为“及格”,60分以为“不合格”,执行过程,使用IF语句实现的程序段如下: If x=90 then Print 优秀 ElseIf x=80 Then Print 良好 ElseIf x=70 Then Print 中等 ElseIf x=60 Then Print 及格 Else Print 不
16、及格 End If,4.3.2 Select Case语句(情况语句) 形式: Select Case 变量或表达式 Case 表达式列表1 语句块1 Case 表达式列表2 语句块2 Case Else 语句块n+1 End Select :与同类型的下面四种形式之一: 表达式 例: A +5 一组枚举表达式(用逗号分隔) 2, 4, 6, 8 表达式1 To 表达式2 60 to 100 Is 关系运算符表达式 Is 60,数值型或字符串表达式,例如:将例4.3 使用select case.语句来实现的程序段如下: Select Case x Case 90 to 100 Print 优秀
17、 Case 80 to 89 Print 良好 Case 70 to 79 Print 中等 Case 60 to 69 Print 及格 Case Else Print 不及格 End Select,例题:设计一个由计算机来当小学低年级学生算术老师的VB应用程序,要求给出一系列的两个110数的四则运算的算术题,学生输入该题的答案,计算机根据学生的答案判断正确与否,并给出成绩,单击结束命令按钮,退出应用程序。 分析:产生110操作数,可通过Int(10* Rnd + 1) 实现,Private Sub Form_Load() 生成题目 Dim nop, num1, num2 As Intege
18、r, op As String * 1Randomize num1 = Int(10 * Rnd + 1) 第一操作数 num2 = Int(10 * Rnd + 1) 第二操作数 nop = Int(4 * Rnd + 1) 运算符 Select Case nop Case 1 op = : result = num1 + num2 Case 2 op = : result = num1 - num2 Case 3 op = : result = num1 * num2 Case 4 op = : result = num1 / num2 End Select lblexp.Caption
19、= num1 是素数 Else Print N; 不是素数 End If,例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所示。将程序代码写到窗体的单击事件中。,实现上面算法的程序代码如下:,Private Sub Form_Click() Dim N%, N1%, N2%,
20、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 N1 End Sub,4.6.2 字符串处理,例4.11 统计文本框中英文单词的个数。 算法设计 (1)从文本(字符串)的左边开始,取出一个字符;设逻辑量WT表示所取字符是否是单词内的字符,初值设为False。 (2)若所取字符不是“空格”、“逗号”、“分号”或“感叹号
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 文物保护工程从业资格模拟测试题(带解析)
- 关于大学食堂的调查问卷
- 云南省2026年中考数学真题附同步解析
- 西师大版小学二年级数学上册《左右视角观察物体》教案
- 施工安全生产管理情况
- 机电班安全管理
- 幼儿园健康课课
- 水陆缸植物种植技术方法
- 安全生产管理教材解读
- 大健康产业招商推介
- 2026新疆乌鲁木齐市政环卫集团有限公司面向社会招聘5人考试备考题库及答案详解
- 2026年新教材人教版九年级上册英语Unit 3 Smart Learning 教案
- 2025南瑞集团有限公司招聘300人笔试历年常考点试题专练附带答案详解
- 2026贵州铜仁德江机场消防员岗招聘15人笔试备考试题及答案详解
- 2026年抖音内衣-泳衣类目准入考试高频原题+标准答案
- 2026年医院卫生监督所监督员高频面试题包含详细解答
- 2026年全国青少年航天创新大赛(航天知识问答)经典试题及答案
- GB/T 47540-2026旅行社老年旅游服务要求
- 病理科建设与管理指南
- 七年级数学 去括号
- GB/T 9780-2013建筑涂料涂层耐沾污性试验方法
评论
0/150
提交评论