种基本结构程序设计.ppt

上传人:sh****n 文档编号:9110445 上传时间:2020-04-03 格式:PPT 页数:47 大小:627KB
返回 下载 相关 举报
种基本结构程序设计.ppt_第1页
第1页 / 共47页
种基本结构程序设计.ppt_第2页
第2页 / 共47页
种基本结构程序设计.ppt_第3页
第3页 / 共47页
点击查看更多>>
资源描述
第四章三种基本结构程序设计 本章内容及要求 1 了解算法概念及算法的表示 掌握用N S流程序表示算法2 熟练掌握赋值语句 End语句和注释语句等语句及输入 输出消息框函数的使用 3 熟练掌握行if语句 块if结构 SelectCase情况选择结构有使用 掌握选择的嵌套结构 4 熟练掌握实现循环结构的For Next循环结构及ExitFor语句 Do Loop循环结构的使用 掌握多重循环 重点 选择结构及循环结构的实现及其应用 难点 选择的嵌套及多重循环结构 4 1算法及算法的表示 4 1 1算法概述什么是算法 广义地讲 算法是为完成一项任务所应当遵循的一步一步的规则的 精确的 无歧义的描述 它的总步数是有限的 狭义地讲 算法是解决一个问题采取的方法和步骤的描述 下面通过两个简单的例子加以说明 例4 1输入三个数 然后输出其中最大的数 将三个数依次输入到变量 B C中 设变量MAX存放最大数 其算法如下 例4 2输入10个数 打印输出其中最大的数 算法设计如下 1 输入1个数 存入变量A中 将记录数据个数的变量N赋值为1 即N 1 2 将A存入表示最大值的变量Max中 即Max A 3 再输入一个值给A 如果A Max则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即为最大数 4 1 3算法的表示一 自然语言与伪代码表示算法自然语言 就是指人们日常使用的语言 可以是汉语 英语或其它语言 伪代码 是用介于自然语言和计算机语言之间的文字和符号 包括数学符号 来描述算法 例如 例4 1可用如下的伪代码表示Begin 算法开始 输入A B CIFA B则A Max否则B MaxIFC Max则C MaxPrintMaxEnd 算法结束 2 三种基本结构的表示 1 顺序结构 条件 语句1 语句2 Y N 语句1 语句2 2 选择结构 条件 a 条件 语句组 3 循环结构 a 当型循环 b 直到循环 Y N Y N b 语句组 从10个数中选出最大的数的流程图 N 10 Max AN 1 A Max Max A 输入A 开始 再输入给A N N 1 打印Max 结束 Y N N Y 传统流程图 N 10 Max AN 1 A Max Max A 输入A 开始 再输入给A N N 1 打印Max 结束 Y N N Y 输入A 当N 10 Max A N N 1 打印Max 输入A N S流程图 A Max Y N PrivateSubForm Click Dima max i max aFori 1To10a Val InputBox A Ifa maxThenmax aNextiPrint Max maxEndSub 最后需要说明的是 上面介绍的算法表示是给人看的 即是为帮助程序开发人员阅读 编写程序而设计的一种辅助工具 程序则必须符一计算机语言的语法规则 下面是例4 2的计算机程序 即为用计算机语言表示算法 4 2顺序结构 4 2 1赋值语句形式 变量名 表达式对象 属性 表达式功能 将表达式的值赋值给变量名或指定对象的属性 一般用于给变量赋值或对控件设定属性值 例 sRate 0 1Text1 Text 欢迎使用VisualBasic6 0 说明 1执行过程 先求表达式的值 然后将值赋值给左边的变量 2右边的表达式可以是变量 常量 函数调用等特殊的表达式 3不要将 理解为数学上的等号 A A 1是表示将A单元的值加 后以放回到A单元 执行过程如右图 4 赋值符号 左边一定只能是变量名或对象的属性引用 不能是常量 符号常量 表达式 下面的赋值语句都是错的 5 X 左边是常量 Abs X 20 左边是函数调用 即是表达式 5 赋值符号 两边的数据类型一般要求应一致 4 3选择结构1 If Then语句 单分支结构 IfThen语句块EndIf或IfThen 例 已知两个数x和y 比较它们的大小 使得x大于y Ifx yThent x x y y tEndIf或Ifx yThent x x y y t 2 If Then Else语句 双分支结构 IfThenElseEndIfIfThenElse 例如 输出x y两个中值较大的一个值 IFX YThenPrintXElsePrintYEndIf也可以写成如下的单行形式 IFX YThenPrintXElsePrintY 双分支选择结构执行过程 例4 1设计一个求解一元二次方程的程序 3 If Then ElseIf语句 多分支结构 形式 IfThenElseIfThen Else语句块n 1 EndIf 例 输入一学生成绩 评定其等级 方法是 90 100分为 优秀 80 89分为 良好 70 79分为 中等 60 69分为 及格 60分以为 不合格 执行过程 使用IF语句实现的程序段如下 Ifx 90thenPrint 优秀 ElseIfx 80ThenPrint 良好 ElseIfx 70ThenPrint 中等 ElseIfx 60ThenPrint 及格 ElsePrint 不及格 EndIf 4 3 2SelectCase语句 情况语句 形式 SelectCase变量或表达式Case表达式列表1语句块1Case表达式列表2语句块2 CaseElse语句块n 1 EndSelect 与同类型的下面四种形式之一 表达式例 A 5一组枚举表达式 用逗号分隔 2 4 6 8表达式1To表达式260to100Is关系运算符表达式Is 60 数值型或字符串表达式 例如 将例4 3使用selectcase 语句来实现的程序段如下 SelectCasexCase90to100Print 优秀 Case80to89Print 良好 Case70to79Print 中等 Case60to69Print 及格 CaseElsePrint 不及格 EndSelect 4 3 3选择结构的嵌套在IF语句的Then分支和Else分支中可以完整地嵌套另一IF语句或SelectCase语句 同样SelectCase语句每一个Case分支中都可嵌套另一IF语句或另一SelectCase语句 下面是两种正确的嵌套形式 1 IFThen ThenThen Else EndIf Else IFThen Else EndIf EndIF 2 IFThen SelectCase Case IFThen Else EndIf Case EndSelect EndIF 4 4循环结构1 For循环语句 一般用于循环次数已知 形式For循环变量 初值to终值 Step步长 语句块 ExitFor 语句块Next循环变量 循环次数 例 ForI 2To13Step3PrintI NextIPrint I I 循环执行次数输出I的值分别为 25811出了循环输出为 I 14 例4 5编程计算 S 1 2 3 100 DimS I S 0 累加前变量S为0ForI 1to100S S INextIPrint S S 当N 100 N N 1 打印S S 0 N 1 S S N 例4 5的算法流程图 形式1 当型循环 Do While Until 语句块 ExitDo 语句块Loop 4 4 2Do Loop循环语句 形式2 直到循环 Do语句块 ExitDo 语句块Loop While Until DoUntil Loop执行过程Do LoopUntil执行过程 说明 1 当使用While构成循环时 当条件为 真 则反复执行循环体 当条件为 假 则退出循环 2 当使用Until构成循环时 当条件为 假 则反复执行循环体 直到条件成立 即为 真 时 则退出循环 3 在循环体内一般应有一个专门用来改变条件表达式中变量的语句 以使随着循环的执行 条件趋于不成立 或成立 最后达到退出循环 4 语句ExitDo的作用是退出它所在的循环结构 它只能用在DO Loop结构中 并且常常是同选择结构一起出现在循环结构中 用来实现当满足某一条件时提前退出循环 4 4 3While Wend语句使用格式如下 WhileWend说明 该语句的功能与DoWhile Loop实现的循环完全相同 例 用do Loop语句改写前面的例题4 5 例4 7求两个整数的最大公约数 最小公倍数 Dimn m nm r m Val InputBox m n Val InputBox n nm n mIfm0 m nn rr mmodnLoopPrint 最大公约数 nPrint 最小公倍数 nm n 算法使用转碾除法 流程图如右 实现的程序代码如下 4 4 4循环的嵌套 多重循环结构如果在一个循环内完整地包含另一个循环结构 则称为多重循环 或循环嵌套 嵌套的层数可以根据需要而定 嵌套一层称为二重循环 嵌套二层称为三重循环 上面介绍的几种循环控制结构可以相互嵌套 下面是几种常见的二重嵌套形式 1 ForI ForJ NextJ NextI 2 ForI DoWhile Until Loop NextI 3 DoWhile ForJ NextJ Loop 4 DoWhile Until DoWhile Until Loop Loop 例如 打印九九乘法表 Fori 1To9Forj 1To9se iNextjPicture1 PrintNexti 对于循环的嵌套 要注意以下事项 1 内循环变量与外循环变量不能同名 2 外循环必须完全包含内循环 不能交叉 3 不能从循环体外转向循环体内 也不能从外循环转向内循环 正确错误 Forii 1To10Forjj 1To20 NextiiNextjj Forii 1To10Forii 1To20 NextiiNextii Forii 1To10Forjj 1To20 NextjjNextii Forii 1To10 NextiiForii 1To10 Nextii 4 4 5几种循环语句比较 4 4 6循环结构与选择结构的嵌套 在循环结构中可以完整嵌套选择结构即整个选择结构都属于循环体 在选择结构中嵌套循环结构时 则要求整个循环结构必须完整地嵌套在一个分支内 一个循环结构不允许出现在两个或两个以上的分支内 1 ForI IF Then EndIF NextI 6 IF Then ForI EndIF NextI 5 SelectCase ForI Case Case NextI EndSelect 3 ForI IF Then NextI EndIF 2 IF Then ForI NextI EndIF 4 ForI SelectCase Case Case EndSelect NextI 4 5其它控制语句4 5 1Goto语句形式 GoTo 标号 行号 作用是无条件地转移到标号或行号指定的那行语句 标号是一个字符序列 行号是一个数字序列 例3 8求100以内的素数判别某数m是否为素数最简单的方法是 对于m从i 2 3 m 1判别m能否被i整除 只要有一个能整除 m不是素数 否则m是素数 Form 2To100Fori 2Tom 1If mModi 0ThenGoToNotNextMNextiPrintmNotNextM Nextm 4 5 2Exit语句 Exit语句用于退出Do Loop For Next Function或Sub代码块 对应的使用格式为 ExitDo ExitFor ExitFunction ExitSub 分别表示退出DO循环 For循环 函数过程 子过程 例如 下面的例子是使用Exit语句退出For Next循环 Do Loop循环及子过程 PrivateSubForm Click DimI Num Do 建立无穷循环 ForI 1To100 循环100次 Num Int Rnd 100 生成一个0 99的随机数 SelectCaseNumCase10 ExitFor 退出For Next循环 Case50 ExitDo 退出Do Loop循环 Case64 ExitSub 退出子过程 EndSelectNextILoopEndSub 4 5 3End语句形式 End功能 结束一个程序的运行 在VisualBasic中还有多种形式的End语句 用于结束一个程序块或过程 其形式有 EndIfEndSelectEndTypeEndWithEndSubEndFunction等它们与对应的语句配对使用 4 5 4暂停语句Stop语句用来暂停程序的执行 相当于在事件代码中设置断点 语法格式为 Stop说明 1 Stop语句的主要作用是把解释程序置为中断 Break 模式 以便对程序进行检查和调试 可以在程序的任何地方放置Stop语句 当执行Stop语句时 系统将自动打开立即窗口 2 与End语句不同 4 5 5With EndWith语句形式 With对象名语句块EndWith说明 With语句可以对某个对象执行一系列的语句 而不用重复指出对象的名称 例如 要改变一个对象的多个属性 可以在With控制结构中加上属性的赋值语句 这时候只是引用对象一次而不是在每个属性赋值时都要引用它 下面的例子显示了如何使用With语句来给同一个对象的几个属性赋值 例如 需要对同一对象设置几个属性 途径之一是使用多条语句 PrivateSubForm Load Command1 Caption 退出 E xit Command1 Top 500Command1 Left 4500Command1 Enabled TrueEndSub使用With EndWith语句 上面程序的代码如下 PrivateSubForm Load WithCommand1 Caption OK Top 500 Left 4500 Enabled TrueEndWithEndSub 4 6应用程序举例 4 6 1素数与哥德巴赫猜想 例4 9判断一个给定的整数是否为素数 算法思路 素数指除了能被1和自身外 不能被其他整数整除的自然数 判断整数N是不是素数的基本方法是 将N分别除以2 3 N 1 若都不能整除 则N为素数 因为N Sqr N Sqr N 所以 当N能被大于等于Sqr N 的整数整除时 一定存在一个小于等于Sqr N 的整数 使N能被它整除 因此只要判断N能否被2 3 Sqr N 整除即可 算法流程图如下 DimN I K N Val InputBox N K Int Sqr N ForI 2ToKIfNModI 0ThenExitForNextIIfI KThenPrintN 是素数 ElsePrintN 不是素数 EndIf 例4 10编一程序验证哥德巴赫猜想 一个大于等于6的偶数可以表示为两个素数之和 例如 6 3 38 3 510 3 7 算法设计 设N为大于等于6的任一偶数 将其分解为N1和N2两个数 使用N1 N2 N 分别判断N1和N2是否为素数 若都是 则为一组解 若N1不是素数 就不必再检查N2是否素数 先从N1 3开始 直到N1 N 2为止 算法流程图如图4 29所示 将程序代码写到窗体的单击事件中 实现上面算法的程序代码如下 PrivateSubForm Click DimN N1 N2 I K1 K2 N Val InputBox 输入大于6的偶数 ForN1 3ToN 2Step2K1 Int Sqr N1 ForI 2ToK1 判断N1是否是素数IfN1ModI 0ThenExitForNextIIfI K1Then 如果N1为素数 将N分解为N1 N2N2 N N1K2 Int Sqr N2 ForI 2ToK2 判断N2是否是素数IfN2ModI 0ThenExitForNextIIfI K2Then 如果N2也为素数 则打印输出PrintN N1 N2EndIfEndIfNextN1EndSub 4 6 2字符串处理 例4 11统计文本框中英文单词的个数 算法设计 1 从文本 字符串 的左边开始 取出一个字符 设逻辑量WT表示所取字符是否是单词内的字符 初值设为False 2 若所取字符不是 空格 逗号 分号 或 感叹号 等单词的分隔符 再判断WT是否为True 若WT不为True 则表示新单词的开始 让单词数Nw Nw 1 让WT True 3 若所取字符是 空格 逗号 分号 或 感叹号 等单词的分隔符 则表示字符不是单词内字符 让WT False 4 再依次取下一个字符 重复 2 3 步直到文本结束 例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 例如 Youaregood Dtzfwjltti解密算法 解密为加密的逆过程将每个字母C减 或加 一序数K 即c chr Asc c k 例如 序数k为5 这时 Z U z u Y T 当加序数后的字母小于 A 或 a 则c Chr Asc c k 26
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!