第5章 函数与模块化编程.ppt

上传人:暗伤 文档编号:89742088 上传时间:2023-05-11 格式:PPT 页数:96 大小:6.65MB
返回 下载 相关 举报
第5章 函数与模块化编程.ppt_第1页
第1页 / 共96页
第5章 函数与模块化编程.ppt_第2页
第2页 / 共96页
点击查看更多>>
资源描述

《第5章 函数与模块化编程.ppt》由会员分享,可在线阅读,更多相关《第5章 函数与模块化编程.ppt(96页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、第5章程序设计方法学基础结构化与模块化哈尔滨工业大学5.1结构化程序设计像搭积木一样写代码n 5.1.1自底向上的程序设计方法n 5.1.2 自顶向下、逐步求精的结构化程序设计方法5.1.1自底向上的程序设计方法n 自底向上(Down-top)的程序设计方法 先编写出基础程序段 然后再逐步扩大规模、补充和升级某些功能 实际上是一种自底向上构造程序的过程CB CC A B功能增加、规模增大功能简单、规模较小5.1.1自底向上的程序设计方法n【例5.1】任务1:只猜一次。设计一个只能猜一次的猜数游戏:先由计算机“想”一个数,然后请用户猜,如果用户猜对了,则计算机给出提示“正确!”,否则提示“错误!

2、”,并告诉用户所猜的数是大还是小。5.1.1自底向上的程序设计方法n【例5.1】任务1:只猜一次。#include#include/包含函数rand()所需的头文件#include/包含函数time()所需的头文件int main(void)int magic;/计算机“想”的数int guess;/用户猜的数 srand(time(NULL);/为函数rand()设置随机数种子magic=rand()%100+1;/计算机“想”一个随机数printf(Guess a number:);scanf(%d,&guess);/输入用户猜的数if(guess magic)printf(Wrong!T

3、oo big!n);else if(guess magic)printf(Wrong!Too small!n);else printf(Right!n);return 0;5.1.1自底向上的程序设计方法n【例5.2】任务2:直到猜对为止。在例5.1的猜数游戏基础上,将游戏改为:直到猜对为止,同时记录用户猜的次数,以此来反映用户“猜”数的水平。5.1.1自底向上的程序设计方法n【例5.2】任务2:直到猜对为止。#include#include/包含函数rand()所需的头文件#include/包含函数time()所需的头文件int main(void)int magic;/计算机“想”的数 i

4、nt guess;/用户猜的数 srand(time(NULL);/为函数rand()设置随机数种子 magic=rand()%100+1;int counter=0;/记录用户猜数次数的计数器 do printf(Try%d:,counter+1);scanf(%d,&guess);/输入用户猜的数 counter+;/计数器变量加1 if(guess magic)printf(Wrong!Too big!n);else if(guess magic)printf(Wrong!Too small!n);else printf(Right!n);while(guess!=magic);/执行循

5、环直到猜对为止 printf(counter=%dn,counter);/输出用户猜数的次数 return 0;5.1.1自底向上的程序设计方法n【例5.3】任务3:最多猜10次。在例5.2的猜数游戏基础上,将游戏改为:每次猜数只允许用户最多猜10次,即用户猜对了或者猜了10次仍未猜对,都结束游戏。5.1.1自底向上的程序设计方法n【例5.3】任务3:最多猜10次。int main(void)int magic;/计算机“想”的数 int guess;/用户猜的数 int counter=0;/记录用户猜数次数的计数器变量初始化为0 srand(time(NULL);/为函数rand()设置随

6、机数种子 magic=rand()%100+1;/让计算机“想”一个1 100 间的随机数 do printf(Try%d:,counter+1);scanf(%d,&guess);/输入用户猜的数 counter+;/计数器变量加1 if(guess magic)printf(Wrong!Too big!n);else if(guess magic)printf(Wrong!Too small!n);else printf(Right!n);while(guess!=magic&counter 10);/10 次猜不对就结束循环 printf(The magic number is%dn,m

7、agic);printf(counter=%dn,counter);/输出用户猜数的次数 return 0;5.1.1自底向上的程序设计方法n【例5.4】任务4:猜多个数。在例5.3的猜数游戏基础上,将游戏改为:每次运行程序允许猜多个数,每个数最多可猜10次,若10次仍未猜对,则停止本次猜数,询问用户是否继续猜下一个数,若用户回答y或Y,则计算机重新随机生成一个数让用户猜;否则程序结束。5.1.1自底向上的程序设计方法n【例5.4】任务4:猜多个数。int main(void)int magic;/计算机“想”的数 int guess;/用户猜的数 int counter=0;/记录用户猜数次

8、数的计数器变量初始化为0 char reply;/保存用户输入的回答 srand(time(NULL);/为函数rand()设置随机数种子 do counter=0;/猜下一个数之前,将计数器清0 magic=rand()%100+1;/让计算机“想”一个1 100 间的随机数 do printf(Try%d:,counter+1);scanf(%d,&guess);counter+;if(guess magic)printf(Wrong!Too big!n);else if(guess magic)printf(Wrong!Too small!n);else printf(Right!n);

9、while(guess!=magic&counter10);/猜不对且未超10 次继续猜 printf(The magic number is%dn,magic);printf(counter=%dn,counter);printf(Do you want to continue(Y/N or y/n)?);/询问是否继续 scanf(%c,&reply);/%c 前有一个空格 while(reply=Y|reply=y);/输入Y 或y 则程序继续 return 0;5.1.2自顶向下、逐步求精的程序设计方法CB CC A B自底向上(Down-top)ABCC A BA1 A2 B1 B2

10、 C1 C2自顶向下(Top-down)先写出结构简单、清晰的主程序来表达整个问题 在此问题中包含的复杂子问题用子程序或函数来实现 若子问题中还包含复杂的子问题,再用子程序或函数实现 直到每个细节都可用高级语言表达为止上:比较抽象的层面下:更具体的层面接近程序设计语言规模增大问题简单规模较小构造分解5.1.2自顶向下、逐步求精的程序设计方法n 逐步求精(Stepwise Refinement)对问题的全局做出决策,设计出对问题本身较为自然的、很可能是用自然语言表达的抽象算法 由一些抽象数据及其上的操作(即抽象语句)组成,仅仅表示解决问题的一般策略和问题解的一般结构 对抽象算法进一步求精,就进入

11、下一层抽象 每求精一步,抽象语句和抽象数据都将进一步分解和精细化 如此继续下去,直到最后的算法能为计算机所“理解”为止 易于用某种高级语言表达5.1.2自顶向下、逐步求精的程序设计方法n 简而言之 先全局后局部、先整体后细节、先抽象后具体的自顶向下方法n 实际程序开发过程不是纯粹的自顶向下和自底向上 自顶向下的分解和自底向上的构造两个过程混合交织进行 由不断的自底向上修正所补充的自顶向下的程序设计方法n 优点 得到的程序是有良好结构的程序 可简化程序的正确性验证 结合逐步求精过程,采取边设计边逐级验证的方法 与写完整个程序后再验证相比,可大大减少程序调试的时间n【例5.5】按照“自顶向下、逐步

12、求精”的方法重新设计猜数游戏,游戏的要求为:n 先由计算机“想”一个数,然后请用户猜,如果用户猜对了,则计算机给出提示“正确!”,否则提示“错误!”,并告诉用户所猜的数是大还是小,直到猜对为止,同时记录用户猜的次数,以此来反映用户“猜”数的水平。n 每次猜数最多允许用户猜10次,10次仍未猜对,就结束本次猜数,询问用户是否继续猜下一个数,若用户回答y或Y,则重新随机生成一个数让用户猜,否则程序结束。5.1.2自顶向下、逐步求精的程序设计方法n 抽象算法 step1:计算机随机生成一个数magic step2:用户猜数 step3:判断用户是否继续猜下一个数 step4:若是,则返回step1 否则算法结束5.1.2自顶向下、逐步求精的程序设计方法

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 技术方案

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁