




已阅读5页,还剩34页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
程序设计语言的三种基本结构流程图 顺序结构 选择结构 循环结构 循环结构 用于在一定的条件下多次重复执行一组语句 例如 在一行上输出60个 号 用Print方法方法一 可以用60个 号组成一个字符串 Print 方法二 使用60个语句 Print Print Print 流程图 2 条件型循环 未知循环次数 1 计数型循环 已知循环次数 分类 学习要点 2 实现循环的算法 1 进入循环的条件 3 退出循环的条件 一 For循环语句 计数型 一般用于循环次数已知 形式如下 For循环变量 初值to终值 Step步长 语句块 ExitFor 语句块Next循环变量 Exitfor 当遇到该语句 退出循环 执行该循环的下一条语句 步长 也可为实数 循环次数 int 终值 初值 步长 1 循环变量 必须是数值型 语句块 可以是一条或多条语句 说明 For循环流程图 循环变量得到初值 循环变量在终值内 T 语句块 循环变量加步长 F 有ExitFor F T For Next流程图 循环执行次数 思考1 计算下列循环语句的次数 1 forI 3to20step4 2 forI 3 5to5 5step0 5 3 forI 3 5to5 5step 0 5 4 forI 3to20step0 结果分别为 6190无数次 思考2 如果事先不知道循环次数 如何用For Next For循环变量 1to非常大的数if达到循环结束条件thenexitfor Netxt循环变量 例4 9改变循环控制变量对循环的影响PrivateSubCommand1 Click j 0Fori 1To20Step2i i 3 有无此句结果有什么不同 j j 1Print 第 j 次循环i iNextiPrint 退出循环后i iEndSub 正常情况 i 1 3 5 7 9 11 13 15 17 19现在 i 4 9 14 19 常用算法 累加 连乘 算法 是对某个问题求解过程的描述 例 累加求1 100的偶数和 PrivateSubForm Load DimiAsInteger sAsIntegerShows 0Fori 2To100Step2s s I 赋值语句实现NextiPrint s sEndSub 例 连乘求自然数1 30的乘积 即30的阶乘 PrivateSubForm Click s 1Fori 1To10s s I 赋值语句实现Printi 的阶乘是 sNextiEndSub 思考 若把循环体前面置各变量初值的语句放在循环体内 程序运行时会产生什么情况 PrivateSubForm Click Fori 3To100step3sum 0sum sum INextIPrintsumEndSub 结论 在一重循环中 存放累加 连乘结果的变量初值设置应该放在循环体外 二 Do Loop循环语句 条件型 用于控制循环次数未知 形式1 先判断后循环 形式2 先做后判断 Do While Until 语句块 ExitDo 语句块Loop Do语句块 ExitDo 语句块Loop While Until 说明 1 形式1先判断后执行 有可能一次也不执行形式2先执行后判断 最少执行一次循环体 2 While用于指明条件为真时执行循环体 Until刚好相反 3 当省略了 While Until 子句 表示无条件循环 循环体中应有ExitDo语句 否则为死循环 4 遇到ExitDo语句时退出循环 执行Loop下一条语句 DoWhile Loop流程图 Do WhileLoop流程图 条件 语句块 语句块 T F 语句块 语句块 条件 T F 有ExitDo F T 有ExitDo F T DoWhile Until Loop流程图 例4 11 我国有13 2亿人口 按出生率为0 5 的增长率 多少年后超过20亿 PrivateSubForm Load DimmAsDoubleDimyearrAsIntegerShowm 1320000000 yearr 0DoWhilem 2000000000 m m m 0 005yearr yearr 1LoopPrintyearr 年后我国的人口为 mEndSub 若将While改为Until 条件表达式怎么修改 DoUntilm 200000000000 例 迭代法求a的立方根 X a1 3迭代公式 Xn 1 1 3 2Xn a Xn2 当 Xn 1 Xn e 一个很小的数 则Xn 1为a1 3的近似值 迭代思想 是一个反复用新值取代旧值的过程 Privatesubcommand1 click Consteps 1e 5A val inputbox entera V a以u代表Xn v代表Xn 1 Dou vV 2 u a u 2 3Loopwhileabs v u epsPrintvEndsub 若将While改为Until 条件表达式怎么修改 DoUntilabs v u eps 例4 12演示 求两自然数m n的最大公约数和最小公倍数 方法一 用辗转相除法求最大公约数 分析 1 对于已知两数m n 使得m n 2 m除以n得余数r 3 若r 0 则n为最大公约数结束 否则执行 4 4 m n n r 再重复执行 2 常用算法 求最大公约数和最小公倍数 求m 14 n 6的最大公约数和最小公倍数 z m nIfm0 m nn rr mmodnLoopPrint 最大公约数 nPrint 最小公倍数 z n 若r 0 则n为最大公约数结束 方法二 辗转相减法求最大公约数 z m nDoWhilemnIfm nThenm m nElsen n mEndIfLoopPrintmPrintz m m m nm n n n mn m m n为公约数m n 若m n 则m为最大公约数结束若不相等 谁大替换谁 例4 14 求自然对数e的近似值 要求其误差小于0 00001 近似公式为 e 1 1 1 1 2 1 3 1 n 该例题涉及两个问题 1 用循环结构求级数和的问题 本例根据某项值的精度来控制循环的结束与否 2 累加 e e t 循环体外对累加和的变量清零e 0 3 连乘 n n i 循环体外对连乘积变量置1n 1 三 循环的嵌套 一个循环体内又包含了一个完整的循环结构称为循环的嵌套 也叫多重循环 例4 13演示 打印九九乘法表 Fori 1To9Forj 1To9se iNextjPicture1 PrintNexti 打印上三角或下三角程序如何改动 思考 下列30 90为语句标号 分别标记该语句 第40句执行了几次循环 第50句执行了几次循环 第90句输出结果是多少 Forj 1to12step3Fork 6to2step 2mk kPrintj kNextk80nextj90printj k mk 31213 0 2 Forii 1To10Forjj 1To20 NextiiNextjj Forii 1To10Forii 1To20 NextiiNextii Forii 1To10Forjj 1To20 NextjjNextii Forii 1To10 NextiiForii 1To10 Nextii 注意 1 内循环变量与外循环变量不能同名 2 外循环必须完全包含内循环 不能交叉 3 不能从循环体外转向循环体内 反之则可以 正确错误 循环总结 四常见错误1 不循环或死循环的问题主要是循环条件 循环初值 循环终值 循环步长的设置有问题 例如 ForI 10to20step 1ForI 20to10DowhilefalseForI 10to20step0Dowhile12 循环结构中缺少配对的结束语句For少配对的Next do语句没有loop结束 3 循环嵌套时 内外循环交叉 与IF块结构交叉运行时显示 无效的Next控制变量引用 例如 例如ForI 1to4forI 1to4Forj 1to5if表达式then NextInextiNextjendif4 累加 连乘时 存放累加 连乘结果的变量赋初值问题 1 一重循环在一重循环中 存放累加 连乘结果的变量初值设置应在循环语句前 2 多重循环这要视具体问题分别对待 5大数相乘产生 溢出 问题见实验P301 4 3 其他辅助控制语句 1 GoTo语句 建议不使用 形式 GoTo 标号 行号 作用 无条件转移到标号或行号指定的地方 常用算法 求素数 素数 是一个大于2 且不能被1和本身以外的整数整除的整数 方法 判断某数m是否为素数 可从素数本身的定义求解 对于m从I 2 3 m 1判断m是否能被I整除 只要有一个能被整除 m就不是素数 但这种算法速度很慢 例4 15 求100以内素数的代码 Form 2To100Fori 2Tom 1If mModi 0ThenGoToNotNextMNextiPrintmNotNextM Nextm m是否为素数 求100以内的素数 分析 实际上m如果是素数的话 是不可能被大于sqr m 的整数所整除 所以循环条件改为 forI 2toint sqr m 这样循环的次数会大大减少 2 Exit语句多种形式 ExitFor ExitDo ExitSub ExitFunction等 作用 退出某种控制结构的执行 3 End语句多种形式 End EndIf EndSelect EndWith EndType EndSub EndFunction 作用 End结束一个程序的运行 其余表示某个结构的结束 与对应的结构语句配对出现 4 With语句形式如下 With对象语句块EndWith作用 对某个对象执行一系列的操作 而不用重复指出对象的名称 WithLabel1 Height 2000 Width 2000 FontSize 22 Caption MyLabel EndWith Label1 Height 2000Label1 Width 2000Label1 FontSize 22Label1 Caption MyLabel 等价 常用算法 穷举法 穷举法 也称为 枚举法 或 试凑法 即将可能出现的各种情况一一测试 判断是否满足条件 一般采用循环来实现 例4 16 百元买百鸡问题 假定小鸡每只5角 公鸡每只2元 母鸡每只3元 现在有100元钱要求买100只鸡 编程列出所有可能的购鸡方案 分析 设母鸡 公鸡 小鸡各为x y z只 根据题目要求 列出方程为 x y y 1003x 2y 0 5z 100三个未知数 两个方程 此题有若干个解 解决此类问题采用 试凑法 把每一种情况都考虑到 方法一 最简单三个未知数利用三重循环来实现方法二 从三个未知数的关系 利用两重循环来实现 常用算法 递推法 递推法 又称为 迭代法 其基本思想是把一个复杂的计算过程转化为简单过程的多次重复 每次重复都从旧值的基础上递推出新值 并由新值代替旧值 例4 17 猴子吃桃子 小猴在某天摘桃若干个 当天吃掉一半多一个 第二天吃了剩下的桃子的一半多一个 以后每天都吃尚存桃子的一半多一个 到第7天要吃时只剩下一个 问小猴共摘下了多少个桃子 分析 这是一个 递推 问题 先从最后一天推出倒数第二天的桃子 再从倒数第二天的桃子推出倒数第三天的桃子 设第n天的桃子为xn 那么它是前一天的桃子数的xn 1的一半减1 即xn xn 1 2 1或者 xn 1 xn 1 2 PrivateSubForm Click Dimn i x 1 第7天的桃子Print 第7天的桃子数为 1只 Fori 6To1Step 1x x 1 2Print 第 i 天的桃子数为 x 只 NextI E
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年设备监理师之质量投资进度控制练习题(一)及答案
- 2025年互联网金融平台资金存管与风险防范策略研究与实践报告
- 2025年互联网金融平台资金存管业务安全防护体系构建与效能评估报告
- 2025年互联网金融平台资金存管技术安全与业务流程再造研究报告001
- 2025年互联网金融平台用户信任建立与金融科技创新趋势研究报告
- 【YouGov】2025年美国休闲餐饮报告
- 将军桥阅读题目及答案
- 建设工程实务题目及答案
- 河北科技大学《基础商务英语(二)》2023-2024学年第二学期期末试卷
- 新乡学院《西方政治制度史》2023-2024学年第二学期期末试卷
- 合肥市包河区2024年八年级《数学》下学期期末试题与参考答案
- 2025年甘肃省兰州市学府致远学校中考押题卷(二)英语试题(含答案)
- 2025-2030国内天然橡胶行业深度分析及竞争格局与发展前景预测研究报告
- T-CALC 007-2025 重症监护病房成人患者人文关怀规范
- 2025届湖北省咸宁市三校中考化学模拟试卷含解析
- 浙江省东阳市文旅投资集团有限公司招聘高频重点模拟试卷提升(共500题附带答案详解)
- 发展与教育心理学真题考试卷(有答案)
- DB43T-湖南省改性玻化微珠复合材料外墙修缮系统应用技术标准
- 2025届湖北省武汉市十一校中考生物对点突破模拟试卷含解析
- 城市轨道交通运营安全 课件 项目一 城市轨道交通运营安全基础
- 放射治疗摆位技术
评论
0/150
提交评论