程序设计的3种基本结构.ppt_第1页
程序设计的3种基本结构.ppt_第2页
程序设计的3种基本结构.ppt_第3页
程序设计的3种基本结构.ppt_第4页
程序设计的3种基本结构.ppt_第5页
已阅读5页,还剩82页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第3章 程序设计的3种基本结构 本章内容及要求: (1)了解算法概念及表示,掌握用NS流程图表示算法; ( 2)熟练掌握赋值语句、输入/输出消息框函数的使用; ( 3)熟练掌握行if语句、块if结构、Select Case情况选 择结构有使用,掌握选择的嵌套结构; (4)熟练掌握实现循环结构的For/Next循环结构及Exit For语句、Do/Loop循环结构的使用,掌握多重循环; (5)能够运用3种结构进行综合程序设计。 重点:选择结构及循环结构的实现及其应用 难点:算法设计、选择的嵌套及多重循环结构 3.1 算法及算法的表示 3.1.1 算法概述 什么是算法: 广义地讲:算法是为完成一项任务所应当遵循的一步一 步的规则的、精确的、无歧义的描述,它的总步数是有限的 。 狭义地讲:算法是解决一个问题采取的方法和步骤的描述 。 下面通过两个简单的例子加以说明: 1) 输入A、B、C。 2) A与B中大的一个放入MAX中。 3) 把C与MAX中大的一个放入MAX中。 4) 输出MAX,MAX即为最大数。 例3.1 输入三个数,然后输出其中最大的数。 将三个数依次输入到变量、B、C中,设变量MAX存放 最大数。其算法如下: 3.1 算法及算法的表示 例3.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 3.1 算法及算法的表示 3.1.2 算法的特性 1 有穷性 2 确定性 3 有0个或多个输入 4 有一个或多个输出 5 有效性 3.1 算法及算法的表示 3.1.3 算法的表示 一、自然语言与伪代码表示算法 自然语言:就是指人们日常使用的语言,可以是汉语、英 语或其它语言。 伪代码:是用介于自然语言和计算机语言之间的文字和符 号(包括数学符号)来描述算法。 3.1 算法及算法的表示 例如:例3.1可用如下的伪代码表示 Begin(算法开始) 输入 A,B,C IF AB 则 AMax 否则 BMax IF CMax 则 CMax Print Max End (算法结束) 3.1 算法及算法的表示 二 用传统流程图表示算法 处理框 起止框 I/O框 判断框 流程线 1、传统流程图中的基本符号 3.1 算法及算法的表示 2、三种基本结构的表示 (1)顺序结构 条件 语句1语句2 YN 语句1 语句2 (2)选择结构 3.1 算法及算法的表示 (3)循环结构 a) 当型循环 b) 直到循环 条件 语句组 Y N ( b ) 条件 ( a ) Y N 语句组 3.1 算法及算法的表示 三种基本结构的特点: (1)只有一个入口 (2)只有一个出口 (3)不存在死语句 (4)不存在死循环 例: 例3.2输入10个数,打印输出其中的最大的数的流程图 3.1 算法及算法的表示 从10个数中选出最大的数 的算法流程图 NMax Max =A 输入A 开始 再输入给A N=N+1 打印Max 结束 YN N Y 3.1 算法及算法的表示 3.1.4 用NS流程图表示算法 将全部算法写在一个矩形框内,在矩形内还可包含其 它从属于它的框 三种基本结构的NS图表示: 语句A 语句B 语句A语句B 条件 YN 1、顺序结构 2、选择结构 3.1 算法及算法的表示 (3)循环结构 a) 当型循环 b) 直到循环 例: 画出从10个数中选出最大的数的NS 流程图 语句组 当条件成立 ( a ) 语句组 直到当条件成立 ( b ) 3.1 算法及算法的表示 传统流程图 NMax Max =A 输入A 开始 再输入给A N=N+1 打印Max 结束 YN N Y 输入A 当NMax YN 输入A 3.1 算法及算法的表示 Private 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 Print “Max=“; max End Sub 下面是例3.2的计算机 程序,即为用计算机语言表示算法: 3.1 算法及算法的表示 3.1.6 结构化程序设计方法(补充) (一)、用计算机解决问题的过程 提出、分 析问题 确定算 法模型 设计 算法 编写 程序 调试 程序 分析输 出结果 正确 合理 结束 不正确 3.1 算法及算法的表示 (二)、结构化程序设计思想 自顶向下、逐步细化、模块化 自顶向下:先从全局、整体设计 逐步细化:将一个问题分解成几个较小的问题解决 模块化: 将一个大任务分解成若干个较小的部分 , 每 个部分承担一定功能,称为“功能模块 ” 例:给100个整数,打印输出其中的素数 3.1 算法及算法的表示 S1 NS流程图 输入100个数存入 X1,x2,x100 打印x1x100中 不等于0的数 让x1,x2,x100 中的非素变为0 S3 S2 输入xi 当ixi/2 S21细化 3.1 算法及算法的表示 输入100个数存入 X1,x2,x100 打印x1x100中 不等于0的数 让x1,x100中 的非素变为0 细化后的流程图 输入xi 当ixi/2 i=i+1 xi0 当i,|; 说明: 对象名. 可以是窗体名、图片框名,也可是立即窗口 “Debug”。若省略对象,则表示在当前窗体上输出。 用Print方法在图片框和立即窗口对象中输出与在窗体 对象中输出完全相同。 3.2 顺序结构 3.2.3 用户交互函数和过程 1. InputBox函数 变量名=InputBox$(, , ) 其中:提示 提示信息,标题 标题区显示,缺省输入区缺省值。 例如,要在屏幕上显示如下的对话框: 3.2 顺序结构 例如:有下列语句如下: Dim x% x= Val(InputBox(“请输入一个数”, “输入框”, 100) 语句执行后打开如下对话框。 缺省值 标题 提示 3.2 顺序结构 2. MsgBox函数和MsgBox过程 函数形式: 变量% = MsgBox(提示,按钮图标+ 缺省按钮+模式,标题) 过程形式: MsgBox 提示,按钮图标 +缺省按钮+ 模式,标题 图标 标题 提示信息 命令按钮 3.2 顺序结构 说明: “标题”和“提示”与InputBox函数中对应的参数相同; “按钮图标 +缺省按钮+模式”是整型表达式,决定 信息框按钮数目、出现在信息框上的图标类型及操作模式( 见表3.1) 若程序中需要返回值,则使用函数,否则可调用过程 。 3.2 顺序结构 按钮及图标值如下: 根据用户所选按钮,函数返 回17的整数值,其含义如 下表:(表3-2) 3.2 顺序结构 3.2.4 注释语句 其语法格式为: Rem 或 说明: 1. 指要包括的任何注释文本。在Rem关键字 和注释内容之间要加一个空格。可以用一个英文单引号“”来 代替Rem关键字。 2. 如果在其他语句行后面使用Rem关键字,必需用冒号( :)与语句隔开。若用英文单引号“”,则在其他语句行后面不 必加冒号(:)。 例如: Const PI=3.1415925 符号常量PI S=PI*r*r : Rem计算圆的面积 3.2 顺序结构 3.2.5 应用举例 例3.3 输入时间(小时,分和秒),然后使用输出消息 框输出总计多少秒。 使用文本框输入数据,使用消息框输出计算结果,程序运 行界面如图3-14所示。 3.2 顺序结构 图3-14 程序运行界面 3.2.5 应用举例 例3.4 编一程序,求一内半径R1=10cm,外半径R2=20cm 的球环的体积。要求按四舍五入保留到小数点后4位。 解:球的体积公式 : 本题所求的球环面的体积公式 : 3.2 顺序结构 选择结构是根据条件选择执行不同的分支语句,以完成 问题的要求。在Visual Basic程序设计中,使用IF语句和 Select Case语句来处理选择结构。其特点是:根据所给定的 条件成立(True)或不成立(False),从各实际可能的不同 分支中执行某一分支的相应操作(程序块),并且任何情况 下总有“无论条件多寡,必择其一;虽然条件众多,仅选其 一”的特性。 3.3 选择结构 3.3.1 If条件语句 1. IfThen语句(单分支结构) If Then 语句块 End If 或 If Then 例:已知两个数x和y,比较它们的大小, 使得x大于y. If x Then Else End If If Then Else 双分支选择结构执行过程 3.3.1 If条件语句 例如:输出x,y两个中值较大的一个值。 IF XY Then Print X Else Print Y End If 也可以写成如下的单行形式: IF XY Then Print X Else Print Y 3.3.1 If条件语句 例3.5 设计一个求解一元二次方程的程序,要求考虑实 根、虚根等情况。 算法分析: (1)一元二次方程根的计算公式: (2)求解首先要输入方程的系数a,b,c,计算的值,由其值是 否大于等于零来决定是实根还是虚根。 3.3.1 If条件语句 3. 条件函数Iif() 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.3.1 If条件语句 4. IfThenElseIf语句(多分支结构) 形式: If Then ElseIf Then Else 语句块 n+1 End If 执行过程 3.3.1 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 例3.6 输入一学生成绩,评定其等级。方法是:90100分 为“优秀”,8089分为“良好”,7079分为“中等”,6069分为 “及格”,60分以为“不合格” 3.3.1 If条件语句 3.3.2 Select Case语句(情况语句) 形式: Select Case 变量或表达式 Case 表达式列表1 语句块1 Case 表达式列表2 语句块2 Case Else 语句块n+1 End Select 数值型或字符串表达式 3.3 选择结构 说明: :与同类型的 下面四种形式之一: 表达式 A +5 一组枚举表达式(用逗号分隔) 2, 4, 6, 8 表达式1 To 表达式2 60 to 100 Is 关系运算符表达式 Is ,. ) 说明: Choose函数根据的值来决定返回其后中的那个表达式的值。如果的值为1,则 返回的值,如果的值为2,则返回的值,以此类推。若的值小于1或大于n ,则函数返回Null。 例如:根据Nop的值,得到+、-、*,/的运算符,可由理面语 句来实现。 Nop= Int(Rnd * 4)+ 1 OP= Choose(Nop, “+“, “-“, “*“, “/“) 3.3 选择结构 3.3.3 选择结构的嵌套 下面是两种正确的嵌套形式: (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 3.3 选择结构 注意:只要在一个分支内嵌套,不出现交叉,满足结构规 则,其嵌套的形式将有很多种,嵌套层次也可以任意多。对 于多层IF嵌套结构中,要特别注意IF与Else的配对关系,一个 Else必须与IF配结,配对的原则是:在写含有多层嵌套的程序 时,建议使用缩进对齐方式,这样容易阅读和维护。 例3.7 设计一个用户身份验证程序,运行界面如下图所示 。 3.3 选择结构 循环结构是一种重复执行的程序结构。它判断给定的条件, 如果条件成立,即为“真”(True),则重复执行某一些语句( 称为循环体);否则,即为“假”(False),则结束循环。通常 循环结构有“当型循环”(先判断条件,后执行循环)和“直到型 循环”(先执行循环,再判断条件)两种。在Visual Basic中, 实现循环结构的语句主要有4种: ForNext语句 Do While/UntilLoop DoLoop While/Until语句 WhileWend语句 3.4 循环结构 3.4.1 ForNext循环语句 For循环语句 (一般用于循环次数已知) 形式: For 循环变量初值 to 终值 Step 步长 语句块 Exit For 语句块 Next 循环变量 循环体 0 初值终值 =0 死循环 步长 3.4 循环结构 循环次数 例: For I=2 To 13 Step 3 Print I , Next I Print “I=“, I 循环执行次数 输出I的值分别为: 2 5 8 11 出了循环输出为: I=14 3.4 循环结构 例3.8 编程计算:S=1+2+3+100 Dim S%, I% S=0 累加前变量S为0 For I=1 to 100 S=S+I Next I Print “ S=“,S 当N 语句块 Exit Do 语句块 Loop 3.4.2 DoLoop循环语句 3.4 循环结构 形式2:(直到循环) Do 语句块 Exit Do 语句块 Loop While|Until 3.4 循环结构 条 件 语句块 语句块 T F Exit Do 条 件 语句块 语句块 T F Exit Do Do UntilLoop执行过程 DoLoop Until执行过程 3.4 循环结构 说明: (1)当使用While构成循环时,当条件为“真”,则 反复执行循环体,当条件为“假”,则退出循环。 (2)当使用Until 构成循环时,当条件为“假”,则反 复执行循环体,直到条件成立,即为“真”时,则退出循环。 (3)在循环体内一般应有一个专门用来改变条件表达式中 变量的语句,以使随着循环的执行,条件趋于不成立(或成立 ),最后达到退出循环。 (4)语句Exit Do的作用是退出它所在的循环结构,它只能 用在DO/Loop结构中,并且常常是同选择结构一起出现在循环 结构中,用来实现当满足某一条件时提前退出循环。 3.4 循环结构 3.4.3 WhileWend语句 使用格式如下: While Wend 说明:该语句的功能与Do While .Loop实现的 循环完全相同。 例3.9:用doLoop语句改写前面的例题 3.8 3.4 循环结构 例3.10 求两个整数的最大公约数、最小公倍数 Dim n%,m%,nm%,r% m=Val(InputBox(“m=“) n=Val(InputBox(“n=“) nm=n*m If m 0) m=n n=r r= m mod n Loop Print “最大公约数=“, n Print “最小公倍数=“, nm/n 算法流程图 3.4 循环结构 3.4.4 循环的嵌套多重循环结构 如果在一个循环内完整地包含另一个循环结构,则称 为多重循环,或循环嵌套,嵌套的层数可以根据需要而定 ,嵌套一层称为二重循环,嵌套二层称为三重循环。 上面介绍的几种循环控制结构可以相互嵌套,下面是 几种常见的二重嵌套形式: 3.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 3.4 循环结构 例如:打印九九乘法表. For i = 1 To 9 For j = 1 To 9 se = i se; Next j Picture1.Print Next i 3.4 循环结构 例3.11 将一张面值为100元的人民币等值换成100张5元、1 元和0.5元的零钞,要求每种零钞不少于1张,问有哪几种组 合? 编程分析:如果用X,Y,Z来分别代表5元、1元和0.5元的 零钞的张数,根据题意只能得到下面两个方程。 X+Y+Z=100 5X+Y+0.5Z=100 3.4 循环结构 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 对于循环的嵌套,要注意以下事项: (1) 内循环变量与外循环变量不能同名; (2) 外循环必须完全包含内循环,不能交叉; (3) 不能从循环体外转向循环体内,也不能从外循环转向内 循环. 下面是正确的嵌套 3.4 循环结构 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 下面是不正确的嵌套 3.4 循环结构 对于循环的嵌套,要注意以下事项: (1) 内循环变量与外循环变量不能同名; (2) 外循环必须完全包含内循环,不能交叉; (3) 不能从循环体外转向循环体内,也不能从外 循环转向内循环. 3.4 循环结构 3.4.5 几种循环语句比较 3.4 循环结构 3.4.6 循环结构与选择结构的嵌套 在循环结构中可以完整嵌套选择结构即整个选择结构 都属于循环体。在选择结构中嵌套循环结构时,则要求整 个循环结构必须完整地嵌套在一个分支内,一个循环结构 不允许出现在两个或两个以上的分支内。 3.4 循环结构 (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 3.4 循环结构 3.5.1 Goto 语句 形式: Go To 标号|行号 作用是无条件地转移到标号或行号指定的那行语句. 标号是一个字符序列,行号是一个数字序列。 例如: Lp: goto lp 3.5 其它控制语句 3.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 循环及子过程。 3.5 其它控制语句 Private Sub Form_Click() Dim I%, Num% Do While True 建立无穷循环。 For I = 1 To 100 循环 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 Loop End Sub 3.5 其它控制语句 3.5.3 End 语句 形式: End 功能:结束一个程序的运行。 在Visual Basic中还有多种形式的End语句,用于结束 一个程序块或过程。 其形式有: End If End Select End Type End With End Sub End Function等,它们与对应的语句配对使用。 3.5 其它控制语句 3.5.4 暂停语句 Stop语句用来暂停程序的执行,相当于在事件代码中设置 断点。 语法格式为: Stop 说明: 1. Stop语句的主要作用是把解释程序置为中断(Break)模式, 以便对程序进行检查和调试。可以在程序的任何地方放置 Stop语句,当执行Stop语句时,系统将自动打开立即窗口。 2. 与End语句不同。 3.5 其它控制语句 3.5.5 With.End With 语句 形式: With 对象名 语句块 End With 说明:With 语句可以对某个对象执行一系列的语句, 而不用重复指出对象的名称。 例如,要改变一个对象的多个属性,可以在 With 控制 结构中加上属性的赋值语句,这时候只是引用对象一次而不 是在每个属性赋值时都要引用它。下面的例子显示了如何使 用 With 语句来给同一个对象的几个属性赋值。 3.5 其它控制语句 例如,需要对同一对象设置几个属性。途径之一是使用 多条语句。 Private Sub Form_Load() Command1.Caption = “退出(E “ 是素数“ Else Print N; “ 不是素数“ End If 3.6 应用程序举例 算法流程图 程序代码: 例3.13 编一程序验证哥德巴赫猜想:一个大于等于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所示。将程序代码写到窗 体的单击事件中。 实现上面算法的程序代码如下: 3.6 应用程序举例 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 I

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论