《第六章模块化程序设计的方法课件.ppt》由会员分享,可在线阅读,更多相关《第六章模块化程序设计的方法课件.ppt(14页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、重点:掌握模块化程序设计的步骤难点:掌握“自顶向下、逐步细化”的开发方法教学方法:项目教学法:项目-拓展项目.主要内容:设计、修改模块化程序的方法知识回顾 为什么引入函数?解决程序规模太大问题。通过函数来支持模块化的程序设计方法。函数的定义和使用方法?static(类型 变量名,类型 变量名.);模块化程序设计 把程序划分为若干模块,然后将模块组装为程序。模块结构可以用结构图来表示。什么是模块化程序设计员工信息管理系统录入查询修改删除如何进行模块化程序设计 功能单一 规模适中划分模块(函数)的两个原则一个函数只完成一个功能(体现设计的内聚性,即问题函数内部解决,对外只有接口)过大过小均影响模块
2、的粒度(太大函数太复杂,太小接口太多系统结构太复杂)引入问题 划分好模块之后,如何设计出完整的程序?制造房子的过程?设计图纸 框架 毛坯房 房子装修 模块化程序设计的过程?算法分析 主程序简单实现模块功能详细实现模块功能(1)设计主程序,简单实现各个函数(2)调试完成程序总体框架(3)逐步细化,详细设计和调试好各个函数。1、模块化程序设计的方法方法:自顶向下、逐步细化。步骤:【例】儿童算术能力测试软件儿童算术能力测试软件显示题目输入答案评判结果程序流程图程序结构图程序功能需求在屏幕中显示一道算术题,儿童输入答案后,自动评判是否正确。显示题目输入答案正确?答对了truefalse答错了结束【例】
3、儿童算术能力测试软件/初始化算术题string question=2+3=?;string rightAnswer=5;/显示题目DispalyQuestion(question);/输入答案string childAnswer=GetAnswer();/评判结果ShowResult(childAnswer,rightAnswer);主程序(Main 函数)程序流程图显示题目输入答案正确?答对了truefalse答错了结束(1)修改主程序,简单实现新增的函数(2)调试完成程序总体框架(3)逐步细化,详细设计和调试好各个函数。2、模块化程序的修改方法依然是:自顶向下、逐步细化。步骤:【拓展案例】
4、儿童算术能力测试软件程序流程图程序结构图程序功能需求在屏幕中依次显示五道算术题,儿童输入答案后,自动评判是否正确。五道题完成之后,显示总分。显示题目输入答案还有题?显示总分truefalse结束初始化算术题评判结果儿童算术能力测试软件初始化题显示题目输入答案评判结果【拓展案例】儿童算术能力测试软件string question,rightAnswer;int score=0;for(int num=1;num=5;num+)/初始化题目 GetQuestion(num,out question,out rightAnswer);/显示题目 DispalyQuestion(question);/
5、输入答案 string childAnswer=GetAnswer();/评判结果 score+=ShowResult(childAnswer,rightAnswer);Console.WriteLine(您的总分为:0,score);主程序(Main 函数)程序流程图显示题目输入答案还有题?显示总分truefalse结束初始化算术题评判结果小结(1)模块化程序设计的方法:自顶向下 逐步细化。(2)模块化程序设计的好处程序结构清晰,易理解、易调试、易修改。方便实现团队按模块分工,合作开发。(3)模块化程序设计带来的问题和挑战 接口(模块的输入和输出)复杂性(应注意模块注释)多人合作的沟通和协作问题模块化划分常见的问题 不可将一个功能放在多个模块中实现,也就是不要划分太细(例子1)不可将多个功能放在一个模块中实现,也就是不要划分太粗(例子2)不同功能尽可能模块化(尤其主程序),不可图方便直接写代码混杂在一起,这样条例不清不方便修改(例子3)作业 对这个儿童算术能力测试软件继续进行修改:(1)必做题:实现每道题目的得分数各不相同。实现每道题目不是固定题目,是自动产生100 以内的随机数的随机加、减、乘、除法。(2)选做题:将测试题保存在文件中,测试时从文件中读取题目和答案。思考:这些修改是否只需要修改函数,而不需要修改主程序?这对多人合作进行开发有何意义?延展学习:
限制150内