易学C++(第2版)

978-7-115-44779-1
作者: 潘嘉杰
译者:
编辑: 张涛
分类: C++

图书目录:

详情

这是一本C++的入门基础书。由于很多高校学生和部分自学者没有程序设计基础,很难掌握C++这门比较复杂的语言。本书从编程零基础开始,教会读者如何学好C++。并且将很多常用而难以成文的技巧写出来,更快地提高读者的编程能力,帮助他们入门。书中的语言通俗易懂,常以形象的比喻和插图来解释C++的语法现象和各种概念,使读者印象深刻。

图书摘要

版权信息

书名:易学C++(第2版)

ISBN:978-7-115-44779-1

本书由人民邮电出版社发行数字版。版权所有,侵权必究。

您购买的人民邮电出版社电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。

我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。

如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。

• 主  编 潘嘉杰

  副 主 编 刘春华 金定毅

  责任编辑 张 涛

• 人民邮电出版社出版发行  北京市丰台区成寿寺路11号

  邮编 100164  电子邮件 315@ptpress.com.cn

  网址 http://www.ptpress.com.cn

• 读者服务热线:(010)81055410

  反盗版热线:(010)81055315


本书是为C++程序设计学习者量身订做的辅导书。

全书分为3篇。前篇介绍了面向过程的程序设计,主要有基本语句、语法基础、函数机制和数据类型等内容。中篇介绍了一些实用编程技巧,内容包括阅读代码、调试程序、异常处理和简单的编程思想。后篇介绍了面向对象的程序设计,主要有类和对象、对象生灭、友元、继承、标准模板库(STL)等内容。书中常以形象的比喻来解释程序设计中的概念,通俗易懂,令读者印象深刻,能更快地进入C++程序设计的大门。

本书的内容涵盖了绝大部分常用的C++知识,可以作为大学计算机专业或非计算机专业的程序设计入门教材,也可供计算机爱好者自学使用。


计算机已经成为人们日常生活中不可或缺的工具。随着计算机技术的飞速发展,现在工作、学习与生活的方式和过去相比有了很大的变化,社会对人们计算机水平的要求也日益提高。作为一名大学生,特别是理工科的大学生,应该能熟练地掌握各种计算机方面的理论与技能,而程序设计就是其中的重要一项。

与很多传统学科相比,计算机是一门比较新兴的学科。我们对它的教学方法和教学形式还在不断探索中。况且计算机技术的更新速度很快,计划永远赶不上变化,所以教师和学生都要有“活到老,学到老”的心理准备。在教学过程中,教和学应该是相辅相成的。钱伟长校长提出要拆除四堵墙,其中之一就是要拆除教与学之间的墙。教师要主动去了解教学的理念、方法与效果,学生也可以向教师提出各种建议和意见。我们希望能有更多人参与到“教和学”的探讨中来,寻求计算机专业的教学精髓。

当我听说我们学院的潘嘉杰同志写了一本程序设计教程,我先是一阵惊喜,却并不出乎意料。潘嘉杰是一位勤奋好学、善于探索、敢于实践的同志。他不仅在程序设计方面刻苦钻研,而且还是一位出色的程序设计普及教学志愿者。他的这本《易学C++》出版前,曾在上海一些学校试用并免费放在网上供网友试读,得到了很多学习者的喜爱和广泛的关注,上海《新闻晚报》还特意给予报道。《易学C++》这本书不仅仅是程序设计的入门教程,也是一位成功掌握程序设计的程序员的经验之谈。它形象生动、通俗易懂,尤其那些贴近生活的实例并不是其他同类书本中能找到的。相信大家选用它作为入门教程,能够在学习过程中少走很多弯路。

我们也期待,能有更多形象生动、通俗易懂的高质量计算机科学读物问世,共同为更广泛地普及计算机知识而努力。

上海大学 计算机工程与科学学院

党委书记 徐炜民 教授


本书旨在帮助读者学习如何使用C++进行编程。在编写此书的过程中,作者始终遵循“不要一下子把什么都说出来,而是循序渐进地增长读者能力”的原则。这样,读者就不会一下子被众多难以接受的概念吓住,以至于失去了继续学习的信心。作者将抽象的理论通俗化讲解,使它成为一个友好的、便于使用的指南;通俗化了的概念再实例化,突出了本书的实践性学习本质。从而向读者传达这样一个信念:任何人都可以把快乐融入到编程语言C++的学习之中。

本书内容编排上独具匠心,依照过程化的程序设计、实战程序设计、面向对象的程序设计的次序讲解,让初学者更容易上手。学习程序设计是一个循序渐进的漫长过程,在短短的时间内很难完全掌握。若在内容上求精求全,更是难上加难。对初学者来说,知道得越多往往就越是迷茫。所以本书将不常用的技术知识略去,添加了一些常用的算法介绍和可能与后继课程有关联的知识,以帮助大家更快地掌握高级语言程序设计的精髓。

本书的初稿曾在上海一些学校试用,得到了很多学习者的喜爱和广泛的关注,上海《新闻晚报》特意报道,下面是摘自该报纸的报道:

1.本书从初学者的角度讲解C++,降低了C++的学习门槛,是一本编程基础零起点的好教程。通过在网站上提供试读,本书已经得到广大C++编程爱好者的强烈响应和支持。

《易学C++》在各大编程论坛反响强烈,部分转载网站如下:

http://www.programfan.com/club/post-128283-1.html
http://www.programfan.com/club/post-128840-1.html
http://download.csdn.net/source/227661
http://bbs.bc-cn.net/dispbbs.asp?boardID=56&ID=37649&page=1
http://www.shubulo.com/viewthread.php?tid=32915

2.书中的语言通俗易懂,常以形象的比喻和插图来解释C++的语法和各种概念,便于读者理解。书中介绍的大量实用技巧也是一项特色,介绍的程序阅读、调试技巧和编程思想,是市面上同类书籍少有的。

本书的定位是C++程序设计的入门教材,读者不需要有任何编程经验。本书既介绍C++语法,又讨论使用C++进行编程涉及的概念,并提供了大量实例和详细代码分析,是引导读者开始C++编程的优秀向导。无论读者是刚开始学习编程,还是已经有一些编程经验,书中精心安排的内容都将让你的C++学习变得既快速又容易。

程序实例:除少数程序出于教学需要无法通过编译外,其余程序均是完整的代码,在Visual C++ 6.0下通过编译,并能正常运行。

小提示:提醒读者应该注意的各种细节。

试试看:鼓励读者上机试验,以得到深刻的结论。这些结论将对以后的学习有所帮助。建议有条件的读者一定要去努力尝试,没有条件的读者则需牢记书中给出的结论。

算法与思想:介绍程序设计的常用算法和思想。大多数情况下,一个程序就是把各种算法以不同的形式搭建起来。如果能够掌握这些算法,不论是对阅读别人的代码还是对自己设计程序都有很大的帮助。

习题:帮助读者巩固已经学习的知识。如果读者已经完全掌握了章节中的知识,那么完成这些习题也不会有困难。

编程环境:书中程序主要使用的编译器是微软公司的Visual C++ 6.0,对于其他编译器不作讨论,以免初学者把各种概念混淆起来。

友情提示:如果您是一位初学者,请务必要看到本书的每一个角落。您未阅读到的一句话,有可能是一个关键的知识点。

感谢上海市市北高级中学金缨老师、顾梦伟老师传授我许多程序设计的知识。她们在课堂上的实例仍时常在我脑海中浮现,为我的创作带来灵感。

感谢已故恩师——上海大学计算机学院陈毛狗老师,是他生前兢兢业业地教书育人,助我跨入了C++的大门。

感谢上海大学计算机学院赵正德老师、周叔望老师在C++语言和数据结构方面给予我诸多指导。

感谢上海大学计算机学院徐炜民老师、沈云付老师、金翊老师、吕俊老师长期以来对我写作的关心和支持。

感谢上海市北郊高级中学周一民老师在本书作为教材试用期间提出了许多宝贵的建议。

感谢上海大学机自学院陈晨同学为本书的早日出版作出了很多努力。

感谢我身边的亲人、老师、同学、朋友、网友对我写作的支持和鼓励!

由于写作时间仓促,加之水平有限,书中难免有疏漏或错误,希望各位专家、老师、同学能够不吝赐教。如果您对本书有什么建议或者意见,请发送邮件到zhangtao@ptpress.com.cn。

作 者

2008年3月

于上海大学

① 在本书第2版中,将主要使用主流的Visual Studio 2012集成开发环境,但同时介绍了Visual C++ 6.0、Dev-C++等开发环境。程序代码也尽可能符合最新的C++标准,使运行结果与编译器无关。对于更“古老”的编译器,本书中不再讨论。


自《易学C++》出版以来,已经有八个年头了。这八年来,热心的读者通过电子邮件、QQ等各种方式提供了诸多宝贵的建议。相比当初编写《易学C++》时,C++这门语言本身也是在不断地改进和完善。尽管老掉牙的Visual C++ 6.0还在校园里发挥余热,但在大多数企业里都已经难觅踪迹。相比C#等更“时髦”的高级语言提供的诸多便利,当年红极一时的C++还真显得不那么好用。就连去书店里找一本讲MFC的书也都不容易找到了。这就是现实,计算机技术就是在发展。不论是读者还是作者,都要顺应时代的潮流,把握市场的需求。

相比于《易学C++》第1版,本书主要做了以下一些改进。

计算机学科的领域非常广泛,想在课堂上学到所有的知识根本不可能。对于这门学科来说,理论是基础,兴趣是关键。希望本书中与众不同的讲解和比喻能够帮助一些在计算机学科前长期徘徊的朋友尽快找到感觉。这种感觉不仅仅是正确的学习方法,更重要的是对这门学科发自内心的热爱。

本书配套提供了教学课件、Visual Studio 2012下的源代码以及参考答案,请访问http://www.tomatostudio.net.cn/下载或通过二维码访问获取。

《易学C++》第2版由多位上海大学的好友参与修订。其中,金定毅完成第6、7、8、9章的修订,刘春华完成第10、11、12、13、19、20章的修订。潘嘉杰完成其余章节的编写、修订及全书的统稿和校对。在此感谢团队成员放弃自己的休息时间,以及辛勤的付出,使本书能够早日面世。

最后要感谢所有读者。没有你们的支持,无论什么样的作品都不会出彩,本书读者答疑QQ群为282558995。

如果读者对本书有任何评论或建议,欢迎致信作者邮箱author@tomatostudio,net.cn。

潘嘉杰



本章主要讲述学习程序设计前需要了解的一些知识和学习程序设计的方法,并且对C++作了简要的介绍。通过阅读本章的内容,可以激发读者学习C++的兴趣。虽然本章没有介绍任何C++的编程技巧,但却充满了各种基础概念。学好本章,对日后的学习能够起到事半功倍的效果。

本章的知识点有:

计算机改变着我们的世界,互联网改变着我们的生活。不断发展的多媒体技术(Multimedia)、虚拟现实技术(Virtual Reality)、网络技术(Network)给一批批70后、80后和90后打上了鲜明的烙印。20年前的大学生尚且只能通过收音机和电视机来打发学校里的时间;15年前的大学生有幸经历了刺蛇对狂徒的鏖战;而如今,大家都在拿着随身的小型计算机——手机刷着微博和朋友圈。随着计算机的普及,越来越多的人开始对计算机本身感兴趣。而其中最多的就是对“编程”感兴趣的技术爱好者。计算机之所以能够实现各种让人不可思议的功能,主要还是归功于软件工程师赋予了它智慧。如果你的计算机用了3年,你会发现芯片还是那个芯片,硬盘还是那个硬盘,但你的操作系统可能从Windows XP变成了Windows Vista,接着是Windows 7、Windows 8、Windows 10。

其实,我们平时对计算机进行的操作是在与计算机软件(Software)打交道。计算机之所以能够帮助人类工作,离不开软件的支持。打一个比方,计算机的各种硬件设备(Hardware)就像是人的身体,而软件就像是人的灵魂。少了软件这个灵魂,那么计算机只是一堆废铜烂铁。人们通过编写一款软件,来教会计算机做一些事情,像Windows、Word、QQ甚至游戏都是软件。

一个软件,往往是由若干个相关的程序(Program)、运行这些程序所需要的数据和相关文档(如帮助文档)等多个文件组成的。因此,要设计出一款软件,就必须从程序设计开始。那么,程序是什么呢?

那么,软件和我们所说的程序(Program)又有着什么样的关系呢?首先,要弄清什么是程序。

从初学者比较容易理解的角度说,程序是计算机执行一系列有序的动作的集合。通过一个程序,可以使计算机完成某一类有着共同特点的工作。如求解一个一元二次方程,或是找出一组数里面最大的一个数。所以,学会了程序设计,就是学会了用计算机解决各种问题。

小提示

 

传统的计算机学科将软件分为两大类:系统软件和应用软件。系统软件通常包括操作系统(Operating System)、数据库管理系统(Database Management System)和编译系统(Compile System),其中操作系统是计算机运行不可缺少的软件。系统软件为计算机最基本的管理、资源分配和任务调度功能提供支持。应用软件比较多,办公软件、通信软件和游戏都属于应用软件的范畴。除了系统软件和应用软件,现在还在它们之间发展起了一种叫中间件(Middleware)的软件。

很多初学者会不解:程序设计到底是要做什么呢?我们该如何教会计算机解决问题呢?

其实,要解决一些看似不同的问题,可以归结为一种确定的过程和方法。这种能够在有限的步骤内解决一类问题的过程和方法称为算法(Algorithm)。下面以解一元二次方程为例,介绍求解的算法步骤。

(1)输入二次项系数a,一次项系数b和常数项c;

(2)计算△=b2-4ac;

(3)判断△的大小,如果△≥0,则有实数解,否则就没有实数解;

(4)如果有实数解,就利用求根公式求出两个解;

(5)输出方程的两个实数解,或告知无解。

以上便是用自然语言描述的求解一元二次方程的算法。程序设计所要做的就是探求这种能解决一类问题的算法,并且将这种算法用计算机能够“看懂”的语言表达出来。

想要学好程序设计,最重要的是具有清晰的逻辑思维能力。一个程序员可以把生活中任何细节都归结为一个确定的过程和方法。例如,一个人回家,通常需要经过以下步骤。

(1)进入小区;

(2)进入所在的单元(楼房);

(3)如果电梯没有坏则乘电梯,否则就走楼梯;

(4)用钥匙打开房门。

这些步骤仍然是非常粗略的。可以对每一个步骤进行细化,直到细化为每一个具体的动作。这与程序设计也是非常相似的,当一个算法已经细化到最详细的程度,就能与程序的“语句”(Statement)一一对应起来。将这些语句按顺序组织起来,便基本完成了程序的设计。

小提示

 

所谓语句,就是在程序设计中要编写的代码。这些代码以文本方式存在,并且其组成遵循一定的规则,即语法。与自然语言相比,计算机语言中的语法相对比较“死板”。如果在设计程序时不遵守语法规则,那么计算机可能无法正确理解程序员的意图。

计算机无法懂得人类的自然语言,它有着自己的语言。计算机中最原始的语言是机器语言,这也是计算机唯一能够读懂的语言。它纯粹是由“0”和“1”组成的一串数字。这样的语言冗长难记,对一般人来说实在难以入门。接着又发明了汇编语言。机器语言指令变成了人类能够读懂的助记符,如ADD,MOV。然而,用汇编语言编一个复杂的程序仍然显得有些困难。为了能够让计算机的语言更通俗易懂,更接近人类的自然语言,于是出现了高级语言,比较著名的高级语言有Basic、Pascal、C++、Java和C#等。本书中所说的程序设计是指高级语言的程序设计。

学习程序设计之前,选好一种语言是十分有必要的。如果你是一名初学者,那么你选的语言并不需要有很强大的功能,但要能很快地让你适应、让你入门;如果你想将来从事软件设计工作,那么你务必要选一种比较符合潮流,并且有美好前景的语言。

如图1.1所示,本书主要选择微软公司(Microsoft)Visual Studio 2012环境下的C++作为教学语言,一方面是因为它是时下流行的高级语言,与Java、C#也有很多共通之处,另一方面是因为它既能够实现结构化程序设计,方便初学者入门,又能够用于现今流行的面向对象的程序设计。因此,当你学完了C++之后,便已经具备了多种计算机语言的基础。

图1.1 微软Visual Studio 2012

或许不少人对计算机逐渐感兴趣,都是源于接触了一些优秀的游戏或者软件,我也是。当我还不知道程序设计是什么的时候,也曾幻想能够做一款像“红色警戒”那样令人兴奋的游戏,或是编出另一个操作系统,挑战一下Windows的霸主地位。不过,很遗憾地告诉大家,光靠本书中所介绍的C++内容是不可能开发出让人眩目的3D游戏,更不可能开发出一个图形化的操作系统。但是,一个会编游戏或软件的程序员必然对本书中的内容了然于胸,因为这些都是C++语言的基础。尽管如此,为了增加本书的趣味性,笔者还是在适合的章节处安排了一些初学者力所能及的小程序,以达到抛砖引玉的目的。

C++语言广泛应用于各种软件的开发。事实上,Windows下的应用软件也有不少曾经是用C++编写的(现在也有不少使用C#或者Java)。例如,用控制台可以编写计算量较大的科学计算程序;用MFC或WinForm类库可以编写中小型企业的内部管理软件;用图形应用程序接口可以编写3D游戏,或游戏机模拟器;利用C++能够接触系统底层的特点,可以编写优化软件让计算机的运作效率大大提高;利用C++可以与内存打交道的特点,可以编写游戏修改器;用C++还可以编写各种手机游戏。总而言之,C++的功能是非常强大的,而且强大得很低调。

由于C++是面向对象的高级语言,用它面向对象的特性来开发软件可以大大减少重复的工作,使设计程序变得更为轻松。例如当编写一个Windows窗口程序时,程序员不必去考虑窗口如何显示的细节,而只需要将大小和位置等信息编入代码即可。因为每个窗口都是相似的,没必要去做重复的工作。

图1.2所示是上海大学一位校友陈迪锋的作品。该赛车游戏约有1万行代码,使用了Visual C++和多个游戏引擎。要做成这样的游戏,并不是件容易的事情。没有扎实的C++基本功和多年来长期的坚持学习,很难有这样的成果。

图1.2 用Visual C++和多个引擎开发的3D赛车游戏

为了降低学习的难度,本书主要介绍C++的语法特性以及如何编写控制台应用程序。控制台应用程序是C++程序设计的基础,涵盖了C++程序设计的大部分知识。而学习更多编程知识之前也必须掌握C++的语法特性和控制台应用程序。

控制台应用程序是一种基于字符方式的人机界面,即用户主要通过键盘来向计算机输入信息或发出指令。这与Windows下的命令控制行相似,是一种最基本的交互方式。图1.3所示是一个典型的控制台应用程序。

图1.3 典型的控制台应用程序

在学习C++之前,有必要了解C语言、C++语言和Visual C++之间的关系。

C语言是一种高级语言,它诞生于20世纪70年代。虽然它已经存在了四十几年,但至今依然被广泛运用和学习。C语言的大多数语法也被沿用到C++、Java和C#等语言中去。因此,在对计算机语言的技术路线进行分类时,通常把C语言和C++放在一起,称为C/C++。C语言是一种结构化的语言,它的执行效率很高,并且易于移植。但是,C语言自身并不具有面向对象的特性,因此在开发大规模的程序时会遇到些许困难。

C++语言也是一种高级语言。在设计之初,它的确是由C语言发展而来。C++语言能兼容C语言,并在这个基础上添加了重载和面向对象等特性。1998年,C++的标准被制定出来。平时所称的C++一般就是指符合该标准的C++语言。直到现在,这个标准已经发布了第四个版本,即ISO/IEC 14882:2014。需要注意的是,不能简单地认为C++就是C语言的升级版。在学习C++的过程中,也要时刻牢记C++和C是两种不同的语言,不能将它们混淆。

在1.3节介绍了计算机语言是从机器语言、汇编语言到高级语言慢慢发展起来的。并且,计算机只能读懂人们难以掌握的机器语言。这时候就需要有一个翻译器,帮助把较接近自然语言的高级语言翻译成机器语言。这个翻译器叫做编译器(Compiler),它是一种软件。

如图 1.4 所示,Visual C++是微软公司提供的一个 C++编译器和集成开发环境(Integrated Development Environment),它是一款软件,所以VC++和C++是两个不同的概念。集成开发环境给程序员提供了设计程序时必要的各种功能和工具。即使是一位初学者,也只要输入一些代码,点几下鼠标就能设计出一个简单的程序来。目前微软公司已经将C++等几种高级语言的开发环境全都融合到了Visual Studio中。

图1.4 古老的Microsoft Visual C++ 6.0

学习方法——四“多”一“有”。

(1)多看:多看别人写的程序,从简单的程序看起,揣摩别人的思想和意图。

(2)多抄:挑选难度合适的完整代码,亲自去尝试一下运行的结果。在不断借鉴别人代码的过程中,你的思维会升级。

(3)多改:正所谓“青出于蓝胜于蓝”,把自己的思想融入别人的思想中,那么你就得到了两种思想。

(4)多实践:不要用纸和笔来写程序。没有人能保证那样写出来的程序一定能执行。一定要勤上机、勤测试,你的水平才能真正提高。

(5)有好习惯:一名优秀的程序员应该有自己良好的风格习惯。至于这些良好的习惯如何养成,在以后的章节中会陆续介绍。

必要准备——五“要”。

(1)要有一定能学会的信心和坚持到底的决心。

(2)要有足够的时间去经常写程序,经常实践。长时间不写程序,水平就会退步。

(3)要有良好的身体素质。做程序员很伤身体,废寝忘食更是家常便饭。

(4)要有一定的计算机常识和实践操作基础。

(5)要有计算机和相关软件。

在学习C++语言之前,不少初学者就已经有了很多疑问,这是件好事。在正式学习之前对所学的内容和整个过程有一个大致的了解有助于安排学习的进度和深度。因此,下面罗列了初学者的常见问题,并根据笔者的经验给出了答复。如果您没有以下这些问题,那么可以跳过本章节,避免引入过多的新名词而产生困扰。

 

问题1:学习C++大约需要多久?有些书籍上说几十天就能学会C++这是真的吗?(来自网友E-mail)

回答:在高校中安排的C++课程约为半年至一年,但事实上要精通C++,这点时间是远远不够的。C++并不只是一门简单的计算机语言,而是逐渐形成了一个学科体系。要熟练运用C++,做出界面美观、功能强大的程序,还必须对数据结构、STL、设计模式等各个专题进行深入学习。因此,学习C++所需时间取决于学习者本身的基础和期望达到的学习效果。如果一位零基础的初学者要掌握C++语言本身的所有特性,1~2年的时间是比较正常的。至于说几十天能够学会C++,对于已经精通其他计算机语言的学习者来说也是可能的。

 

问题2:学习C++需要什么样的数学和英语水平?学历较低可以学C++么?(来自网友留言)

回答:学习程序设计必然会用到数学和英语。至少输入的代码基本都是英文字母,我们要用的算法多少和数学、逻辑学有些关系。因此,彻底没有数学和英语基础就学习程序设计真的很困难。一般认为,有初中或以上的数学和英语基础就可以学习程序设计了。在现实中,很多中学生已经成为了编程高手。如果已经忘记以前所学的数学和英语知识,建议略花一些时间去回顾一下。数学和英语对学习程序设计还是有莫大的裨益。数学能够锻炼一个人的逻辑思维能力,使接受算法的速度更快;英语则有助于学习者看懂计算机的反馈信息、阅读更多原版的技术资料。

 

问题3:以前学习过程序设计,时间长都忘记了,现在不从事计算机行业。随着年龄增加,学习能力和记忆力都可能有所减弱,这样能学习C++吗?(来自网友E-mail)

回答:学习能力和记忆力的确会随年龄受到影响。但是学习C++本来就是一个周期相对较长的过程,最重要的是保持学习的热情和耐心。C++语言的基础部分已经基本固定,不会经常发生重大变化,因此即使年龄稍大,经过努力后掌握C++是完全可能的。

 

问题4:很多网友说学习C++之前要学C语言,是这样吗?(来自网友留言)

回答:在1.5节中已经说明,C语言的部分语法的确与C++相似甚至相同。如果有C语言的基础学习C++肯定会更快。但是,这并不意味着学习C++之前必须要学C语言,而且对于初学者来说在短时间内接触这两种语言反而会造成部分概念的混淆。因此,如果你的目标是C++而不是C语言,那么不必特意在学习C++之前先去学C语言。

 

问题5:现在学习C++主要有哪些集成开发环境?哪个最适合初学者?(来自网友E-mail)

回答:首先需要说明的是,集成开发环境和编译器又不是一回事情。通常集成开发环境可以搭配一种或多种编译器。编译器的功能是将C++源程序转变成可执行的程序,而集成开发环境则是一系列代码编辑、调试和管理工具。目前Windows操作系统下使用比较广泛的集成开发环境有微软的Visual Studio(包括6.0版、2010版和2012版等)、Dev-C++、Eclipse、Code::Blocks等。从集成开发环境的界面友好程度来看,微软的Visual Studio有着不小的优势。并且Visual Studio的市场占有率也是非常高的,很多院校、培训机构、企业都在使用。因此,建议有条件的初学者优先选用Visual Studio。如果实在无法安装Visual Studio,那么Dev-C++或Code::Blocks也可以作为替代。

 

问题6:如何保持学习C++的积极性和热情?(来自网友E-mail)

回答:对于大多数初学者来说,学习C++语言还是有一定难度的。因此,必须要掌握好学习的速度和节奏,不要对自己产生过大的压力。有些读者说只需要3周就能把小半本书看完,可是剩下的那部分却始终看不进去。事实上这说明了前面的小半本书还没有完全消化吸收——暴饮暴食自然就要没胃口了。建议初学者不要贪急贪快,那样很容易毁掉自己的学习热情。如果为自己订制了一个相对长期的、宽松的学习计划,反而更容易培养自己的积极性。

 

问题7:零基础的初学者应该学VB还是学C++?(来自网友留言)

回答:不得不承认,用Visual Basic制作一个Windows窗口界面的程序比C++方便得多。因此,初学者可能在学习Visual Basic的时候觉得更容易,更有成就感。Basic和C++属于计算机高级语言中的两支路线,各有所长。但是,从计算机高级语言的发展趋势来说,C++更具有代表性。如果只是想了解一下程序设计,学习Visual Basic也未尝不可。

 

问题8:看完《易学C++》之后应该学习些什么内容?(来自网友留言)

回答:《易学C++》是一本入门级的C++教程,主要面向没有程序设计基础的读者。本书中的内容都是C++语言中必须掌握的基础知识。当看完《易学C++》之后,并不表示你已经成为一个C++高手,而只能表示你入门了。因此,如果想更深入地了解,在看完《易学C++》之后必须再去看一些更高层次的书籍。此外,还可以去阅读一些关于数据结构、算法、设计模式等方面的书籍,强化实际应用。

英文全称

英文缩写

中文

Multimedia

-

多媒体

Virtual Reality

VR

虚拟现实

Network

-

网络

Software

-

软件

Program

-

程序

Operating System

OS

操作系统

Database Management System

DBMS

数据库管理系统

Compile System

-

编译系统

Middleware

-

中间件

Algorithm

-

算法

Statement

-

语句

Microsoft

MS

微软

Microsoft Foundation Class

MFC

微软基础类

Application Programming Interface

API

应用程序编程接口

International Organization for Standards

ISO

国际标准化组织

American National Standards Institute

ANSI

美国国家标准学会

Compiler

-

编译器

Integrated Development Environment

IDE

集成开发环境

工欲善其事,必先利其器。在学习程序设计之前,必须做好充分的准备工作。首先,要了解程序和软件的概念,并且知道程序设计是在做什么。然后,要知道一些语言的基本概念,以及高级语言能被计算机理解的原因。最重要的是,牢记学习程序设计的方法并不断付诸实践。

1.选择题

(1)Windows操作系统、MSN、Word等属于计算机(  )

  A.硬件     B.软件     C.固件     D.组件

(2)算法是指(  )

  A.程序代码   B.软件     C.硬件     D.解决问题的过程和方法

(3)以下不属于计算机语言的是(  )

  A.机器语言   B.汇编语言   C.自然语言   D.高级语言

2.参照本书1.2节中对算法的描述,试用自然语言描述以下问题的算法。

(1)已知一元一次方程a*x+b=0,其中a和b均为常数,求解未知数x。

(2)判断某个年份有多少天,如2008年有366天,2009年有365天。

(3)已知三条边长a、b和c,判断这三条边能否组成三角形。

 

扫一扫二维码,获取参考答案


相关图书

代码审计——C/C++实践
代码审计——C/C++实践
CMake构建实战:项目开发卷
CMake构建实战:项目开发卷
C++ Templates(第2版)中文版
C++ Templates(第2版)中文版
C/C++代码调试的艺术(第2版)
C/C++代码调试的艺术(第2版)
计算机图形学编程(使用OpenGL和C++)(第2版)
计算机图形学编程(使用OpenGL和C++)(第2版)
Qt 6 C++开发指南
Qt 6 C++开发指南

相关文章

相关课程