已阅读5页,还剩15页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第一章 程序设计与C+语言 1 1 面向过程的程序设计 结构化程序设计基本思想 自顶向下 逐步求精 模块化设计 结构化编码 2 2 结构化程序设计举例 问题:验证哥德巴赫猜想任意一个大于2的偶 数都可以分解成两个素数之和。 自顶向下、逐步求精 1. 首先将问题分解成判断每个大于2的偶数n能否分解成 两个素数之和 2. 对上述问题进一步求精,问题的求解方法变成为选一 个小于n的素数x,判断n-x是否为素数 3. 问题简化为怎样判断一个数是素数 4. 问题进一步简化为怎样判断一个数是否为另一个数所 整除 5. 到此,问题的求解过程已经完全清楚 模块化设计、结构化编码 步骤1和步骤2可以用一个函数模块proveGoldbach实现, 模块中采用双重循环结构,外层循环n从4开始,每次加2 。内层循环x从2开始,每次加1直到n/2。函数模块的功 能是判断x和n-x是否都是素数。 步骤3用函数模块isPrime实现,模块内用循环结构 步骤4用函数模块isDividable实现,模块内用选择结构 主函数模块main直接调用proveGoldbach模块, proveGoldbach模块调用isPrime模块,isPrime模块调用 isDividable模块 main proveGoldbach isPrime isDividable 3 3 内聚与耦合 衡量结构化程序设计的好坏有两个指标: 1.内聚度:指同一个模块中各个步骤之间的关联程度 2.耦合度:表示被调用函数与调用函数之间的接口复杂程度 质量高的程序应该内聚度要高,耦合度要低 #include /筛法求素数 #define MAX_NUM 1000 void main() unsigned char sieveMAX_NUM+1; long i, j, k=0; for (i=2; i #define MAX_NUM 1000 void findPrimeAndPrint() unsigned char sieveMAX_NUM+1; long i, j, k=0; for (i=2; i #define MAX_NUM 1000 unsigned char sieveMAX_NUM+1; void findPrime() long i, j; for (i=2; i using namespace std; class CSieve private: char *p_sieve; unsigned long num; public: CSieve(unsigned long n); void findPrime(); void printPrime(); CSieve() delete p_sieve; ; void CSieve:findPrime() long i, j; for (i=2; i = num; i+) p_sievei = 1; for (i=2; i = num; i+) if (p_sievei = 1) for (j=i*i; j = num; j += i) p_sievej = 0; void CSieve:CSieve(unsigned long n) p_sieve = new charn+1; num = n; void CSieve:printPrime() long i, k=0; for (i=2; i = MAX_NUM; i+) if (sievei = 1) k+; cout i “, “; if (k % 15 = 0) cout endl; k = 0; cout endl; void main() CSieve number(1000); number.findPrime(); number.printPrime(); 9 9 抽象性信息隐藏与数据封装构成了面向对象程序 设计的基础。 信息隐藏处理某个数据的所有相关函数都集中在一起 。 数据封装数据在类这个封装体的外部不可能被访问。 继承性提供类复合的实现机制,有助于实现代码 的重用。继承性是面向对象程序设计的关键。 多态性提供类对象接口与其具体实现相分离的手 段多态性是面向对象程序设计的补充。 函数重载用不同的接口访问同名的函数。 运算符重载扩充运算符的功能。 接口重用用同样的接口访问功能不同的函数。 面向对象程序设计基本思想 1010 每个部门有自己的 数据和处理数据的 方法 人事档案 财务报表 销售数据 每个部门的数据不 对外公开 部分之间通过发送 消息获取对方的数 据 抽象性举例 1111 继承性体现在产品的更新 换代 多态性体现在不同类型的 手机采用不同的界面来实 现同一个功能 继承性和多态性举例 1212 随堂练习 1. 数据与处理数据的函数被封装在一起,体现了面向对象程序 设计的。 A. 抽象性 B. 继承性 C. 多态性 D.数据相关性 2. 新产品在老产品的基础上的功能升级是特性的具 体应用。 A. 数据封装 B. 信息隐藏 C. 继承与派生 D.函数重载 3. 面向对象程序设计与结构化程序设计的最根本不同之处在 于。 A. 运用了自顶向下,化抽象为具体的方法 B. 程序的编码强调模块化原则 C. 从描述问题所涉及的物体的属性和行为着手 D. 从问题的解决过程着手 1313 C语言的特点 优点: C语言简洁、紧凑,使用方便、灵活 具有丰富的运算符和数据类型 支持结构化的块结构和流控制 提供了直接访问内存地址的机制,能进行位操作 可移植性好 缺点: C语言数据类型检查机制相对较弱 数组下标越界问题 初始化问题 语言简洁紧凑,但同时某些特定符号可因为上下文不同分别代表不 同的含义,容易混淆 C语言没有支持代码重用的语言结构 程序员很难控制用C语言编写的程序的规模和复杂性 C语言不支持面向对象的程序设计方法 1414 C+语言的特点 优点: 增加了类这一复合数据类型。 数据被限定在类的范围内,使其在类的外部为不可见(不能访问)。 类将关系密切的一组函数与其共同处理的数据聚集在一起,能够显示某 个函数与其他函数之间的逻辑关系和紧密程度。 C+程序由对象组成。采用C+语言进行程序设计便于描述现实世界 各种对象的客观规律,与人类习惯的思维方法相一致。 C+提供了类复合和类派生的实现机制,使得程序员可以实现现实世 界中复杂的对象(由简单对象组合而成),以及便于软件的重复利用。 C+通过构造函数和析构函数隐含地对对象进行初始化和释放对象占 用的系统资源 C+支持函数的重载,运算符重载。C+提供虚函数来实现接口重用 。 C+采用模板,使程序设计标准化、通用化 缺点: C+语言比较复杂 C+语言必须与面向对象程序设计方法相结合,才能体现C+语言提 供的面向对象的特征和功能。 1515 一种编程风格 一行代码只写一条语句。 尽可能在定义变量的同时对其初始化(就近原则)。 程序的分界符和应独占一行并且位于同一列,同时与引用它们的语句左 对齐。 通过在程序的每一行开头键入不同次数的TAB键进行缩进,以体现程序的 层次结构。 标识符的命名尽量做到见其名知其义,且不同类型和不同属性的标识符遵 循下述不同的命名法则: 局部变量名用小写,变量名单词之间用下划线连接 如果局部变量为指针变量,则变量名以小写p开头 如果局部变量为引用变量,则变量名以小写r开头 全局变量名各单词的第一个字母用大写,变量名单词之间用下划线连接 如果全局变量为指针变量,则变量名以大写P开头 常量标识符全部大写 函数名第一个单词小写,之后各单词的第一个字母大写,单词之间不用下划线连接 结构名以大写S开头,之后各单词的第一个字母大写,单词之间不用下划线连接 联合名以大写U开头,之后各单词的第一个字母大写,单词之间不用下划线连接 枚举名以大写E开头,之后各单词的第一个字母大写,单词之间不用下划线连接 类名以大写C开头,之后各单词的第一个字母大写,单词之间不用下划线连接 1616 结构化程序设计的C+程序框架 预处理程序命令 预处理程序命令以“#”开头,供编译程序的预处理器处理 预处理程序命令有三类: 宏定义命令 #define 文件包含命令#include 条件编译命令#ifdef#endif 全局变量的定义和说明 在函数外部定义的变量 变量的定义指出变量的数据类型和存储类型,并为该变量分配相应的 存储空间 变量的说明是为了建立变量名与变量类型之间的对应关系,变量在说 明时并不分配内存 变量的定义是唯一的,而变量的说明可以重复出现多次 用户自定义函数 用户自己编写的实现特定应用程序功能的函数 主函数main 程序的入口,是程序最抽象最高层的功能的具体实现 一个程序有且仅有一个主函数 1717 面向对象程序设计的C+程序框架 类的说明(.h文件) 类的实现(.cpp文件) 预处理程序命令 全局变量的定义和说明 类成员函数的定义 用户自定义函数 主函数main 1818 采用面向对象方法的微软 MFC程序框架 应用程序类 主窗口框架类 文档类 视图类 全局应用程序对象 1919 随堂练习 1. C+与C语言最根本的不
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 景观填土施工方案
- 婚纱配套营销方案
- 无人值守施工方案
- 平面图形导学案华东师大版数学七年级上册
- 高考英语读后续写专项复习考试失利后的家庭时光续写导学案
- 2025年超星尔雅学习通《网络安全事件应急处理流程》考试备考题库及答案解析
- 2025年超星尔雅学习通《数字化时代的金融科技》考试备考题库及答案解析
- 2025年用户体验经理招聘面试参考题库及答案
- 未来五年消费电子防护性产品企业制定与实施新质生产力战略分析研究报告
- 未来五年牙膏、漱口液行业市场营销创新战略制定与实施分析研究报告
- 五花肉课件教学课件
- 2025中数联物流科技(上海)有限公司招聘考试参考试题及答案解析
- 小学感恩教育主题班会 课件
- 新媒体营销推广案例分析
- 道路客运驾驶员从业资格年度考核报告
- 制药设备改造协议书
- 2025年大学《历史学》专业题库- 中国古代史的专题研究
- 隧道下穿燃气管道爆破施工技术方案
- DG-TJ08-401-2025 公共厕所规划和设计标准
- 个人信息保护规则及制度
- 大学生护理生涯规划书
评论
0/150
提交评论