- 1、本文档共67页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第9章模块化设计
第9章 模块化开发;自顶向下的分解
模块划分
库的设计与实现
库的应用;;例子:猜硬币的游戏 ;顶层分解 ;int main()
{
prn_instruction();
play();
return 0;
};prn_instruction的实现 ;play函数的实现 ;play函数的细化;void play()
{ int coin ;
char flag = Y;
srand(time(NULL)); //设置随机数种子
while (flag == Y || flag ==y)
{ coin = rand() * 2 / (RAND_MAX+1);
//生成扔硬币的结果
if (get_call_from_user() == coin)
cout 你赢了;
else cout 我赢了;
cout \n继续玩吗(Y或y)?;
cin flag; }
};get_call_from_user的实现 ;;自顶向下的分解
模块划分
库的设计与实现
库的应用;下面的三个文件同属于一个工程文件,指出下面程序的执行结果;模块划分 ;石头、剪刀、布游戏 ;第一层的分解 ;第一层的分解 ??伪代码表示;函数抽取;模块划分 ;枚举类型的定义 ;Select模块的设计;Compare模块的设计;print模块的设计;print模块的进一步考虑;;模块划分 ;怎样解决多模块的函数声明和预处理命令;头文件的设计;头文件的格式;石头、剪子、布游戏的头文件 ;主模块的实现;while((player_choice = selection_by_player()) != quit)
switch(player_choice) {
case paper: case rock: case scissor:
machine_choice = selection_by_machine();
result = compare(player_choice, machine_choice);
report(result); break;
case game:
prn_game_status(); break;
case help:
prn_help(); break;
default: cout PROGRAMMER ERROR!\n\n; exit(1);
}
prn_game_status();
return 0;
};select模块的实现 ;p_r_s selection_by_player()
{ char c;
p_r_s player_choice;
prn_help(); //显示输入提示
cout please select: ; cin c;
switch(c) {
case p: player_choice = paper; cout you are paper. ; break;
case r: player_choice = rock; cout you are rock. ; break;
case s: player_choice = scissor; cout you are scissor. ;break;
case g: player_choice = game; break;
case q: player_choice = quit; break;
default : player_choice = help; break;
}
return player_choice;
};Compare模块的实现 ;Print模块的实现 ;void report(outcome result)
{switch(result) {
case win: ++win_cnt;
cout You win. \n; break;
case lose: ++lose_cnt;
cout You lose.
文档评论(0)