由浅入深学C++:基础、进阶与必做300题(含DVD光盘1张)(txt+pdf+epub+mobi电子书下载)


发布时间:2020-05-11 06:52:42

点击下载

作者:肖俊宇,吴为胜 等

出版社:电子工业出版社

格式: AZW3, DOCX, EPUB, MOBI, PDF, TXT

由浅入深学C++:基础、进阶与必做300题(含DVD光盘1张)

由浅入深学C++:基础、进阶与必做300题(含DVD光盘1张)试读:

内 容 简 介

C++是近年广泛使用的程序设计语言,在 C 语言的基础上发展而来,实现了由面向过程到面向对象的转变,全面支持面向对象的程序设计方法。C++语言在软件工业领域一直处于领先地位,并且自身在不断完善,必将作为高性能软件开发的基础,在软件开发中发挥主要的作用。本书是C++语言的入门教程,较为系统地介绍了C++语言的基础内容。本书共分为3篇22章,详细介绍了 C++语言的基础知识、面向对象、标准模块、底层开发和综合案例。本书循序渐进地讲述了 C++的基础知识、C++程序的组成及其开发过程、C++程序中的数据、表达式和语句、控制程序流程、数组与字符串、指针与引用、使用函数、函数模板、错误和异常处理、宏和预编译、面向对象的开发、封装、继承、多态、类模板、文件流、标准模板库STL和编程实践等内容。本书涉及面广,从基本知识到高级内容和核心概念,再到综合案例,几乎涉及 C++开发的所有重要知识。本书适合所有想全面学习 C++开发技术的人员阅读,尤其适合没有编程基础的 C++语言初学者作为入门教程,也可作为大、中院校师生和培训班的教材,对于 C++语言开发爱好者,本书也有较大的参考价值。未经许可,不得以任何方式复制或抄袭本书之部分或全部内容。版权所有,侵权必究。图书在版编目(CIP)数据由浅入深学C++:基础、进阶与必做300题/肖俊宇等编著. —北京:电子工业出版社,2011.7(由浅入深学)ISBN 978-7-121-13364-0Ⅰ. ①由… Ⅱ. ①肖… Ⅲ. ①C语言-程序设计-习题集 Ⅳ. ①TP312-44中国版本图书馆CIP数据核字(2011)第073085号策划编辑:胡辛征责任编辑:高洪霞 刘娴庆印 刷:北京东光印刷厂装 订:三河市皇庄路通装订厂出版发行:电子工业出版社北京市海淀区万寿路173信箱 邮编100036开 本:787×10921/16印张:37.5 字数:956.8千字印 次:2011年7月第1次印刷印 数:4000册 定价:69.80元(含DVD光盘1张)凡所购买电子工业出版社图书有缺损问题,请向购买书店调换。若书店售缺,请与本社发行部联系,联系及邮购电话:(010)88254888。质量投诉请发邮件至zlts@phei.com.cn,盗版侵权举报请发邮件至dbqq@phei.com.cn。服务热线:(010)88258888。

前 言

C++是近年广泛使用的程序设计语言,最主要的特点是支持面向对象的程序设计方法。在软件工业领域一直处于领先地位,在各个领域中有广泛应用。很多初学者对于学习C++语言都感到不能很快上手,不能自行编写C++程序。学习C++语言,必须经过大量的练习,多读程序、多写程序,才能有比较好的效果。通过阅读本书来学习C++时,读者不需要有任何编程经验。本书从入门开始,既介绍 C++语言,又讨论使用 C++进行编程涉及的概念。本书提供了大量语法实例和详细的代码分析,它们是引导读者完成 C++编程之旅的优秀向导。无论读者是刚开始学习编程还是已经有一些编程经验,书中精心安排的内容,都将让你的 C++学习变得既快速又轻松。笔者长期从事C++的开发工作,十分了解初学者在学习过程中的一些问题和困惑。本书的目的是为了让C++语言的初学者对于C++语言有系统和全面的认识。同时,为了让读者能够理解C++开发的核心思想,在讲解的时候尽量结合笔者的独特理解和感受,让读者能够举一反三。本书内容体系与学习梯度本书内容编写体例本书特色1.讲解细致体贴,适合初学者学习为了让读者更快地上手,本书特别设计了适合初学者的学习方式,用准确的语言总结概念,用直观的图示演示过程,用详细的注释解释代码,用形象的比方帮助记忆。2.内容全面系统,具有参考价值本书几乎囊括了C++的所有知识点,对C++的面向过程程序设计、面向对象程序设计、模板库、文件流等内容都做了具体讲解,对中高级读者具有参考价值。3.综合案例讲解,提高应用水平本书在讲解知识点时,贯穿了大量有针对性的典型实例,并给出了对应的开发技巧,以便让读者更好地理解各种概念和方法,体验实际编程,加深理解程度。4.操作练习丰富,巩固基础知识点本书的课后习题丰富并且都是具有操作性的系统,读者在阅读完章节知识点后,通过系统的实践,可迅速巩固并掌握基础知识点。本书内容及体系结构

第1篇 C++基础篇

(第1~12章)本篇主要内容包括:C++的基础知识、C++程序中的变量和数据类型、表达式和语句、流程控制结构、数组与字符串、函数以及函数的高级应用、指针与引用、宏和预编译及复合数据类型等。通过本篇的学习,读者可以掌握C++的基础知识点和C++面向过程开发流程。第2篇 面向对象编程篇(第13~21章)本篇主要内容包括:面向对象的开发及类的封装、继承、多态、运算符重载、输入/输出流、文件、类模板以及标准模板库STL。通过本篇的学习,读者可以掌握C++面向对象编程的核心概念和流程。第3篇 综合案例篇(第22章)本篇主要内容包括:程序调试与异常处理、人事管理系统的开发。通过本篇的学习,读者可以全面应用前面章节所学的开发技术进行软件项目开发,达到可以独立开发项目的水平。光盘说明为帮助读者直观地学习,本书附赠DVD光盘,内容包含数十小时多媒体视频、电子教案(PPT)、实例源代码、职场面试法宝等内容。适合阅读本书的读者● 没有任何语言学习经验的C++语言初学者。● 有志于成为C++语言程序员的读者。● 了解一些C++,但还需要进一步学习的人员。● 在某些需要使用C++编程的特殊领域的工作人员。● 有程序语言基础或正在学习数据结构需要参考C++语言的读者。第1篇 C++基础篇

第1章 C++概述

C++语言是近年来使用最为广泛的程序设计语言之一。C++语言是在C语言的基础上增加了面向对象程序设计的要素而发展起来的,它实现了由面向过程到面向对象的转变,全面支持面向对象的程序设计方法。本章主要内容有:● C++的发展沿革。● 如何入门C++。● C++编译环境C++源程序的基本组成元素● C++集成开发环境。● 一个完整的C++程序的实现过程。

1.1 引言

C++是一种使用非常广泛的计算机程序设计语言,其在我国的程序界中通常被读做“C加加”,而西方的程序员通常读做“C Plus Plus”(CPP)。C++是一种静态数据类型检查的、支持多重编程范式的通用程序设计语言,其支持过程化程序设计、数据抽象、面向对象程序设计、制作图标等泛型程序设计的多种程序设计风格。

1.1.1 C++的历史沿革

读者应该了解过 C 语言的发展历程,C 语言之所以要起名为“C”,是因为其主要参考当时的一门B语言,C语言的设计者认为C语言是B语言的进步,所以就起名为C语言。当C语言发展到顶峰的时刻,出现了一个版本叫C with Class,这就是C++最早的版本,它在C语言中增加了class关键字和类。C标准委员会决定为这个版本的C起个新的名字,当时征集了很多种名字,最后采纳了其中一个人的意见,以C语言中的“++”运算符来体现它是C语言的进步,因此在1983年将C with Class命名为C++,同时也成立了C++标准委员会。因此,C++语言起源于C语言。C++出现后,美国国家标准化协会ANSI(American National Standard Instiute)和国际标准化组织ISO(International Standards Organization)一起进行了C++的标准化工作,并于1998年正式发布了C++语言的国际标准。随后,各软件商推出的C++编译器都支持该标准,并有不同程度的拓展。因此,C++是具有国际标准的编程语言,通常称做ANSI/ISO C++。需要注意的是,刚诞生的C++和现在的版本有很大的区别。首先,当时还没有真正的C++编译器,C++代码都是先转化为C代码,然后用C编译器编译的;其次,当时的C++没有继承特性,没有关键字,也没有虚函数。经过了多次演变和修订,每次逐步增加一些新的关键字和新特性,最后才变成现在的C++。C++语言的诞生过程如图1.1所示。图1.1 C++的历史沿革目前可以认为标准化的C++语言包含了如下4个“子语言”。● C子语言:C++支持C语言的几乎全部功能,在语法上与C语言仅有极微妙的差别(如括号表达式的左右值性,具体请参考C++标准文献)。● 面向对象的C++:C++首先作为一门面向对象的语言而闻名,这个特点在这里不再详述。● 泛型编程语言:C++强大(但容易失控)的模板功能使它能在编译期完成许多工作,从而大大提高运行效率。● STL(C++标准模板库):随着STL的不断发展,它已经逐步成为C++程序设计中不可或缺的部分,其效率比一般的C++代码稍低,但是其安全性与规范性使其大受欢迎。在上述C++的组成部分中,C子语言是指C++作为C语言的超集,兼容了C语言的几乎全部功能,其同样具有结构化程序设计语言的特点。面向对象的C++子语言是指其支持的面向对象程序设计的功能,以类和对象为基本单元进行编程。这两部分是本书将要重点讲解的内容, C++的组成部分如图1.2所示。图1.2 C++结构图根据目前C++所包含的子集,编程界将C++语言的发展简单地划分为三个阶段。● 第一阶段:从20世纪80年代到1995年。这一阶段C++语言基本上是传统类型上的面向对象语言,并且凭借着接近C语言的效率,在工业界使用的开发语言中占据了相当大的份额。● 第二阶段:从 1995 年到 2000 年,这一阶段由于标准模板库(STL)和后来的Boost等程序库的出现,泛型程序设计在C++中占据了越来越多的比重。当然,由于Java、C#等语言的出现和硬件价格的大规模下降,C++受到了一定的冲击。● 第三阶段:从2000年至今,由于以Loki、MPL等程序库为代表的产生式编程和模板元编程的出现,C++出现了发展历史上又一个新的高峰,这些新技术的出现及和原有技术的融合,使C++已经成为当今主流程序设计语言中最复杂的一员。提示:就目前学习C++而言,可以认为它是一门独立的语言。C++并不依赖C语言,读者完全可以不学C语言,而直接学习C++。事实上,C++与 C 语言的效率往往相差 5%左右。所以有人认为在大多数场合,C++完全可以取代C语言,然而在进行单片机等需要谨慎利用空间、直接操作硬件的地方,还是应该使用C语言。

1.1.2 入门C++

C++是一门复杂的程序设计语言,仅仅语法、特性、标准类库就已经是一门非常高深的课程,所以在开始学习的时候,读者必须要打好基础。现今市面上有很多讲解Visual C++的书籍和教程,虽然它们可能会花1、2章来介绍C++的基本特性,但是那绝对不会让读者入门C++。因此,初学者学习C++时应该选择针对C++语言本身的书籍,而不能是针对Visual C++、MFC或者Windows API的。学习 C++应该由易至难,循序渐进。有的读者认为学习 C++之前应该学习 C 语言,否则无法学好C++。事实上,C++和C语言虽然有关系,但是两种不同的语言。当然,在学习C++之前学习过其他编程语言会使学习C++的速度更快,毕竟很多计算机语言的概念都是相通的。而对于零基础的初学者来说,则是应该静下心来学习,切勿急躁。读者知道,学习任何知识都必须从基础开始。掌握C++语法只是迈出了C++学习的第一步,学习程序设计最根本的原则是多练、多动手编写程序、多读源代码。只有多编写代码,才能达到熟练使用语言的目的,也能更深刻地理解语言的精髓。一般来说,对于C++的学习没有捷径可走,但是读者由入门到深入最后到精通,经过可持续学习并不断发展,概括起来可以经过如下的步骤来实现。学习一些基本的语言知识,如变量、函数等。C++语言入门,基本知识点的掌握。高等数学及工程数学的系统学习,结合实际了解并使用C++的各类常用的标准库;进一步理解C++的高级编程精髓,参阅计算机原理和数据结构方面的书籍。学习包括在各类操作系统下编程的必要知识,如Windows操作系统下的API,以及高效开发的MFC、VCL等其他知识。上述的每一个步骤都需要进行不断地知识点学习和实践操作。例如,在学习语言基本知识时,需要通过实例和上机调试,具体理解变量的定义、函数的调用等知识。总地来说,上述步骤可以通过图1.3来表述。图1.3 C++学习过程

1.1.3 编程思想的转变

经过前面章节的学习,读者知道C++是一种面向对象的程序设计语言,它体现的是面向对象的编程思想。事实上,与之相对应的程序设计领域有一种面向过程的编程思想,读者在具体学习C++之前应先了解这两种编程思想。简单地说,面向过程是一种以事件为中心的编程思想,而面向对象是一种以事物为中心的编程思想。传统的面向过程开发思想主要是通过功能分解的方式来实现,从系统高层入手,自顶向下,不断把复杂的处理分解为子过程。这样一层一层地分解下去,直到仅剩下若干个容易实现的子过程为止,然后用相应的工具来描述底层的各个过程。因此,面向过程的开发方法实际上建立在底层的各个过程上,如图1.4所示。图1.4 面向过程的软件结构由于目前大型的软件系统面临的问题是:需求模糊或需求变化较大,而传统的面向过程开发很难适应这种情况,从而导致软件开发周期较长、成本较高。因此,在进行大型的软件设计时,面向过程的软件开发方法存在着以下几个问题:● 重用性差。● 难以维护。● 难以适应需求变化较大的情形。在面向过程的开发思想中,用户需求的变化大部分是针对功能的。这种变化对于基于过程的设计是灾难性的,一旦中间某个过程出现变更,后续过程都必须做变更。这种变更的结果是软件质量得不到保障,软件也无法按时交付使用。用这种方法设计出来的系统结构常常是不稳定的,用户需求的变化往往造成系统结构的较大变化,从而需要花费很大代价。提示:在进行面向过程的软件开发时,如果其底层的过程发生变化,将影响到上层,原因就是其结构的层次性。面向对象(Object Oriented,OO)是当前计算机界关心的重点,它是90年代至今软件开发方法的主流。面向对象的概念和应用已超越了程序设计和软件开发,扩展到很宽的范围。例如,数据库系统、交互式界面、应用结构、应用平台、分布式系统、网络管理结构、CAD 技术及人工智能等领域。面向对象认为世界是由各种对象组成的,任何事物都是对象,复杂的对象可由较简单的对象以某种方式组成。由于面向对象的这种思想符合人们认识世界的观念,因此,面向对象程序设计一提出,就得到了广泛的支持,至今已应用到各个领域。面向对象的程序设计方法是以“对象”为中心进行分析和设计的,使这些对象形成了解决目标问题的基本构件,即解决从“做什么”到“怎么做”的问题。其解决过程从总体上说是采用自低向上的方法,先将问题空间划分为一系列对象的集合,再将对象集合进行分类抽象,一些具有相同属性行为的对象被抽象为一个类,类还可抽象分为子类、超类(超类是子类的抽象)。采用继承来建立这些类之间的联系,形成结构层次。如图1.5为一个类和对象的关系示意图。图1.5 面对对象思想提示:采用面向对象程序设计方法(Object Oriented Programming,OOP)进行程序设计,其本质上就是不断设计新的类和创建对象的过程。这两种编程思想可以通过公式来表示,面向过程的编程思想为:程序=算法+数据;面向对象编程思想为:程序=对象+事件。

1.2 C++概述

读者知道,C++是由C语言发展而来,与C语言完全兼容。C++在C语言语法的基础上做了扩充,最主要的是引入了类,增加了面向对象机制,如继承、派生、多态等。从而实现了由面向过程向面向对象的转变,支持面向对象的程序设计。

1.2.1 C++的特征

前面提到,C++是一种面向对象的程序设计语言。面向对象程序设计是一种程序设计方法,它模仿了人们建立现实世界模型的方法,基础是对象和类。在面向对象程序设计中,现实世界中客观存在的事物都称为对象,而具有相同特征的对象则可归纳为类。例如,张三是一个对象,而人则是一个类,如图1.6所示。图1.6 类与对象在C++中,对象是构成信息系统的基本单位,类(class)是对一组性质相同的对象的描述。简单地说,类是用户定义的一种新的数据类型,是C++程序设计的核心。由于C++是一种面向对象语言,因此面向对象程序设计的主要特征也是 C++的主要特点,具体如下。● 封装性:所谓封装就是将一组数据和与这组数据有关的操作集合组装在一起,形成一个能动的实体,也就是对象。C++中通过建立类这个数据类型来支持封装性。● 继承性:继承是指一个类具有另一个类的属性和行为。这个类既具有另一个类的全部特征,又具有自身的独有特征。C++中将其称为派生类(或子类),而将其所继承的类称为基类(或父类)。● 多态性:多态是指不同的对象调用相同名称的函数,并引发完全不同的行为。C++中的多态性通过使用函数重载、模板和虚函数等概念实现。近几年来,C++得到许多扩展,使其具有更多独有的特点。C++模板是近几年来对此语言的一种扩展,模板是根据类型的参数产生函数和类的机制,有时也称模板为“参数化的类型”。使用模板,可以设计一个对许多类型数据进行操作的类,而不需要为每个类型的数据建立一个单独的类。标准模板库(Standard Template Library,STL)和微软的活动模板库(Active Template Library,ATL)都基于C++语言扩展,这些在后续的章节中都将逐一介绍。

1.2.2 C与C++的比较

C++语言是对C语言的扩展,是C语言的超集。C++语言增强了C语言的能力,使得程序员能够提高编写程序的质量,并易于程序代码的复用。事实上,C++是一门混合型的语言,它既支持传统的结构化程序设计,又支持面向对象的程序设计,这是C++语言成功流行的一个重要原因。简单来说,C++与C完全兼容。C++既可用于结构化程序设计,又可用于面向对象的程序设计。C++对C的增强和扩展,主要表现在两个方面:● 在原来面向过程的机制基础上,对C语言的功能做了不少扩充。● 增加了面向对象的机制。具体来说,C++与C相比,其优点在于:● C++与 C 语言兼容,既支持面向对象的程序设计,也支持结构化的程序设计。同时,熟悉C语言的程序员,能够迅速掌握C++语言。● C++修补了 C 语言中的一些漏洞,提供更好的类型检查和编译时的分析。使得程序员在C++环境下继续写C代码,也能得到直接的好处。● C++生成目标程序质量高,程序执行效率高。一般来说,用面向对象的 C++编写的程序执行速度与C语言程序不相上下。● C++提供了异常处理机制,简化了程序的出错处理。利用throw、try和catch关键字,使出错处理程序不必与正常的代码紧密结合,提高了程序的可靠性和可读性。● C++函数可以重载。重载允许相同的函数名具有不同参数表,系统根据参数的个数和类型匹配相应的函数。● C++提供了模板机制。模板包括类模板和函数模板两种,它们将数据类型作为参数。对于具体数据类型,编译器自动生成模板类或模板函数,它提供了源代码复用的一种手段。

1.2.3 C++的应用领域

现阶段,计算机程序设计语言种类繁多,比较流行的有C++、C#、Java。C#和Java由于晚于C++出现,对C++的不足之处进行了改进,它们都很容易学习。采用C#和Java做项目开发的速度要比 C++快很多,因此得到了大力的推广。但是,C++作为有着 20 多年历史的程序设计语言,有着大量的技术沉淀,大量的专业人才,使得C++在现代软件领域中占据着举足轻重的地位。其应用领域如图1.7所示。图1.7 C++应用领域C++对于现在面向对象思想的成熟及在企业开发中的大量应用是功不可没的。但随着1995年网络时代的到来,以及Java语言的诞生,使得C++逐步进入一个尴尬的境地。由于没有跨平台以及网络应用的优势,在企业级应用开发中逐步被Java所替代。C#与 Java 由于在库的支持下大大简化了网络应用程序的开发,使得越来越多的人开始学习和使用 C#与 Java。但是 C++在灵活性和效率方面仍然占有很大优势。在大型应用软件的开发过程中,一般底层开发优先选择C++,这样可以使得底层平台有很高的效率,同时具有很大的灵活性。在软件拓展、移植维护上也有很好的表现。此外,C++在系统级复杂应用程序,高性能、实时、并行和嵌入式领域的应用中占据主导地位,同时在对灵活性和底层操作要求较高的软件开发中占据着绝对的优势。在一些由 C 或C++开发的传统软件中依然是开发者的首选。

1.3 C++源程序的组成

在具体学习C++的语法和应用前,读者首先需要对C++的基本组成元素等有一定的了解,它们是阅读和编写程序的基础,应掌握其各个部分的作用和写法。

1.3.1 基本组成元素

简单地说,一个标准的C++源程序主要由三个部分组成:注释部分、编译预处理部分和程序正文部分。其中,每个部分又有多种风格和组成元素,此处将通过一个具体的C++源程序来理解。下面是一个简单的C++源程序。上述程序是一个典型的C++源程序,其包含了C++源程序的三个组成部分。下面将这些组成部分一一列举。程序中的注释是程序设计者与程序阅读者之间通信的重要手段。注释能够帮助读者理解程序,并为后续测试维护提供明确的指导信息。因此,注释是十分重要的,大多数程序设计语言提供了使用自然语言来写注释的环境,为程序阅读者带来很大的方便。一般来说,C++的注释部分有如下两种编写风格。● 一对符号“/ *”与“* /”之间的内容称为注释。它可以占多行,是从 C 语言中继承来的一种注释形式,如上述代码中的第一行程序后的“/*预处理文件*/”即为该种注释形式。● 一行中符号“//”之后的内容也称为注释。它只能占一行,是C++语言特有的一种注释形式,如上述代码中的“//主函数”和“//输出”均为该种注释形式,本书将主要使用“//”引导的注释形式。注意:注释在源程序中不被编译执行,其作用只是提高程序的可读性。但是,注释也是程序中非常重要的组成部分,尤其对于结构功能较为复杂的源程序是必不可少的。程序中的编译预处理命令是指在编译时,最先被编译的一类程序语句。C++的编译预处理命令以“#”开头。C++提供了三类编译预处理命令:宏定义、文件包含和条件编译。如上述代码中的第一行语句#include即为一个编译预处理命令,它是一个文件包含命令,这部分内容将在后续章节中做详细介绍。程序主体是指用函数组织过程,每个相对独立的过程都要组织成一个函数;不同的程序由不同的函数按层次结构组织而成。一个C++程序至少且仅包含一个main()函数,也可以包含一个main()函数和若干个其他函数。其他函数可以是系统提供的库函数(例如,printf()和 scanf()函数),也可以是用户根据需要自己编制设计的函数。上述C++源程序的组成部分如图1.8所示。图1.8 C++源程序的基本组成C++源程序由ASCII码组成类似单词或词组的单元(词法单元),可以用任意的文本编辑器编辑,源代码中的空白(空格、Tab、回车换行)用来表示词法单元的开始和结束,除了该功能外其余空白将被忽略,但如果是字符串内部的空白(不含回车换行,或者说字符串内不能直接回车换行,需要使用转义符)将作为字符串的一部分输出,不会忽略。

1.3.2 标识符

标识符是程序员定义的词法符号,用它来命名程序中的一些实体。常见的有函数名字、类名、变量名、常量名、对象名、标号名、类型名等。C++规定标识符由大小写字母、数字符号和下画线组成,并且第一个字符必须是字母或下画线。在C++中定义标识符需要遵循一定的规则,主要如下:● 标识符长度没有限制,但不同的编译系统有不同的要求,一般不超过31个字符。● 第一个字符必须是字母或下画线。● 标识符中大小写是有区别的。XY、xy、xY、Xy都是不同的标识符。● 标识符定义时应尽可能使用有意义的单词。● 标识符不能与关键字相同。● 中间不能有空格。一般来说,标识符的有效长度为 32。也就是说,长度超过 32 个字符的标识符,若前 32个字符相同,那么认为是同一个标识符。注意:定义标识符时不能使用 C++语言中的保留字,如 if、for、int 等都不能用做标识符。C++的保留字将在下面予以介绍。

1.3.3 保留字

在C++程序中,保留字又称为关键字,是有特定含义的单词,这些标识符对C++编译程序有着特殊的含义。对于保留字,在编程时不能用于其他用途。表1-1中列出了常用的保留字,其含义和用法在相关的章节中再做详细介绍。表1-1 C++常用保留字说明:读者在定义标识符的时候,不能定义与表1-1中同名的标识符,否则在程序运行时将出现错误。

1.3.4 符号

每种语言都有自己的一套符号。符号是组成程序的基本单位,它是由若干字符组成的具有一定意义的最小单元,如标识符、保留字、运算符、分隔符、常量及注释符等。这里组成符号的字符必须是这种语言字符集中的合法字符。在C++中规定了一个自己的字符集,其组成词法的基本符号主要有以下三类。● 字母:大小写英文字母,A~Z和a~z共52个符号。● 数字:数字字符,0~9共10个符号。需要注意的是,在上述特殊符号中,逗号、分号等符号又称为分隔符,是用来分隔单词和程序正文的符号。C++中常用的分隔符有以下几种。● 空格符:用来做单词之间的分隔。逗号:在声明变量时用来分隔多个变量。分号:作为语句结束时的标记。在for语句后面括号中三个表达式也用到分号。冒号:用做语句标号,在switch语句中也会使用到。{}:用来构造程序。

1.4 C++集成开发环境——DEV-C++

由于C++是一种程序设计语言,如果要使用C++进行程序开发,必须要有编译环境。目前,市面上较为流行的C++编译器比较多,本节将为读者介绍几种常用的编译器和本书采用的编译器——DEV-C++及其集成开发环境。

1.4.1 选择C++编译器

选择一款方便易用、性能优良的编译器能够大大提高初学者学习C++的效率。目前,C++编译器种类繁多,基于Windows平台和Linux平台的都有,比较著名的是Borland公司推出的Borland C++、Microsoft公司推出的Visual C++、GCC家族的DEV-C++等。其中,Borland C++和Visual C++都是企业级的开发工具,包含了庞大的工具包和模板。而DEV-C++是一款纯粹的C++编译器,简单易用,编译效果较好。C++语言的体系十分庞大,对于初学者来说,单就语法本身就已经非常复杂了,更何况应用领域甚广,需要学习了解的东西非常多。因此,一定要先把语言基础打好,把语言用熟,基于如上考虑,本书推荐初学者使用GCC家族的DEV-C++编译器。DEV-C++的具体优势在于:● DEV-C++软件小而全。DEV-C++的压缩包只有不到 10MB,解压安装之后占用硬盘空间很小,占用的资源较小,方便初学者安装调试。● DEV-C++符合 ANSI C++标准。DEV-C++的内核是著名的GCC 编译系统,其质量高,稳定性好,编译效率高。例如,完全相同的C++控制台程序在DEV-C++下编译只有70KB左右,但是在 Visual C++下编译就达到了 500~600KB。● DEV-C++查错能力强。● DEV-C++使用简单。这也是选用DEV-C++的一个重要原因。使用Visual C++建立工程之后,在对应的文件夹下面有大量的目标文件,感觉比较杂乱。DEV-C++没有这么多文件,一个源程序对应一个可执行文件,简单清晰、便于整理。事实上,Visual C++和Borland C++都是非常强大的工具,熟练使用它们可以快速开发出很多功能强大的软件,很值得读者学习了解。但是,初学者在开始阶段主要是想学习C++语言本身,功能过于强大的开发工具往往提供了很多暂时还不需要的功能,而把时间精力都花在这些工具的学习上不利于初学者迅速掌握C++语言本身。此外,如果对C++了解很深入、基础十分扎实后,再学习Visual C++和Borland C++就会事半功倍。

1.4.2 安装DEV-C++

基于如上考虑,在本书中采用 DEV-C++作为 C++的编译器。下面将具体介绍该编译器的安装和集成开发环境。目前,DEV-C++的最新版本为5.0,为体现ANSI C++的最新标准,此处采用DEV-C++ 5.0作为编译器,其内核为4.9.9.2。本书中涉及的所有C++源程序都是在该编译器下调试运行的。DEV-C++ 5.0的安装非常简单,将压缩包解压后直接运行其中的exe文件即可开始安装。其开始安装界面如图1.9所示。在图1.9中选择语言后单击“OK”按钮,进入安装界面向导。在向导的第一步中要求用户选择需要安装的DEV-C++组件,默认安装所有组件,如图1.10所示。图1.9 开始安装界面图1.10 选择安装组件在选择好安装组件后单击“下一步”按钮,需要用户选择安装路径,其他设置与一般应用软件的安装类似,此处就不再赘述。当完成所有用户设置后,安装程序开始复制文件,如图1.11所示。图1.11 安装程序复制文件当所有文件都复制完成后,DEV-C++的安装就结束了。此时单击“完成”按钮即可完成所有的安装过程,并可以打开DEV-C++ 5.0的集成开发环境。

1.4.3 DEV-C++ IDE简介

在完成DEV-C++ 5.0的安装后,就可以开始运用DEV-C++的IDE(集成开发环境)来进行C++程序设计了。为了使读者在以后章节更好地调试程序,本节将就DEV-C++的IDE中菜单和快捷键做简要介绍。当打开 DEV-C++后,可以看到其 IDE,包括菜单栏、工具栏、多页面窗口、工程编辑器及调试器等,如图1.12所示。在工程编辑器中集合了编辑器、编译器、连接程序和执行程序,提供高亮度语法显示的,以减少编辑错误,还有完善的调试功能。一般来说,使用 DEV-C++来调试运行 C++源程序,主要是通过菜单项和工具栏来完成所有的编译、运行等操作。此外,DEC-C++可以让用户自主选择编译参数、编辑器参数、环境的相关参数和快捷键。例如,图1.13所示为用户选择【工具】|【环境选项】命令打开的对话框。图1.12 DEV-C++ IDE图1.13 【环境选项】对话框通过如图1.13所示的【环境选项】对话框,读者可以自主设置DEV-C++ IDE的基本运行环境、用户界面和默认存储路径等。此外,DEV-C++还提供很多人性化的设置,在后续的章节中将陆续介绍,此处就不再赘述。

1.5第一个C++程序——Hello World

为了让读者更好地理解DEV-C++的使用和C++源程序的组成,本节给出第一个C++程序代码“Hello World”,即在用户屏幕上输出“Hello World”的字样。同时,本节将介绍DEV-C++中C++源程序的编辑、编译和运行等步骤的实现。

1.5.1 创建源程序

C++源程序可以在DEV-C++中创建,打开DEV-C++集成开发环境,选择【文件】|【新建】命令,可以新建C++源程序或工程。此处选择【源文件】命令,DEV-C++将自动打开C++编辑器,供用户进行C++源程序的编辑,如图1.14所示。图1.14 创建C++源程序需要注意的是,DEV-C++默认打开的是 C++编辑器,而不是 C 编辑器,如在编辑区中要输入C语言源程序,需要先进行相关设置。在上述编辑区中输入如下程序代码。在上述代码中为运行该程序需包含的预处理文件;usingnamespace std 是定义命名空间;main()函数为主函数;cout 语句为输出语句,用于在运行后输出“HelloWorld”字符串;endl为换行符。事实上,也可以在文本编辑器中输入如上代码,在保存该文本文件时,将其扩展名设置为.cpp,随后再用DEV-C++打开,其创建效果是相同的,如图1.15所示。图1.15 文本编辑器创建C++源程序

试读结束[说明:试读内容隐藏了图片]

下载完整电子书


相关推荐

最新文章


© 2020 txtepub下载