第六章模块化程序设计的方法
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
程序功能需求
在屏幕中依次显示五道算术题,儿童 输入答案后,自动评判是否正确。五 道题完成之后,显示总分。
程序结构图
儿童算术能力测试软件
初始 化题
显示 题目
输入 答案
评判 结果
第11页,共15页。
程序流程图
初始化算术题 显示题目 输入答案 评判结果
还有题? true false
显示总分 结束
【拓展案例】儿童算术能力测试软件
程序流程图
初始化算术题 显示题目 输入答案 评判结果
还有题? true false
显示总分 结束
主程序(Main函数)
string question , rightAnswer;
int score = 0; for (int num=1; num<=5; num++) {
//初始化题目
GetQuestion(num,out question,out rightAnswer); //显示题目 DispalyQuestion(question); //输入答案 string childAnswer = GetAnswer(); //评判结果 score += ShowResult(childAnswer, rightAnswer); }
如何进行模块化程序设计
②划分模块(函数)的两个原则
• 功能单一
一个函数只完成一个功能(体现设计的 内聚性,即问题函数内部解决,对外只 有接口)
• 规模适中
过大过小均影响模块的粒度(太大函 数太复杂,太小接口太多系统结构太 复杂)
第5页,共15页。
引入问题
• 划分好模块之后,如何设计出完整的程序?
• 函数的定义和使用方法?
static <返回值类型> <函数名>(类型 变量名[, 类型 变量名....]) {
<函数体>;
}
第3页,共15页。
模块化程序设计
①什么是模块化程序设计
• 把程序划分为若干模块,然后将模块组装为程序。
• 模块结构可以用结构图来表示。
员工信息管理系统
录
查
入
询
修
删
改
除
第4页,共15页。
Console.WriteLine("您的总分为:{0}", score);
第12页,共15页。
小结
(1)模块化程序设计的方法: • 自顶向下 • 逐步细化。 (2)模块化程序设计的好处
•程序结构清晰,易理解、易调试、易修改。
•方便实现团队按模块分工,合作开发。
(3)模块化程序设计带来的问题和挑战
//评判结果 ShowResult(childAnswer,rightAnswer);
第9页,共15页。
2、模块化ቤተ መጻሕፍቲ ባይዱ序的修改
方法依然是:自顶向下、逐步细化。
步骤:
(1)修改主程序,简单实现新增的函数 (2)调试完成程序总体框架 (3)逐步细化,详细设计和调试好各个函数 。
第10页,共15页。
【拓展案例】儿童算术能力测试软件
• 制造房子的过程?
设计图纸
框架
毛坯房
房子装修
• 模块化程序设计的过程?
算法分析
主程序
简单实现模 块功能
详细实现模 块功能
第6页,共15页。
1、模块化程序设计的方法
方法:自顶向下、逐步细化。
步骤:
(1)设计主程序,简单实现各个函数 (2)调试完成程序总体框架
(3)逐步细化,详细设计和调试好各个函数 。
显示题目 输入答案
false
正确?
true
答对了 答错了
结束
主程序(Main函数)
//初始化算术题 string question = "2+3=?"; string rightAnswer = "5";
//显示题目 DispalyQuestion(question);
//输入答案 string childAnswer=GetAnswer();
•接口(模块的输入和输出)复杂性(应注意模块注释)
•多人合作的沟通和协作问题
第13页,共15页。
模块化划分常见的问题
• 不可将一个功能放在多个模块中实现,也就 是不要划分太细(例子1)
• 不可将多个功能放在一个模块中实现,也就 是不要划分太粗(例子2)
• 不同功能尽可能模块化(尤其主程序),不可 图方便直接写代码混杂在一起,这样条例不 清不方便修改(例子3)
第六章模块化程序设计的方法
第1页,共15页。
主要内容:
• 设计、修改模块化程序的方法
重点:
• 掌握模块化程序设计的步骤
难点:
• 掌握“自顶向下、逐步细化”的开发方法
教学方法:
• 项目教学法:项目->拓展项目.
第2页,共15页。
知识回顾
• 为什么引入函数?
• 解决程序规模太大问题。
• 通过函数来支持模块化的程序设计方法。
延展学习:
第15页,共15页。
第14页,共15页。
作业
• 对这个儿童算术能力测试软件继续进行修改: (1)必做题:
• 实现每道题目的得分数各不相同。
• 实现每道题目不是固定题目,是自动产生100以内的随机数 的随机加、减、乘、除法。
(2)选做题:
• 将测试题保存在文件中,测试时从文件中读取题目和答案。
思考:
• 这些修改是否只需要修改函数,而不需要修改主程序?这 对多人合作进行开发有何意义?
第7页,共15页。
【例】儿童算术能力测试软件
程序功能需求
在屏幕中显示一道算术题,儿童输入 答案后,自动评判是否正确。
程序结构图
儿童算术能力测试软件
显示 题目
输入 答案
评判 结果
程序流程图
显示题目 输入答案
false
正确?
true
答对了 答错了
结束
第8页,共15页。
【例】儿童算术能力测试软件
程序流程图