成功加入购物车

去购物车结算 X
重庆沙坪坝区星月书店
  • C++入门经典(第9版)

C++入门经典(第9版)

举报

书号:9787302402978;作者:(美)萨维奇(Savitch W.)著,周靖;出版社:清华大学出版社;

售价 40.96 3.2折

定价 ¥128.00 

品相 八五品

优惠 满包邮

运费

上书时间2019-12-08

数量
仅1件在售,欲购从速
微信扫描下方二维码
微信扫描打开成功后,点击右上角”...“进行转发

卖家超过10天未登录

  • 商品详情
  • 店铺评价
  • 图书条目信息

    C++入门经典(第9版)

    • 作者: [美]
    • 出版社:  清华大学出版社
    • 出版时间:  2015-06
    • 版次:  9
    • ISBN:  9787302402978
    • 定价:  128.00
    • 装帧:  平装
    • 开本:  16开
    • 纸张:  胶版纸
    • 页数:  720页
    • 字数:  928千字
    • 正文语种:  简体中文

    展开全部

    货号:
    9787302402978
    商品描述:
    基本信息
    书名:C++入门经典 第9版
    定价:128.0元
    作者:(美)萨维奇(Savitch W.)著,周靖译
    出版社:清华大学出版社
    出版日期:2015-06-01
    ISBN:9787302402978
    字数:928000
    页码:
    版次:9
    装帧:平装
    开本:16开
    编辑推荐
    暂无相关内容
    内容提要
    本书是深受师生欢迎的C++入门教材。作者结合自己多年的教学经验精心设计并编撰了本书内容。采用了很多便于巩固所学知识的设计,例如各章开头的小节总览,书中随处可见的小结框、编程提示和编程陷阱,各章结尾的小结、习题、编程练习和编程项目等。这些非常适合初学者掌握重要的编程概念。      全书共18章,8个附录。在讲解C++基础知识之后,直接引导学生深入函数、I/O流、类、控制流程、命名空间、数组、字符串、指针和动态数组、递归、模板、指针和链表、派生类、异常以及标准模板库。
    目录
    暂无相关内容
    作者介绍
    暂无相关内容
    文摘
    第1章  计算机和C++编程入门概述   1.1  计算机系统   硬件   软件   高级语言   编译器   先驱人物  查尔斯巴贝奇与艾达奥古斯塔   1.2  编程和问题求解   算法   程序设计   面向对象编程   软件生命周期   1.3  C++入门   C++语言的起源   一个C++示范程序   简C++程序的布局   编译和运行C++程序   1.4  测试和调试   程序错误的分类   小结   自测题答案   编程练习   编程项目   分析的整个发展和运作现在都可以由机器来完成……分析机将指引未来的科学发展。——查尔斯巴贝奇 (1791—1871)概述本章讲解计算机的基本组成,以及设计和编写程序的基本技术,然后展示一个示例C++程序,描述它是如何工作的。1.1  计算机系统计算机要遵循的一系列指令统称为程序。计算机使用的各种程序称为该计算机的软件。组装一台计算机所需的物理设备称为硬件。正如后文所述,计算机硬件在概念上是非常简的。然而,现在的计算机都配备大量软件以辅助我们完成各种编程任务。这些软件包括各种编辑器、翻译器以及管理器等。最终的工作环境就是一个复杂的、功能强大的系统。本书几乎完全围绕软件展开,但首先有必要对硬件有一个基本的了解。硬件计算机主要分为PC、工作站和主机。PC(个人电脑)是体积较小的计算机,设计目的为每次由一个人使用。大多数家用电脑都是PC,但PC也广泛应用于商业、工业和科学领域。工作站其实是一台体积更大、功能更强的PC。可把它视为一种“工业”PC。主机则是更大的计算机,通常要求一组支持人员,而且要供多个用户共享。PC、工作站和主机并不是泾渭分明的,但利用这些术语,通常能表达与一台计算机有关的常规信息。网络由大量相互连接的计算机构成,以便这些计算机共享资源(比如打印机)和信息。一个网络可能包含大量工作站以及一台或多台主机,另外还有打印机之类的共享设备。由于本书的目的是学习编程,所以无论使用PC、主机还是工作站,都是无关紧要的。稍后就知道,这三种计算机的基本结构是相同的。大多数计算机系统的硬件都像图1.1那样配置。计算机由5个主要部件构成:输入设备、输出设备、处理器(也称为CPU)、主存储器以及辅助存储器。处理器、主存储器和辅助存储器通常安装到一个机箱内部。处理器和主存储器是计算机的核心,可将其视为一个集成元。其他部件与主存储器相连,并遵照处理器的指示工作。图1.1中的箭头指明信息流动的方向。输入设备是允许用户将信息发送给计算机的设备。主要的输入设备是键盘和鼠标。输出设备是允许计算机将信息发送给用户的设备。最常用的输出设备是显示器,或者称为监视器。计算机系统一般有多个输出设备。例如,除了显示器之外,计算机还可能连接了一台打印机,能在纸张上输出。有时将键盘和显示器统称为终端。 图1.1  计算机的主要组成部件 为了存储输入并像平时那样用草稿纸来演算,计算机提供了存储器。计算机要执行的程序也存储在存储器中。计算机支持两种形式的存储器,分别为主存储器和辅助存储器。要执行的程序存储在主存储器中。正如主存储器这个名称所暗示的,它是最重要的存储器。主存储器相当于一个很长的编号位置列表,这些位置称为存储位置或者内存位置。在不同计算机中,内存位置的数量也是不同的,从几千到几百万都有,有的甚至能达到几十亿。每个内存位置都包含一系列0和1。这些位置的内容可以改变。所以,每个内存位置都可被视为一块小黑板,计算机可在上面擦写。在大多数计算机中,每个内存位置的0或1个数相同。只能包含0或1的数位称为一个二进制位,或者称为位或比特。大多数计算机的内存位置都包含8位(或8位的倍数)。每8位称为一个字节,所以可以将这些编号内存位置称为字节。换言之,可将计算机的主存储器视为一个很长的编号存储元(字节)列表。对字节进行标识的编号称为该字节的地址。一个数据项(数字或字母)可存储到其中一个字节中。以后需要该数据项时,就根据那个字节的地址来查找数据项。如果要处理的数据项太大(比如一个很大的数),以至于一个字节容不下,就使用几个相邻的字节容纳它。在这种情况下,用于容纳该数据项的整个内存块仍然称为一个内存位置。构成这个内存位置的个字节的地址作为这个较大的内存位置的地址。所以,一种更准确的说法是:可将计算机的主存储器视为一个很长的内存位置列表,每个位置长度可变。每个位置的长度用字节数来表示,个字节的地址成为该位置的地址。图1.2展示了一台假想计算机的主存储器。每个内存位置的长度都不是固定的,在计算机上运行一个新程序时,它们可能发生改变。图1.2  内存位置和字节 字节和地址主内存被划分成称为字节的多个编号位置,一个字节的编号就是该字节的地址。一组连续的字节可作为一个数据项(比如数字或字母)的存储位置。组内个字节的位置就是这个更大的存储位置的地址。在计算机存储器中,虽然信息实际表示成0和1,但用C++(或其他大多数编程语言)编程时,不必过于关心这个事实。不过,一旦开始写程序,许多人仍然希望知道0和1具体是如何使用和转换的。计算机必须将这些0,1序列解释成字母、数字、指令或者其他类型的信息。计算机根据特定的编码方案来自动执行这些解释。存储在计算机存储器中的每种类型的数据项都要采用一种不同的编码:字母使用一种代码,整数使用另一种代码,小数使用另一种代码,指令使用另一种代码,依此类推。例如,在一个常用的代码集中,01000001是字母A的编码,也是数字65的编码。为了确定特定位置中的01000001代表的是什么,计算机必须跟踪记录目前那个位置目前使用的是哪一种编码。幸好,程序员很少需要关心这些编码,并可放心地假定位置中包含了实际的字母、数字或者其他数据项。为什么是8每个字节都代表一个能容纳8个二进制位的内存位置。那么,8有何特别之处?有两个原因使8显得很特殊。首先,8是2的3次方。由于计算机在层使用的是二进制位,而每一位只有两个可能的值,所以2的乘方用起来比10的乘方更方便。其次,需要8位(1个字节)才能对一个字符(比如一个英语字母或其他键盘符号)进行编码。到目前为止,我们讨论的都是主存储器。没有主存储器,计算机不能做任何事情。但是,只有计算机真正按照一个程序中的指令工作时,才会用到主存储器。计算机还有另一种形式的存储器,称为辅助存储器或辅助存储。辅助存储器能在计算机使用之后(和之前)持久性地保存数据。还可以将辅助存储器称为辅助存储设备、外部存储器或者外部存储。在辅助存储设备中,信息以文件为位来保存。文件可大可小。例如,程序平时存储在辅助存储设备上的文件中,并在程序运行时复制到主存储器。任何形式的信息都可存储到文件中,包括程序、信函以及存货等。计算机允许连接几种不同的辅助存储设备。最常见的有硬盘、软盘、CD、DVD和可移动闪存驱动器。计算机使用的CD和音乐CD基本相同,而DVD和视频DVD基本相同。计算机使用的CD和DVD可以是只读的,只能读取上面的数据,不可更改;也可以是可读/可写的,计算机可以更改上面的数据。硬盘通常固定在计算机内,不能随便取出。相反,软盘和CD很容易从驱动器中取出,并拿到另一台计算机上使用。软盘和CD的优点在于便宜和易于携带,但硬盘能存储更多的数据,而且速度更快。如今,闪存驱动器已在很大程度上取代了软盘,使用名为闪存的存储介质来存储数据。和主存储器不同,闪存驱动器即使没有供电,上面存储的数据也不会丢失。虽然还有其他形式的辅助存储设备,但这些形式是最常见的。主存储器除了简称为内存,还可简称为RAM,也就是存取存储器(Random Access Memory)。之所以是“存取”,是因为计算机能直接访问任意内存位置。辅助存储设备则通常要求顺序访问。换言之,计算机必须检索(或至少大量)存储位置,直至找到需要的数据项。处理器(也称中央处理元,或者CPU)是计算机的“大脑”。在广告中,厂家会说计算机用的是什么芯片。芯片指的就是处理器。处理器按程序指令操作,执行程序指定的计算。然而,处理器只是一个非常简的“大脑”。它能做的就是按照程序员提供的一系列简指令进行操作。一般的处理器指令是:“将这个0,1序列解释成数字,将内存位置37的数字加到内存位置59的数字上,将结果放到位置43”。或者“读取输入的一个字母,用0,1序列对其进行编码,将这个编码放到内存位置1298”。处理器可执行加、减、乘、除,并可将数据从一个内存位置移动到另一个。它能将0,1序列解释成字母,并将字母发送到输出设备。处理器还具有重新排列指令顺序的基本功能。不同的计算机可能使用不同的处理器指令集。现代计算机的处理器通常都支持几百条指令。然而,如上文所述,每条指令执行的任务都是非常简的。软件人一般不直接和计算机通信,而是通过操作系统和它交互。操作系统为计算机必须完成的不同任务分配计算机资源。操作系统实际是一个程序,或者是多个相互协作的程序,但更好的办法是把它想象成你的管家,负责管理家中的其他所有佣人,把你的要求传达给他们。如果希望运行一个程序,就要把包含这个程序的文件的名称告诉操作系统,操作系统会帮你运行它。如果想编辑一个文件,告诉操作系统文件名是什么,它会启动一个编辑器并加载那个文件。对于大多数用户,操作系统就是计算机。没有操作系统,大多数用户根本无法操作计算机。常用的操作系统包括UNIX,DOS,Linux,Windows,Mac OS,iOS和Android等。程序是计算机需要遵照执行的一系列指令。如图1.3所示,计算机的输入由两部分组成:程序和数据。计算机按照程序中的指令操作,在这个过程中,会执行一些具体的处理。从概念上说,数据是向一个程序提供的输入。例如,如果程序要将两个数字加到一起,这两个数字就是数据。换言之,数据是程序的输入,而程序和数据共同构成了一台计算机的输入(一般通过操作系统)。任何时候只要向计算机提供了一个它必须遵照执行的程序,并为程序提供了一些数据,就称为要对那些数据运行程序,而计算机要对那些数据执行程序。“数据”一词还有更常规的含义。从广义上说,它意味着计算机可用的任何信息。狭义和广义的“数据”我们平时都在使用。图1.3  程序运行简示意图 高级语言可以使用许多语言编写程序。本书将讨论C++编程语言,并用它编写程序。和其他大多数语言一样,C++也是一种高级语言。其他高级语言还有C,C#,Java,Python,PHP,Pascal,Visual Basic,FORTRAN,COBOL,Lisp,Scheme和Ada等等。高级语言在许多方面都类似于人类使用的语言,其设计宗旨是方便人们编写和阅读程序。高级语言包含的指令比CPU能够执行的简指令要复杂得多。计算机能理解的语言称为低级语言。在不同类型的计算机上,低级语言的细节也是不同的。一个典型的低级语言指令可能如下:ADD X Y Z它的意思是“将内存位置X的数字加到内存位置Y的数字上,再将结果放到内存位置Z处”。上述简指令是用汇编语言写成的。虽然汇编语言已非常接近计算机能直接理解的语言,但仍要经历一次简转换,才能真正被计算机理解。计算机要想遵照汇编语言指令行事,所有词都必须转换成0,1序列。例如,词ADD可能转换成0110,X可能转换成1001,Y转换成1010,而Z转换成1011。所以,执行上述汇编语言指令时,计算机实际执行的指令是:0110 1001 1010 1011 不同机器使用的汇编语言指令以及它们转换成0,1序列的方式是不同的。    这种0,1形式的程序是用机器语言写的,那才是计算机真正理解的语言。汇编语言和机器语言差别不大,而且这种差别对我们来说并不重要。重要的是机器语言和高级语言(比如C++)的区别:用高级语言写的所有程序都必须翻译成机器语言,以便计算机理解。编译器将C++等高级语言翻译成机器语言的程序称为编译器。编译器是一种特殊程序,它的输入(或数据)是一个程序,输出的又是一个程序。为避免混淆,一般将输入程序称为源程序或源代码,编译器输出的程序则称为目标程序或目标码。码或代码一词常用于表示程序或程序的一部分。说到目标程序时,通常会使用目标码一词。现在,假定你希望运行自己写的一个C++程序。为了让计算机遵循C++指令,要采取以下步骤。首先,运行编译器,将C++程序作为数据提供给编译器。注意,在这种情况下,C++程序不被视为一系列要执行的指令。对于编译器来说,C++程序不过是一系列字符串。输出的仍是一系列字符串,即C++程序的机器语言版本。接着,要运行这个机器语言版本,向它提供平常我们以为是提供给C++程序的数据。如果有两台计算机,就更容易理解这一基本过程,如图1.4所示。但事实上,这个过程是在同一台计算机上完成的,只不过用了两次计算机。图1.4  编译和运行C++程序(基本过程) 翻译和运行C++程序的完整过程比图1.4的“基本过程”稍微复杂一些。任何C++程序都会用到一些已编制好的操作(比如输入和输出例程)。这些操作已进行了编译,并生成了相应的目标码。它们等待着与你的程序的目标码合并,以生成一个完整的能够在计算机中运行的机器语言程序。在这个过程中,要由另一个名为链接器的程序将事先准备好的目标码与基于你的C++程序而生成的目标码合并。图1.5展示了编译器与链接器的交互。但在目前的大多数系统中,这个链接过程都是自动完成的。所以,一般不用关心链接问题。编  译  器编译器是一种特殊的程序,它能将高级语言程序(比如C++程序)翻译成机器语言程序,使计算机能直接理解并执行。图1.5  运行C++程序之前的准备工作  链  接  器C++程序的目标码必须与程序用到的例程(比如输入和输出例程)的目标码合并。合并目标码的过程称为链接,由名为链接器的程序完成。简程序的链接过程可能自动完成。自测题 1.计算机的5个主要部件是什么? 2.一个对两个数字进行相加的程序,它的数据是什么? 3.一个为学生分配字母的程序,它的数据是什么? 4.机器语言程序和高级语言程序的区别是什么? 5.编译器有什么作用? 6.什么是源程序?什么是目标程序? 7.什么是操作系统? 8.操作系统的作用是什么? 9.你上这门课时所用的计算机运行的是什么操作系统?10.什么是链接?11.你用的编译器是否具有自动链接功能? 先驱人物  查尔斯巴贝奇与艾达奥古斯塔台真正可编程的计算机是由英国数学家和物理学家查尔斯巴贝奇(Charles Babbage)设计的。巴贝奇在1822年前的某个时间开始这个项目,并将自己的余生都奉献给了它。虽然这台机器始终没有完成,但它的设计思想是计算机历史上的一个里程碑。我们对于查尔斯巴贝奇和他的计算机设计的认识,主要来自他的同事爱达奥古斯塔(Ada Augusta Lovelace)的著作。爱达奥古斯塔是诗人拜伦之女,后来晋封为伯爵夫人。许多人都认为爱达奥古斯塔是有史以来的位计算机程序员。她的一些观点(在下一节开头引用)至今仍然适用于计算机的问题求解过程。计算机不具备魔法,不能(至少目前不能)为我们遇到的所有问题都自动给出妥善的解决方案。计算机只能做程序员要它做的事情。虽然解决方案最终由计算机执行,但方案本身由程序员自己制定。所以在讨论计算机编程时,首先要讨论程序员如何制定解决方案。1.2  编程和问题求解分析机没有自主性。它能做我们操控它做的事情。它能跟着分析走;但无法预见到任何分析关系或定理。它的职责就是帮助我们做我们已知如何做的事情。——爱达奥古斯塔,勒芙蕾丝伯爵夫人 (1815—1852)本节介绍设计和编写程序的常规原则。这些原则并非C++特有,而是适合任何编程语言。算法开始学习自己的种编程语言时,很容易得出这样的观点:用计算机解决问题时,最困难的是如何将自己的思想转换成计算机能理解的语言。但实际并非如此。事实上,用计算机解决问题时,最困难的是找出解决问题的方案。只要有了解决方案,就能像例行公事那样将方案转换成需要的语言(无论C++还是其他编程语言)。所以,有必要暂时忽略编程语言,将重点放在解决问题的步骤上,用通俗易懂的话将各个步骤写下来,就像是要向人而不是计算机发指令。以这种方式表示的指令序列通常称为算法。用于解决问题的一系列准确的指令称为算法,通常也可称为方法、指示、过程和例程等。指令可用编程语言或自然语言表示。我们的算法用中文和C++编程语言来写。计算机程序就是用计算机能理解的语言来表示的算法。所以,“算法”一词比“程序”更常规。然而,说一个指令序列是算法时,通常是说这些指令要用中文或英文描述。相反,如果是用编程语言描述的,就应该使用更具体的
    序言
    前    言  本书适合C++程序设计和计算机科学入门课程使用。阅读本书不要求读者有任何编程经验,也不要求掌握除了中学代数之外的其他任何数学知识。  本书前几版的读者请阅读关于第9版修订内容的小节,前言的其余内容可略过。新读者请阅读前言的内容以把握本书脉络。第9版修订内容  第9版采用和第8版相同的编程体例。保留第8版内容,但进行以下修订。* 章末的编程作业现在划分为“编程练习”和“编程项目”。编程练习帮助巩固本章的知识点,程序一般都很小,适合课堂练习。编程项目则要求综合运用多方面的知识来解决问题,程序一般比编程练习大,适合作为家庭作业。* 在C++98的背景下介绍C++11,涉及的主题包括新整型、auto类型、原始字符串字面值、强枚举、nullptr、以范围为基础的for循环、字符串和整数相互转换、成员初始化列表和委托构造函数等。* 提供了关于排序、安全编程(即溢出和数组越界)以及继承的补充材料。* 勘误。* 新增21个编程练习和10个编程项目。* 本书配套网站新增10个视频讲解,使总数达到64个。这些视频讲解辅导学生解题和写程序,有助于巩固对关键编程概念的掌握。如果书中某个主题有对应的视频讲解,就会出现一个特殊的图标。  用过第8版的教师可沿用以前的教案,几乎不需要任何改动。主题可以灵活排序  本书允许教师自由安排教学顺序。为了演示这一灵活性,下面推荐了两种顺序。采用任何顺序都不会影响学习的连贯性。为了在改变顺序时确保这种连贯性,可能需要移动个别小节而不是全章。但是,只有较大的、位置便利的小节才需要移动。为了帮助您根据需要自定义一个教学/阅读顺序,图P.1展示了一幅依赖图。另外,每章都有“预备知识”小节,解释了学习那一章的每一节之前需掌握的内容。  重新排序1:提前学习类  为了有效地设计类,学生需要掌握一些基本的工具,比如控制结构和函数定义。这些基础知识在第1章~第6章介绍。完成第6章的学习后,学生就可以开始写自己的类了。如果想提前学习类的知识,可以像下面这样重新安排各章的顺序。* 基础知识  第1章、第2章、第3章、第4章、第5章和第6章。这6章全面介绍控制结构、函数定义和基本文件I/O。第3章介绍几种额外的控制结构,如果希望尽早学习类,可以考虑推迟这一章的学习。* 类和命名空间  第10章、第11章的11.1节和11.2节、第12章。这些章节全面介绍了如何定义类、友元、重载操作符和命名空间。* 数组、字符串和向量  第7章和第8章。* 指针和动态数组  第9章。* 类类型的数组和数组作为类成员  第11章的11.3节和11.4节。* 继承  第15章。* 递归  第14章(也可以推迟到更晚的时候学习)。* 指针和链表  第13章。  可能还要用到以下各章的部分内容。* 异常处理  第16章。* 模板  第17章。* 标准模板库  第18章。  重新排序2:略微推迟类的学习  在“重新排序2”中,将先学完所有控制结构,再学习数组的基本知识,之后才开始学习类。虽然对类的接触要比“重新排序1”晚,但还是比本书的默认顺序略微提前一些。* 基础知识  第1章、第2章、第3章、第4章、第5章和第6章。这6章全面介绍了控制结构、函数定义和基本文件I/O。* 数组和字符串  第7章、第8章的8.1节和8.2节。* 类和命名空间  第10章、第11章的11.1节、11.2节和第12章。这些章节全面介绍了如何定义类、友元、重载操作符和命名空间。* 指针和动态数组  第9章。* 类类型的数组和数组作为类成员  第11章的11.3节和11.4节。* 继承  第15章。* 递归  第14章(也可以推迟到更晚的时候学习)。* 向量  8.3节。* 指针和链表  第13章。  可能还要用到以下各章的部分内容。* 异常处理  第16章。* 模板  第17章。* 标准模板库  第18章。依赖图  如下所示的依赖图展示了各个章节可能的排序方式。连接两个框的实线表明上部的框必须先于下部的框完成。只要符合这个条件,采用任何阅读顺序都无损连贯性。如果一个框中包含小节编号,表明该框只代表那些小节,不代表全章。面向学生的易用性  一本书必须按恰当的顺序来讲解恰当的主题,这是最起码的要求。另外,在老师和其他有经验的程序员看来,书的内容必须清晰而正确,这是另一个最起码的要求。但是不是符合这两项要求的书都是好书呢?答案是否定的。书中的内容必须采取有利于初学者使用的方式来编排。在这本入门教科书中,我尽力让学生觉得清楚和友好。本书以前版本的大量学生反馈证明,这种写作风格确实使内容更清晰,能使学生充分享受到学习的乐趣。ANSI/ISO C++标准  本书完全兼容符合ANSI/ISO C++标准的编译器。写作时的标准是C++ 11。高级主题  许多“高级主题”都已成为标准CS1课程的一部分。即使不是,以补充材料的形式提供也不错。本书提供大量高级主题,它们既可集成到课程中,也可作为自学主题。本书全面讲述了C++模板、继承(包括虚函数)、异常处理和STL(Standard Template Library,标准模板库)。虽然本书使用了库,而且教给学生库的重要性,但不要求任何非标准库。本书只使用所有C++实现都有的库。小结框  每个

    配送说明

    ...

    相似商品

    为你推荐

本店分类