C++学习教程及习题 第三章
更新时间:2023-11-10 22:40:01 阅读量: 教育文库 文档下载
- office学习教程推荐度:
- 相关推荐
教学目标
●了解如何由函数模块化地构造程序 ●能够生成新函数
●了解函数之间传递信息的机制 ●介绍使用随机数产生器的模拟技术 ●了解标识符如何限于特定程序区域 ●如何编写和使用调用自己的函数 3.1 简介
解决实际问题的大多数程序都比前几章介绍的程序要大得多。经验表明,要开发和维护大程序,最好的办法是从更容易管理的小块和小组件开始。这种方法称为“分而治之,各个击破”(divideand conquer)。本章介绍C++语言中的许多关键特性,可以帮助设计、实现、操作和维护大程序。 3.2 C++程序组件
C++中的模块称为函数(function)和类(class)。C++程序一般是将程序员编写的新函数与C++标准库(standard library)中提供的预装函数组合而成的,通常是将程序员编写的新类与各种类库中提供的预装类组合而成的。本章主要介绍函数,第6章开始将详细介绍类。
C++标准库提供了丰富的函数集合,可以进行常用数学计算、字符串操作、字符操作、输人/输出、错误检查和许多其他有用的操作。这就使程序员的工作更加轻松,因为这些函数提供了程序员需要的许多功能。C++标准库函数是在C++编程环境中提供的。
编程技巧3.1
要熟悉C++标准库提供的类和函数集合。 软件工程视点3.1
不要事事从头做起。要尽可能利用C++标准库提供的函数而不是生成新函数,从而减少程序开发时间。 可移植性提示3.1
利用C++标准库提供的函教能使程序可移植性更强。 性能提示3.1
不要改写现有库程序以使其更有效,这些过程的性能通常已经是最优的。 程序员可以通过编写函数定义程序中多处使用的特定任务,这些通常称为程序员定义的函数(prograrmmer-defined function)。定义函数的语句通常只写一次,这些语句是其他函数无法访问的。
通过函数调用(function call)来调用(invoke,即让其完成指定任务)函数。函数调用指定函数名和提供被调用函数完成工作所需的信息<作为参数L可以把这种形式与管理的层次形式相比,老板(调用函数或调用者)要求工人(被调用函数)完成任务并在任务完成之后返回(即报告)结果。老板函数并不知道工人函数如何完成工作。工人又可能调用其他工人函数,这是老板所不知道的。稍后会介绍这种隐蔽实现细节如何促进良好的软件工程。田3.1显示了main函数以层次方式和几个工人函数通信。注意workerl是worker4和worker5的老板函数。函数之间的关系也可能与图中所示的层次结构有所不同。
---------------------- 3.3 数学函数库
数学函数库使程序员可以进行某些常见数学计算。我们这里用各种数学库函数介绍函数概念。本书稍后会介绍c++标准库中的许多其他函数。
调用函数时,通常写上函数名,然后是一对括号,括号中写上函数参数(或逗号分隔的参数表)。例如程序员可以用下列语句计算和打印900.0的平方根: cout << sqrt(900.O);
执行这个语句时,数学库函数sqrt计算括号中所包含数字(900.0)的平方根。数字900.0是sqrt函数的参数。上述语句打印30。sqrtd函数取double类型参数,返回double类型结果。数学函数库中的所有函数都返回double类型结果。要使用数学库函数,需要在程序中包含math.h头文件(这个头文件在新的C++标准库中称为cmath)。
常见编程错误3.1
使用数学库孙数而不包括math.h文件是个语法错误。程序中使用的每个标准库函数都应包括标准头文件。
函数参数可取常量、变量或表达式。如果c1=13.0、d=3.0和f=4.0,则下列语句:
cout << sqrt (cl + d * f);
计算并打印13.0+3.0*4.0=25.0的平方根,即5(因为C++通常对没有小数部分的浮点数不打印小数点和后面的零)。
图3.2总结了一些数学库函数。图中变量x和y为double类型。 ------------------------------------------------------------------------------
函数 说明 举例 ------------------------------------------------------------------------------
ceil(x) 将x取整为不小于x的最小整数 ceil(9.2)=10.0
ceil(-9.8)=-9.0
cos(x) x(弧度)的余弦 cos(0.0)=1.0 exp(x) 指数函数
ex exp(1.0)=2.71828
exp(2.0)=7.38906
fabs(x) x的绝对值 x>0,abs(x)=x x=0,abs(x)=0.0 x<0,abs(x)=-x floor(x) 将x取整为不大于x的最大整数 floor(9.2)=9.0
floor(-9.8)=-10.0
fmod(x,y) x/y的浮点数余
数 fmod(13.657,2.333)=1.992 log(x) x的自然对数(底数为e) log(2.718282)=1.0
log(7.389056)=2.0
log10(x) x的对数(底数为10) log(10.0)=1.0 log(100.0)=2.0 pow(x,y) x的y次方(xy) pow(2,7)=128 pow(9,.5)=3 sin(x) x(弧度)的正弦 sin(0.0)=0 sqrt(x) x的平方
根 sqrt(900.0)=30.0
sqrt(9.0)=3.0 tan(x) x(弧度的正切 tan(0.0)=0 ------------------------------------------------------------------------------- 3.4 函数
函数使程序员可以将程序模块化。函数定义中声明的所有变量都是局部变量(local variable),只在所在的函数中有效。大多数函数有一系列参数,提供函数之间沟通信息的方式。函数参数也是局部变量。 软件工程视点3.2
在包含多个函数的程序中,main应实现为一组函数调用,这些函数进行大量的程序工作。
将程序函数化的目的有几个,“分而治之、各个击破”的方法使程序开发更容易管理。另一个目的是软件复用性(software reusability),用现有函数作为
基本组件,生成新程序。软件复用性是面向对象编程的主要因素。有了好的函数命名和定义,程序就可以由完成特定任务的标准化函数生成,而不必用自定义的代码生成。第三个目的是避免程序中的重复代码,将代码打包成函数使该代码可以从程序中的多个位置执行,只要调用函数即可。
软件工程视点3.1
每个函数只限于完成一个定义良好的任务,函数名应有效地表达这个任务,这样可以提高软件复用性。 软件工程视点3.4
如果无法用简单名称表达函数的作用,则可能是定义的函数要完成的任务太分散。通常应把这种函数分 解为几个更小的函数。 3.5 函数定义
前面介绍的每个程序都有一个main函数,调用标准库函数完成工作。现在要考虑程序员如何编写自定义函数。
考虑一个程序,用自定义函数,square计算整数1到10的平方(如图3.3)。 1 // Fig. 3.3: fig03_03.cpp
2 // Creating and using a progra~er-defined function 3 #include
5 int square( int ); // function prototype(函数原型) 6
7 int main( ) ( S
9 for ( in x = 1; x <= 10; x++ ) 10 cout<< square( x ) << \11
12 cout << endl;
正在阅读:
C++学习教程及习题 第三章11-10
2013年《形势与政策》考试资料07-25
精品课程试题06-01
晒晒我的好家风征文(五)1班肖雪姣10-28
第1板块 专题四 辨 析 病 句10-09
国际结算单选参考答案05-13
chap3 证券价值评估11-18
全县集团化办园实施方案02-29
教师节英语诗歌有哪些03-21
中国传统家风的现代价值单元测试08-26
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- C++
- 学习教程
- 习题
- 第三章
- 皮肤性病学试题库试卷2附参考答案
- 公司预算合同部部长先进事迹材料
- FLUID MECHANICS
- 武汉纺织大学普通专升本考试计算机科学与技术招生人数、考试科目、复习教材和试题及录取分数线
- 2014网络应用能力大赛
- 设计说明(路基部分)
- 2012年辅导员技能竞赛谈心谈话及分析总结测试题目
- 半月谈半月评论集锦
- Hadoop2.6+HA+Zookeeper3.4.6+HBase1.0.0集群安装 - 图文
- 教科版小学科学六年级复习资料 - 图文
- 三加氢开工总结
- 暗挖隧道9.12
- 进口纺织品公司名称
- 第二册 道路工程 说明及工程量计算规则
- 教师党员自我批评
- 公关课程习题集
- 五年级语文下册第九单元破除迷信2活见鬼教案北师大版
- 消防工程实习报告3000字
- 张村东里小区供暖管网更新改造请示
- 40、水泥磨电气控制系统(定稿) - 图文