零基础学C++(第3版).html.pdf
《零基础学C++(第3版).html.pdf》由会员分享,可在线阅读,更多相关《零基础学C++(第3版).html.pdf(405页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、前言 欢迎进入C+语言的世界!虽然说C+语言是在C语言的基础上发展而来的,但不同于C语言的面向结构编程机制,C+语言引入了面向对象编程和泛型编程机制。因此,完全可以把C+语言当成一 门全新的语言来看。本书并不要求读者有C语言的基础。 为了使读者能循序渐进地掌握C+语言的语法机制和编程思想,笔者精心编写了本书。根据读者一般的学习习惯,以循序渐进的方式,从最简单的“Hello,World”程序开始,逐步深化、细化,对书 中每个知识和技术要点都给出了详细的程序示例及代码分析。这些示例代码不仅一针见血地指明了技术要点的本质,而且短小精炼,方便复制和试验。 本书特色 本书合理控制了知识点的深度和讲解的进
2、度,向读者展示出C+语言全貌。书中所给示例代码条理清晰,简洁且直透本质,读者可以迅速了解技术要点的内涵。笔者从事多年项目开发,经验丰富,本 书面向初、中级读者,以大量的示例进行示范和解说,对技术要点的阐述深入浅出,其特点主要体现在以下几个方面。 本书采用循序渐进的方式,每章主题鲜明,要点突出,适合初级、中级学者逐步掌握C+语言的语法规则和编程思想。 本书范例丰富,包含几百个代码示例,关键知识点都辅以示例帮助读者理解。范例程序简洁,不是简单的代码罗列,而是采用短小精练的代码紧扣所讲的技术细节,并配以详细的代码解释和说明, 使读者印象深刻。 本书内容全面,兼顾了C+语言所有的特性。 本书所有示例都
3、具有代表性,揭示技术要点的本质,每个示例集中说明一个概念或要点。 本书对于学习中经常遇到的问题与需要注意的关键点进行特别注释。 本书大量使用了图例、表格等直观的表达方式。 本书采用技术要点、详细介绍、示例运行等多种方式进行讲解,系统性和可用性强,能够给读者留下深刻的印象。 本书精选习题,为了给读者在学习知识之余提供更多的实践机会,每一章都配了各种类型的习题。习题紧扣本章知识点,突出对知识的理解和应用。同时,在习题中还有上机操作题,结合本章的重 点来考查,给读者应用所学知识提供机会。 本书紧扣职场,为了给有可能参加职场面试的朋友提供更多的帮助,在本书最后一章专门提供了常见面试题。精选了多年来著名
4、IT公司面试题中与C+语言相关的题目,除了提供最佳答案之外,还 对题目进行了深入浅出的分析,帮助读者了解题目特点,把握面试重点。 本书内容 本书共分为六篇,共20章。 第一篇(第12章)是C+基础,涉及程序设计语言的基本概念,Visual C+6开发环境的搭建,C+程序的构成、变量、常量、运算符与表达式、数据类型转换以及流程控制语句等内容。 第二篇(第37章)介绍面向过程的C+程序开发,分别介绍数组和字符串、指针和引用,以及结构、共用体和链表的使用,详细地讲述了函数的使用,讨论了变量的类型、生存期、作用域和可见 域,总结了在编写函数时经常出现的问题,提供了进行函数编写的建议。 第三篇(第811
5、章)介绍面向对象(OOP)的C+语言程序开发,结合精练的代码讲述了类的设计和使用、多态、虚函数、继承、代码复用、友元等内容,向读者展示了C+语言面向对象编程的全 貌和独特魅力。 第四篇(第1213章)介绍泛型编程,这是由模板来实现的,使数据结构和算法的定义可以脱离具体类型的限制。C+提供了标准模板库STL,它是该篇的重点。 第五篇(第1418章)介绍文件存储和编程规范方面的内容,文件存储从基本的高层I/O机制讲起,然后介绍C+流类库的使用、异常与错误机制、程序编码风格和C+程序编译相关的内容。 第六篇(第1920章)首先用C+语言开发了一个简单的教学管理系统,让读者学以致用。然后讲解面试题精选
6、方面的内容,介绍著名的IT公司关于C+语言程序开发方面的各种常见面试题,帮助读 者提高笔试能力,找到满意的工作。 本书读者 本书作为C+语言的基础教程,适合于: C+语言的初学者。 想从C语言跨越到C+语言的人员。 了解C+语言,但所学不全面的人员。 想了解C+语言技术及最新进展的其他人员。 高等院校理科学习C+课程的学生。 使用C+语言进行毕业设计的学生。 使用C+语言进行项目开发的人员。 掌握C+语言编程技术,想通过此找工作的人员。 本书作者 本书第110章由平顶山学院的王慧编写,第1120章由王浩编写,其他参与编写和资料整理的人员有冯华君、刘博、刘燕、叶青、张军、张立娟、张艺、彭涛、徐磊
7、、戎伟、朱毅、李佳、李玉涵、 杨利润、杨春娇、武鹏、潘中强、王丹、王宁、王西莉、石淑珍、程彩红、邵毅、郑丹丹、郑海平、顾旭光。 作者 第一篇 C+基础 第1章 C+概述 21世纪是个信息爆炸的时代,信息技术的发展日新月异,极大地改变了人们的沟通方式和生活方式。这些都是由不同的软件来完成的,这些软件称为计算机程序。有了程序,计算机才能为人类工作, 没有软件的计算机是废铁一堆。我们可以从商场里或网络上方便地得到各种软件,如用来编辑文章的字处理软件,用来合理组织数据的数据库软件,学习英语的软件,供人娱乐的游戏软件等,这些软件都 是通过计算机程序设计语言编写的。本书介绍的C+语言就是一门功能强大的程序
8、设计语言,掌握了C+语言,我们便可以根据需要编写自己的软件。 对大多数人来说,计算机已经不是什么新鲜事物,花大力气讲计算机的详细结构似乎没有必要,但为了让读者能对计算机程序开发过程有总体认识,先简要介绍计算机的组成、原理及计算机语言的一 些基本概念。 本章主要涉及以下知识点。 计算机组成:介绍计算机组成的相关知识。 程序设计语言:介绍程序设计语言的分类。 C+程序设计语言:介绍关于C+语言的基础知识。 开发环境搭建:通过图片和文字介绍如何搭建Visual C+开发环境。 实例讲解:通过一个实例程序让读者认识C+语言程序设计。 C语言与C+语言:分析两者的不同。 第一篇 C+基础 第1章 C+概
9、述 21世纪是个信息爆炸的时代,信息技术的发展日新月异,极大地改变了人们的沟通方式和生活方式。这些都是由不同的软件来完成的,这些软件称为计算机程序。有了程序,计算机才能为人类工作, 没有软件的计算机是废铁一堆。我们可以从商场里或网络上方便地得到各种软件,如用来编辑文章的字处理软件,用来合理组织数据的数据库软件,学习英语的软件,供人娱乐的游戏软件等,这些软件都 是通过计算机程序设计语言编写的。本书介绍的C+语言就是一门功能强大的程序设计语言,掌握了C+语言,我们便可以根据需要编写自己的软件。 对大多数人来说,计算机已经不是什么新鲜事物,花大力气讲计算机的详细结构似乎没有必要,但为了让读者能对计算
10、机程序开发过程有总体认识,先简要介绍计算机的组成、原理及计算机语言的一 些基本概念。 本章主要涉及以下知识点。 计算机组成:介绍计算机组成的相关知识。 程序设计语言:介绍程序设计语言的分类。 C+程序设计语言:介绍关于C+语言的基础知识。 开发环境搭建:通过图片和文字介绍如何搭建Visual C+开发环境。 实例讲解:通过一个实例程序让读者认识C+语言程序设计。 C语言与C+语言:分析两者的不同。 1.1 了解计算机 通俗地讲,计算机是个“超级工具”,是一个能执行命令的电子设备。几乎所有的计算机都遵循冯诺伊曼的“存储运行”结构,它有以下基本功能:输入、输出、存储、执行算术和逻辑运算。计 算机主
11、要由硬件和软件两大部分组成,首先看什么是硬件。 注意 硬件相当于人类的身体,而软件相当于人类的思想。 1.1.1 计算机硬件 计算机的硬件主要有中央处理器(Central Processing Unit,CPU)、内存(或称主存、随机处理器、RAMRandom Access Memory)、输入/输出设备(Input/Output Devices)和外部存储 设备(Secondary Storage,多数为具备海量存储能力的硬盘)。图1-1说明了计算机的硬件结构。 图1-1 计算机硬件结构图 (1)中央处理器 如果把计算机比喻成一个人,那么,中央处理器就相当于人的大脑,是整个计算机的控制中心。
12、中央处理器由以下几部分组成:控制单元(Central Unit,CU)、程序计数器(Program Counter,PC)、指令寄存器(Instruction Register,IR)、算术逻辑单元(Algorithm Logic Unit,ALU)和累加器(Accumulator,ACC)。这几个部分相互配合完成程序指令的执行。 控制单元主要有3个作用:获取并解释指令、控制数据或指令信息在内存中的读取、控制中央处理器内部各单元的工作。 程序计数器用来记录下一步要执行指令的位置。 指令寄存器用来暂存当前正在执行的指令。 算术逻辑单元执行所有的算术和逻辑运算。 累加器用来存储算术逻辑单元的计算结
13、果。 (2)内存 程序在执行前都要被装载到内存中,才能被中央处理器执行。以Windows系统为例,执行硬盘上的某个程序,实际上是将该程序的指令和数据导入内存,供中央处理器执行的过程。 内存是由按顺序编号的一系列存储单元组成的。在内存中,每个存储单元都有唯一的地址,通过地址可以方便地在内存单元中存取信息。内存中的数据要靠供电来维持,当计算机关机或意外断电时, 内存中的所有数据就永久地消失了。 (3)输入/输出设备 输入/输出设备是计算机与人交流的接口。负责读入指令和数据的设备称为输入设备,如键盘和鼠标;负责显示计算结果的设备是输出设备,如显示器和打印机。这里要特别说明的是外部存储器,它既 可以将
14、指令和数据送入中央处理器,又可以存储计算结果,所以,外部存储器既是输入设备,又是输出设备。 (4)外部存储器 程序的指令和数据要装入内存才能执行,但内存中的数据在断电或关机后就丢失了。为了长久保存有用的指令和数据,需要一个不依赖于供电、能“永久性”存储数据的设备,我们把它称为外部存储 器。典型的外部存储器包括硬盘、软盘、ZIP盘、光盘和磁带等。 1.1.2 计算机软件 软件是能完成特定功能的程序,大体上可以分为两类:系统软件和应用软件。 (1)系统软件 系统软件是用来控制计算机,管理计算机上的资源,使计算机的硬件有效发挥作用的程序。在系统启动时装载入内存的程序集合称为操作系统。没有操作系统的计
15、算机什么也干不了。操作系统除了进 行内存管理、文件管理和输入输出管理外,一般都提供了很多系统级的服务供用户调用。但不要认为操作系统程序有多么的高深莫测,从本质上说,它也是用程序设计语言编写出来的。只要掌握了程序设 计的原理和硬件系统的相关知识,就可以编写出自己的操作系统。除了操作系统外,设备驱动程序和其他一些管理软件也可以归入系统软件的范畴。 (2)应用软件 虽然系统软件能有效实现计算机的内部功能,协助计算机使用外围设备,但它没有把计算机转化成可以写报告、练打字、看电影等多用途的机器。想要实现这些功能,需要安装应用软件。应用软件面 向特定的应用,如用Word软件来处理文字,用Excel软件来记
16、录数据,还有供娱乐的游戏程序等。 注意 对计算机而言,所有的软件都是由程序设计语言编写的,但是应用软件要在操作系统软件的支持下才能运行。 1.2 程序设计语言 在人类的交流中,语言的作用无可取代,要想交流通畅,有共同的语言是首要条件。例如,一个中国人想和一个英国人聊天,光靠比划手势是不行的。有两种方法可以选择,要么学习英语,要么找一 个翻译。计算机程序设计同样如此,计算机是无生命、无知觉的机器,它不懂人类的语言,不管是汉语还是英语,计算机都不会接受。人类要想与计算机交流,让其完成特定的任务,就必须解决“语 言”的问题。人类和计算机交流同样有两条路:要么学习机器语言,要么找一个“翻译”。机器语言
17、是什么?“翻译”又是什么?下面将给出解答。 1.2.1 机器语言 计算机是一种电子设备,计算机处理的是数字信号。数字信号采用0和1记录信息,那么,计算机的语言机器语言(Machine Language),自然也就是0和1序列。数字0和1称为二进制数据 (Binary Digit),或者称为位(bit),这种由0和1组成的序列就称为二进制代码。 注意 二进制代码只能由0和1组成。 即便是完成相近的功能,不同的计算机的设计者也可能会采用不同的二进制代码集来表示程序指令。换句话说,不同的计算机使用的机器语言并不一定相同。不过可以肯定的是,现代计算机都是以二 进制代码的形式存储和处理数据的。 在早期的
18、开发工作中,程序都是用机器语言编写的,为了方便读者理解指令的过程,假定要执行下列操作: 1 2 ? 计算机处理这个简单的运算要经过以下步骤。 1)将1载入累加器。 2)把1暂存到内存的某个地址ADDR1中。 3)将2载入累加器。 4)将内存ADDR1中的数据和累加器中的数据相加。 5)输出结果(一般是输出到内存的某个地址,如ADDR2中)。 假定在所使用的计算机中,装载操作(将数据载入累加器)用二进制代码00000001表示,加法运算用00000010表示,存储操作(对内存某个位置赋值)用00000011表示,ADDR1为1000,ADDR2为 1001,如果用机器语言,需要编写如下的指令序列
19、。 00000001 00000001 (将1 载入累加器) 00000011 1000 (把1 暂存到内存中地址为1000 的单元) 00000001 00000010 (将2 载入累加器) 00000010 1000 (将内存地址为1000 的单元中的数据和累加器中的数据相加) 00000011 1001 (将运算结果输出到内存中地址为1001 的单元中) 可见,为了使用机器语言编写程序,程序员需要记住各种操作的二进制代码,还要记住所有数据在内存中的位置。这种编码方式难度很大,极易出错,编写程序的效率很低。 注意 现在程序员已经很少使用机器语言编写程序,而是采用下面介绍的汇编语言。 1.2
20、.2 汇编语言 汇编语言(Assembly Language)的出现简化了程序员的工作,在汇编语言中,用便于记忆的方法定义程序指令。表1-1给出了汇编语言指令与机器语言指令的对应关系。 表1-1 汇编语言指令和对应的机器语言指令 使用汇编语言计算“12?”,则上面的机器语言指令序列可以改写成如下内容。 LOAD 1 SAVE ADDR1 LOAD 2 ADD ADDR1 SAVE ADDR2 与机器语言相比,使用汇编语言编程要容易很多,但是,计算机不能直接执行由汇编语言编写的程序,必须借助“翻译”将汇编语句序列转化为计算机可以理解的二进制序列,也就是说,汇编语言指 令要转换成机器语言指令的形式
21、,才能被计算机执行。这个“翻译”的执行者就是汇编语言编译器(Assembler)。 不同的计算机可能会采用不同的二进制代码集来表示程序指令,因此,汇编语言和汇编语言编译器也和所用的计算机密切相关。 1.2.3 高级语言 既然机器语言和汇编语言都是计算机可以理解的语言,用其就可以完全控制计算机的行为,那么,为什么人们还要创造并使用高级程序设计语言呢?因为机器语言和汇编语言都是低级语言,是面向机 器的,与具体的计算机相关,学习起来困难,编程效率低,可读性、可维护性差。 例如,一个说普通话的北京人想要去欧洲旅行,可是,他不懂任何一门欧洲语言;恰好,一个说粤语的广东人也去欧洲旅行,而且他懂得德语、英语
22、、法语、西班牙语等所有欧洲语言,于是,他们结 伴同行。北京人想要同欧洲人交流,有两种方式:一是学习各种欧洲语言,然后直接同各个国家的人交流;二是让广东人当翻译,将自己的意思讲给欧洲人听,并将欧洲人的回答反馈给自己。如果您是那 个北京人,您选择哪种方式?我想答案是确定的,肯定要请广东人当翻译。虽然普通话和粤语也有一定的差异,但是比起与欧洲语言的差异,这种差异小了很多。况且,如果直接同欧洲人交流,需要学习 很多种语言。 高级语言和计算机的关系,与北京人的语言和欧洲人的关系相似。高级语言编写的程序借助于编译器就可以在特定的机器上运行,不同的欧洲人相当于不同的计算机,广东人相当于编译器,粤语相当 于计
23、算机高级语言。 高级语言的优点主要有以下两个。 高级语言编写的程序是由一系列语句(或函数)组成的,每一条语句都对应着几条、几十条甚至上百条机器指令的序列。这样的一条语句,功能显然增强了,所以用其开发程序比用低级语言效率高 得多。同时,由于高级语言的编写方式更接近人们的思维习惯,这样的程序易读,易懂,易于维护。 用高级语言编写的程序具有一定的通用性。同样的一句话,广东人根据听众的不同将其翻译成德语、英语、法语等不同形式,达到交流和沟通的目的。高级语言的一条语句,经由不同的编译器加工 编译后,生成针对特定的计算机的二进制代码。低级语言涉及计算机硬件细节,所以不具有通用性。要使高级语言编写的程序在某
24、一台计算机上运行,只要该计算机提供该语言的翻译系统即可。 思考 既然高级语言有着低级语言无法比拟的优势,是不是可以完全放弃低级语言呢? 回答是否定的。原因如下。 首先,机器语言是最终操作计算机硬件的语言,任何高级语言程序想要在计算机上执行,必须翻译成机器指令,也就是编译成二进制代码的形式。 其次,虽然高级语言在执行速度比不上同样功能的低级语言,在对硬件的操作上也不如低级语言灵活,但是在如实时控制系统这样对程序速度要求高的情况下,或者编写某种新硬件的驱动程序时,仍 然会用到低级语言(主要是汇编语言)。 同汇编语言类似,高级语言也需要专门的翻译程序(称为编译器或解释器),将其编译成机器语言后才能运
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基础 html
限制150内