上海交通大学:《程序设计》课程教学资源(PPT课件讲稿)第9章 模块化开发

《程序设计》 cs.stu20119 第9章模块化开发 令自顶向下的分解 冷模块划分 库的设计与实现 冷库的应用 程序设计-1
《程序设计》 cs.sjtu 2011.9 程序设计 - 1 第9章 模块化开发 ❖ 自顶向下的分解 ❖ 模块划分 ❖ 库的设计与实现 ❖ 库的应用

《程序设计》 cs.stu20119 猜硬币的游戏 功能: >提供游戏指南; >计算机随机产生正反面,让用户猜,报告 对错结果。 冷重复此过程,直到用户不想玩了为止。 程序设计-2
《程序设计》 cs.sjtu 2011.9 程序设计 - 2 猜硬币的游戏 ❖ 功能: ➢ 提供游戏指南; ➢ 计算机随机产生正反面,让用户猜,报告 对错结果。 ❖ 重复此过程,直到用户不想玩了为止

《程序设计》 cs.stu20119 顶层分解 程序要做两件事:显示程序指南;模拟 玩游戏的过程。 main 主程序的两个步骤是相互独 立的两个,没有什么联系, 显示游戏介绍; 因此可设计成两个函数 玩游戏 void prn instruction( void play( 程序设计
《程序设计》 cs.sjtu 2011.9 程序设计 - 3 顶层分解 ❖ 程序要做两件事:显示程序指南;模拟 玩游戏的过程。 main( ) { 显示游戏介绍; 玩游戏; } 主程序的两个步骤是相互独 立的两个,没有什么联系, 因此可设计成两个函数: void prn_instruction() void play()

《程序设计》 cs.stu20119 int maino prn instruction p⊥ay return 0 程序设计-4
《程序设计》 cs.sjtu 2011.9 程序设计 - 4 int main() { prn_instruction(); play(); return 0; }

《程序设计》 cs.stu20119 prn instruction的实现 冷 prn instruction函数的实现非常简单 只要一系列的输出语句把程序指南显示 下就可以了 void prn instruction cout<<"这是一个猜硬币正反面的游戏mn"; cout<"我会扔一个硬币,你来猜m"; cout<<"如果猜对了,你赢,否则我赢。Ⅷn"; 程序设计-5
《程序设计》 cs.sjtu 2011.9 程序设计 - 5 prn_instruction的实现 ❖ prn_instruction函数的实现非常简单, 只要一系列的输出语句把程序指南显示 一下就可以了 void prn_instruction() { cout << "这是一个猜硬币正反面的游戏.\n"; cout << "我会扔一个硬币,你来猜.\n"; cout << "如果猜对了,你赢,否则我赢。\n"; }

《程序设计》 cs.stu20119 play函数的实现 冷Play函数随机产生正反面,让用户猜 报告对错结果,然后询问是否要继续玩 void playo f char flag=y whle(g=“Y‖nag=y) {coin=生成正反面; 输入用户的猜测; if(用户猜测=coin)报告本次猜测结果正确; else报告本次猜测结果错误; 程序设计-6
《程序设计》 cs.sjtu 2011.9 程序设计 - 6 play函数的实现 ❖ Play函数随机产生正反面,让用户猜, 报告对错结果,然后询问是否要继续玩 void play() { char flag = ‘y’; while (flag == ‘Y’|| flag == ‘y’) { coin = 生成正反面; 输入用户的猜测; if (用户猜测== coin) 报告本次猜测结果正确; else 报告本次猜测结果错误; } }

《程序设计》 cs.stu20119 play函数的细化 冷生成正反面:如果用0表示正面,1表示反面 那么生成正反面就是随机生成0和两个数 令输入用户的猜测。如果不考虑程序的鲁棒性 这个问题也可以直接用一个输入语句即可。但 想让程序做得好一点,就必须考虑得全面一些 比如,用户可以不守规则,既不输入0也不输入 1,而是输入一个其他值,程序该怎么办?因此 这个任务还可以进一步细化,所以再把它抽象 成一个函数 iget call from user 程序设计-7
《程序设计》 cs.sjtu 2011.9 程序设计 - 7 play函数的细化 ❖ 生成正反面:如果用0表示正面,1表示反面, 那么生成正反面就是随机生成0和1两个数 ❖ 输入用户的猜测。如果不考虑程序的鲁棒性, 这个问题也可以直接用一个输入语句即可。但 想让程序做得好一点,就必须考虑得全面一些。 比如,用户可以不守规则,既不输入0也不输入 1,而是输入一个其他值,程序该怎么办?因此 这个任务还可以进一步细化,所以再把它抽象 成一个函数get_call_from_user

《程序设计》 cs.stu20119 void playo i int coin char flag="Y’; srand(time(NULL);∥设置随机数种子 while(flag ==Y flag==y,) coin= rando*2/ RAND MAX;/生成扔硬币的结果 if( get call from user=coin)cout flaga 程序设计8
《程序设计》 cs.sjtu 2011.9 程序设计 - 8 void play() { int coin ; char flag = 'Y'; srand(time(NULL)); //设置随机数种子 while (flag == 'Y' || flag =='y') { coin = rand() * 2 / RAND_MAX;//生成扔硬币的结果 if (get_call_from_user() == coin) cout > flag; } }

《程序设计》 cs.stu20119 get call from user的实现 冷该函数接收用户输入的一个整型数。如 果输入的数不是0或1,则重新输入,否 则返回输入的值 int get call from user fint guess: //0=head, 1= tail do{cout guess 3 while(guess =0 & guess! =1); return guess; -9
《程序设计》 cs.sjtu 2011.9 程序设计 - 9 get_call_from_user的实现 ❖ 该函数接收用户输入的一个整型数。如 果输入的数不是0或1,则重新输入,否 则返回输入的值 int get_call_from_user() {int guess; // 0 = head, 1 = tail do { cout > guess; } while (guess !=0 && guess !=1) ; return guess; }

运行实例 《程序设计》 cs.stu20119 这是一个猜硬币正反面的游戏 我会扔一个硬币,你来猜 如果猜对了,你赢,否则我赢。 输入你的选择(0表示正面,1表示反面):1 我赢了 继续玩吗(Y或y)?y 输入你的选择(0表示正面,1表示反面):6 输入你的选择(0表示正面,1表示反面):1 你赢了 继续玩吗(Y或y)?n Press any key to continue 程序设计-10
《程序设计》 cs.sjtu 2011.9 程序设计 - 10 这是一个猜硬币正反面的游戏. 我会扔一个硬币,你来猜. 如果猜对了,你赢,否则我赢。 输入你的选择(0表示正面,1表示反面):1 我赢了 继续玩吗(Y或y)?y 输入你的选择(0表示正面,1表示反面):6 输入你的选择(0表示正面,1表示反面):1 你赢了 继续玩吗(Y或y)?n Press any key to continue 运行实例
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 利用EXCEL进行数据分析与图表处理(PPT讲稿).pptx
- 北京师范大学:《多媒体技术基础》课程教学资源(PPT课件讲稿)第二章 数字图像(曾兰芳).ppt
- 上海交通大学:《通信网络》课程PPT教学课件(Communication Networks)Introduction(主讲:叶通).pptx
- 上海交通大学:《程序设计》课程教学资源(PPT课件讲稿)第4章 循环控制.ppt
- 《单片机原理及应用》课程教学资源(PPT课件讲稿)第6章 AT89S52单片机的串行口.ppt
- 中国科学技术大学:《并行计算 Parallel Computing》课程教学资源(PPT课件讲稿)并行编译简介.ppt
- 南京大学:《面向对象技术 OOT》课程教学资源(PPT课件讲稿)抽象数据类型 Abstract Data Types.ppt
- 《数据结构》课程教学资源:课程教学资源(PPT课件讲稿)第九章 查找表.ppt
- 东南大学:《数据结构》课程教学资源(PPT课件讲稿)动态规划.pptx
- 上海交通大学:Mining Massive Datasets(PPT讲稿).ppt
- 电子工业出版社:《计算机网络》课程教学资源(第五版,PPT课件讲稿)第一章 概述(谢希仁).ppt
- 北京航空航天大学:《数据挖掘——概念和技术(Data Mining - Concepts and Techniques)》课程教学资源(PPT课件讲稿)Chapter 03 Data Preprocessing.ppt
- 《数字图象处理》课程教学资源(PPT课件讲稿)第七章 邻域运算.ppt
- 上海交通大学:《编译器构造》课程教学资源(PPT讲稿,马融)Compiler.pptx
- 《软件工程 Software Engineering》教学资源:课程教学大纲.pdf
- 沈阳理工大学:《单片机C语言应用程序设计》课程PPT教学课件(单片机C语言编程)04 C51编程设计(廉哲).pptx
- 中国科学技术大学:《信号与图像处理基础 Signal and Image Processing》课程教学资源(PPT课件讲稿)傅里叶分析与卷积 Fourier Analysis and Convolution.pptx
- 北京科技大学:物联网知识体系和学科建设(PPT讲稿,王志良).ppt
- 香港理工大学:Discovering Classification Rules.ppt
- 《软件质量与测试》课程教学资源(PPT大纲课件,目录版).pptx
- 《计算科学基础研究》课程教学资源(PPT课件讲稿)类的定义.ppt
- 南京大学:《编译原理》课程教学资源(PPT课件讲稿)第九章 机器无关的优化(赵建华).ppt
- 《电子商务概论》课程教学资源(PPT课件讲稿)第一章 电子商务基础知识(主讲:贾朝辉).pptx
- 《操作系统》课程教学资源(PPT课件讲稿)内存管理 Memory Management.ppt
- 沈阳理工大学:《大学计算机基础》课程教学资源(PPT课件讲稿)第3章 编辑排版软件(Microsoft Word 2000).pps
- 《C语言程序设计》课程电子教案(PPT课件讲稿)第4章 算法控制结构.ppt
- 《数据结构》课程教学资源(PPT课件讲稿)第二章 线性表.ppt
- 上海交通大学:《数字图像处理 Digital Image Processing》课程教学资源(PPT课件讲稿,第三版)Chapter 12 Object Recognition.pptx
- 《The C++ Programming Language》课程教学资源(PPT课件讲稿)Lecture 01 From C to C++.ppt
- 《数据库系统概论 An Introduction to Database System》课程教学资源(PPT课件讲稿)第一讲 绪论.ppt
- 《计算机网络安全技术》课程教学资源(PPT课件讲稿)第五章 防火墙技术.ppt
- 《软件测试 Software Testing》教学资源(PPT讲稿)Part 2 Testing Fundamentals.ppt
- 《C语言程序设计》课程电子教案(PPT课件讲稿)第2章 数据类型及基本运算量.ppt
- Flexsim 初级培训讲义(PPT讲稿)Flexsim Basic Training.ppt
- 清华大家:字符串匹配算法(PPT讲稿)String Matching Algorithm(Overview & Analysis).ppt
- 四川大学:《Linux操作系统》课程教学资源(PPT课件讲稿)第3章 Shell及其编程(主计:潘薇).ppt
- 面向对象程序设计语言(PPT课件讲稿).ppt
- 《面向对象程序设计》课程教学资源(课件讲稿)C++语言的面向对象特征、Java语言的面向对象特征、Python语言的面向对象特征、R语言的面向对象特征.ppt
- 安徽理工大学:《Linux开发基础 Development Foundation on Linux OS》课程教学资源(PPT课件讲稿)GNU C/C++ programming、CGI programming in GNU C/C++ language(方贤进).ppt
- 《Photoshop基础教程与上机指导》课程教学资源(PPT讲稿)第8章 简单编辑图像.ppt