C++程序设计教程(第3版)(通用版)(C++程序设计系列教材)pdf下载pdf下载

C++程序设计教程(第3版)(通用版)(C++程序设计系列教材)百度网盘pdf下载

作者:
简介:本篇主要提供C++程序设计教程(第3版)(通用版)(C++程序设计系列教材)pdf下载
出版社:
出版时间:2019-06
pdf下载价格:0.00¥

免费下载


书籍下载


内容介绍

内容简介

C++是一种高效实用的程序设计语言,它既可进行过程化程序


设计,也可进行面向对象程序设计,因而成为编程人员z广泛使用的工具。学好

C++,再学习其他软件就很容易,C++架起了通向强大、易用、真正的软件开发应用的桥梁。

本书共分两大部分: 第一部分包括第1章~第10章,是基础部分,主要介绍C++程序设计语言、程序结构和过程化基础; 第二部分包括第11章~第21章,是面向对


象程序设计部分,它建立在C++程序设计基础之上,讲述了面向对象程序设计方法。

本书提供课程教学的全程视频,读者可扫描封底的刮刮卡观看。本书还提供电子课件和程序源码,读者可以扫描封底的课件二维码下载。

本书适合用作大学计算机专业和非计算机专业的程序设计基础课程教材,


也可供自学的读者使用。


目录

目录



第一部分C++过程化语言基础



第1章C++入门


1.1从C到C++


1.2程序与语言


1.3结构化程序设计


1.4面向对象程序设计


1.5程序开发过程


1.6最简单的程序


1.7函数


小结



第2章基本数据类型与输入/输出


2.1字符集与保留字


2.2基本数据类型


2.3变量定义


2.4字面量


2.5常量


2.6I/O流控制


2.7printf与scanf


小结


练习



第3章表达式和语句


3.1表达式


3.2算术运算和赋值


3.3算术类型转换


3.4增量和减量


3.5关系与逻辑运算


3.6if语句


3.7条件运算符


3.8逗号表达式


3.9求值次序与副作用


小结


练习



第4章过程化语句


4.1while语句


4.2do…while语句


4.3for语句


4.4switch语句


4.5转向语句


4.6过程应用: 求π


4.7过程应用: 判明素数


4.8过程应用: 求积分


小结


练习



第5章函数


5.1函数概述


5.2函数原型


5.3全局变量与局部变量


5.4函数调用机制


5.5静态局部变量


5.6递归函数


5.7内联函数


5.8重载函数


5.9默认参数的函数


小结







练习



第6章程序结构


6.1外部存储类型


6.2静态存储类型


6.3作用域


6.4可见性


6.5生命期


6.6头文件


6.7多文件结构


6.8编译预处理


小结


练习



第7章数组


7.1数组的概念


7.2访问数组元素


7.3初始化数组


7.4向函数传递数组


7.5二维数组


7.6数组应用: 排序


7.7数组应用: Josephus问题


7.8数组应用: 矩阵乘法


小结


练习



第8章指针


8.1指针的概念


8.2指针运算


8.3指针与数组


8.4堆内存分配


8.5const指针


8.6指针与函数


8.7字符指针


8.8指针数组


8.9命令行参数


8.10函数指针


小结


练习



第9章引用


9.1引用的概念


9.2引用的操作


9.3什么能被引用


9.4用引用传递函数参数


9.5返回多个值


9.6用引用返回值


9.7函数调用作为左值


9.8用const限定引用


9.9返回堆中变量的引用


小结


练习



第10章结构


10.1结构概述


10.2结构与指针


10.3结构与数组


10.4传递结构参数


10.5返回结构


10.6链表结构


10.7创建与遍历链表


10.8删除链表结点


10.9插入链表结点


10.10结构应用: Josephus问题


小结


练习


第二部分面向对象程序设计


第11章类


11.1从结构到类


11.2软件方法的发展


11.3定义成员函数


11.4调用成员函数


11.5保护成员


11.6屏蔽类的内部实现


11.7名字识别


11.8再论程序结构


小结


练习



第12章构造函数


12.1类与对象


12.2构造函数的必要性


12.3构造函数的使用


12.4析构函数


12.5带参数的构造函数


12.6重载构造函数


12.7默认构造函数


12.8类成员初始化的困惑


12.9构造类成员


12.10构造对象的顺序


小结


练习



第13章面向对象程序设计


13.1抽象


13.2分类


13.3设计和效率


13.4讨论Josephus问题


13.5结构化方法


13.6结构化方法的实现


13.7面向对象方法


13.8面向对象方法的实现


13.9程序维护


小结


练习



第14章堆与拷贝构造函数


14.1关于堆


14.2需要new和delete的原因


14.3分配堆对象


14.4拷贝构造函数


14.5默认拷贝构造函数


14.6浅拷贝与深拷贝


14.7临时对象


14.8无名对象


14.9构造函数用于类型转换


小结


练习



第15章静态成员与友元


15.1静态成员的必要性


15.2静态成员的使用


15.3静态数据成员


15.4静态成员函数


15.5需要友元的原因


15.6友元的使用


小结


练习



第16章继承


16.1继承的概念


16.2继承的工作方式


16.3派生类的构造


16.4继承方式


16.5继承与组合


16.6多继承如何工作


16.7多继承的模糊性


16.8虚拟继承


16.9多继承的构造顺序


小结


练习



第17章多态


17.1多态性


17.2多态的思考方式


17.3多态性如何工作


17.4不恰当的虚函数


17.5虚函数的限制


17.6继承设计问题


17.7抽象类与纯虚函数


17.8抽象类派生具体类


17.9多态的目的


小结


练习



第18章运算符重载


18.1运算符重载的需要性


18.2如何重载运算符


18.3值返回与引用返回


18.4运算符作成员函数


18.5重载增量运算符


18.6转换运算符


18.7赋值运算符


小结


练习



第19章I/O流


19.1printf和scanf的缺陷


19.2I/O标准流类


19.3文件流类


19.4C字串流类


19.5控制符


19.6使用I/O成员函数


19.7重载插入运算符


19.8插入运算符与虚函数


19.9文件操作


小结


练习



第20章模板


20.1模板的概念


20.2为什么要用模板


20.3函数模板


20.4重载模板函数


20.5类模板的定义


20.6使用类模板


20.7使用标准模板类库: Josephus问题


小结


练习



第21章异常处理


21.1异常的概念


21.2异常的基本思想


21.3异常的实现


21.4异常的规则


21.5多路捕获


21.6异常处理机制


21.7使用异常的方法


小结


练习



参考文献


精彩书摘

第5章函数


要编好程序,就要会合理地划分程序中的各个程序块,C++称之为函数。函数有各种表现形态,但都离不开函数调用的实质。所以要用好函数,必须


先把握函数调用机制。学习本章后,要求领会函数调用的内部实现机制,区分函数声明与定


义,掌握全局变量、静态局部变量和局部变量之间的区别,理解并运用递归、内联、重载和


默认参数的函数。

5.1函数概述


程序通常是非常复杂而冗长的。实际编程中,有些程序需要几万甚至几百万行的代码。在编


写一个很长的程序时,可以采用一种好的策略,就是把这个大的程序分割成一些相对独立而


且便于管理和阅读的小块程序。这样,无论对程序员还是其他阅读者都很方便。

把相关的语句组织在一起,并给它们注明相应的名称,利用这种方法把程序分块,这种形式


的组合就称为函数。函数通常也称为例程或过程。

函数的使用是通过函数调用实现的。函数调用指定了被调用函数的名字和调用函数所需的信


息(参数),这和请一个上门服务的修理工形式类似。主人(相当于调用函数)要求修理工


人(相当于被调用函数)按照要求(函数参数)完成某个任务,并在完成这项工作后由主人


验收(函数返回)。如果不符合要求,则修理工人就面临拿不到工钱的局面。

程序员编写完成指定任务的函数是用户定义的函数,标准库函数是C++提供的可以在任何程序中使用的公共函数。程序总是从main()函数开始启动。



可以通过结合已有函数的方法建立新的函数。由多个小函数建立大函数,这能使程序易写、


易读和易调试。

图51反映了main()函数用层次式管理方式与被调用函数的关系。一个函数可以被函数调用


也可以调用函数。


图51调用与被调用函数的层次关系


C++不允许函数定义嵌套,即在


函数定义中再定义一个函数是非法的。

例如,下面的代码在主函数中非法嵌套了一个func()函数定义:


前言/序言

第3版前言

人工智能发展的大势

人工智能代表了人类科学发展的前沿领地,C++与其关系密不可分,所以本教材系列的出版有人工智能发展背景的一席之地。

人工智能目前尚处初级阶段,但其研究所派生的应用已经硕果累累,正在快速地改变我们的生活。人工智能解读医学拍片的本领已经比医生高; 查阅法律证据的能力也比律师强; 飞机及航空管理正在被人工智能替代; 车辆行驶人工智能系统比人的操纵更好; 搜索引擎中的人工智能可以分析照片,告诉你照片里面的故事。在线地图、数码相机、自动驾驶、无人超市、无人餐馆、无人银行等,今后甚至桩桩、件件、处处都可装智能芯片,从而纳入人工智能管理。

人工智能最关心的是人工自主意识,目前网络和计算机已经完成了知识的检索和存储,几大搜索引擎也完成了关键字关联解释的功能和海量数据积累,大多数机器人厂商已经完成了反应机、自适应等高级功能,但却还没有能通过图灵测试的真正的人工自主意识。当然人类对自身意识的研究水平制约着人工智能的实现,人工智能的应用还可反哺于人类对自身意识的研究。

人工智能或许认为,神经网络系统只有复杂到一定程度,且在大尺度上的相似性保持高度一致,其个体自然产生的意识才会具备类似神经网络个体的认同和感知。但在技术上,意识只不过是人造神经网络中诸多需求反馈链交错所致。所以,人们通过研究人类神经网络的构成分布、互联网的社会化训练过程,“自然产生”个体意识。但实际上目前网上的软件自动机和各种设备产生的不知名网络现象,即所谓自主意识,因还无法被人工智能所感知,只被当作不知名故障进行“修复”处理,自当无解。

人工智能又或许认为,可以通过人工制造的智慧个体(机器人),在初期表现出类似创造者的行为和意识,再慢慢地进化。“机器学习“和“深度学习”被证明是个有效的手段,但受限于机器人硬件发展和大数据,前路漫漫。况且面临着神经反馈网络发展的实际问题,进化过程中的数据“过载”或“饥荒”会导致行为和意识的随时失却。

然而人类正在不依不饶地解决人工智能的关键问题: 机器人的行动能力和对环境的视觉、听觉、触觉、嗅觉感知能力都在快速增强,智能推演之,则机器人就可自行获取运行的能源; 软件自编程系统逐渐实现的自继承、自升级和自恢复,可以使机器人自我修复和完善; 人类所掌握的全方位机器人设计、生产、测控在逐渐人工智能化,总有一天,机器人可以自行复制。

未来的人工智能发展速度将呈指数级攀升,将有越来越多的机器人通过图灵测试而具意识。一旦人工智能具有创造性思维,其发展将促进人类的巨大科学进步。显然,人工智能离不开计算,其需要远远大于现有的计算能力,除了期待量子计算机外,还需要有高可靠性的软件架构和高性能算法,这便需要千锤百炼的编程语言和纵横交错的软件工具。






C++发展与地位


C++在1998年制定了一个里程碑式的C++98国际标准,确立了C++语言的强势地位。之后,C++标准每年修订,2011年制定的C++11标准,使得C++的强类型特征得到了充分的体现,模板编程规范渐趋成熟。C++11标准再次深度影响了C++编译器的变革,其发展无时无刻不在说明其语言的完美缔造。

C++充分继承了C,保持了与硬件的亲和性,在此基础上,有机结合了诸多编程方法,兼容C的过程化编程框架,实现了面向对象的高效设计,又开辟了可自动生成的模板编程架构,在程序设计语言界绝无仅有。C++是当前使用最广泛的软件工具之一,其实现技术含量最高,应用于最重要领域。C++给我们搭建的软件架构,得以让人类展开多层次的人人、人机的互动设计,其正完美地表现出作为人类自然语言的化身角色。

从另一个角度来说,C++编程本身就是在撰写一篇优美的诗文,叙述一个精彩的故事,谱写一首动听的曲子。随着韵律和情节的跌宕起伏,什么时候故事讲完了,代码也就收尾了。好文章语义清晰、简练生动、词藻华美、引人入胜; 好代码通俗易懂、结构清晰、层次分明、优化高效。因为C++独具多种编程方法,包揽从算法优化的微观细节,到模板架构的宏观布局,因而其开拓了编程中更广泛的遐想与表达的空间,C++编程充满美感。

微软操作系统及其架构,Apple的大部分底层软件,腾讯的QQ和微信,阿里云、百度云计算之底层架构,Google的Android底层架构,大部分数据库核心代码,几乎所有重要的系统,只要上规模,需要保证高可靠性,计较性能,无一不是用C++工具搭建。

正因为C++继承了C的衣钵,充分实现与系统硬件的无缝对接,追求高效率编程,才使得人工智能兴起的今天,大量涉及硬件相关的软件开发,C++是首选; 其在人工智能的软件架构中,核心的逻辑语义表达,不但描述能力无可挑剔,而且在性能和效率方面占尽了优势。

重量级IT企业在招聘大数据工程师时,机器人公司在招聘开发人员时,都把C++编程作为必备能力。目前在中小学教学的信息学与程序设计课程开设中,C++趋向于统一指定为高考入学备考科目。事实上,学好C++,再自学其他编程语言就很容易,反之则不行。

编程语言的世界排名前四名已经长时间被Java、C、C++、Python这4种语言所占据。Java因其应用面更广泛而持续居于榜首,但在人工智能领域,Python编程相比Java,或许更加清爽、整洁、漂亮,其跃居前四,又有后来居上之势。人工智能也带来了C++的再次繁荣,从某种程度上说,Python编程只是在搭建软件的外包装,而C++才是其核心。C++与C在占据系统底层应用方面没有什么差距,但是在规模化编程、自动生成、实现系统架构方面,非C++莫属。况且由于C++源自C的特点,C编程往往又是在C++平台中实现。追本溯源,C++语言才是当今人工智能大发展上最重要的工具。

改 版 框 架

本教材系列进化到第3版,是作者20多年C++教学研究与实践的总结。改版之后,每本主教材的框架结构没有变,所以遵循原编排特点、内容特点、学习方式。但毕竟编程应用需求形势大变,C++的地位攀升,急需权威的C++教材主导C++的编程教学,故而第3版各版本的名称拟定、排版、内容都作了较大更新。

第3版中各版本一律改用双色文字排版,代码以及关注文字用另一种颜色和底纹凸显,从根本上改变了排版式样,可读性得以显著提升。

第3版中各版本的内容在原书的基础上修改提升,涉及内涵深度、风格表现、描述侧重点等诸多不同。其版本名称见表1。

表1第3版版本框架