描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787302531616
有逻辑,更有游戏,你会不会更想说:“C 这样学,真香!”
想要学习编程吗?想要用C 来写出热门游戏、商业应用甚至航空航天应用软件吗?《轻松学会C 》将是一个理想的起点。C 14和免费的Microsoft VisualC 社区版,可以帮助读者轻松进入C 编程世界。
14岁就发表数学论文、毕业于藤校的作者布莱恩•奥弗兰懂得怎么教大家轻松学会C ,从简短的示例入手,帮助大家理解如何创建使用实用程序、写游戏和解谜题。通过简化知识点,耐心讲解以及直观的图表、示例和练习并举,本书可以帮助大家学会C ,而且越学越聪明,越学越上瘾。
本书特色主题:
安装和使用免费的Microsoft Visual C 社区版
深入讲解C 14新标准中有价值的改进特性
以模块化方式呈现C 14的改进,帮助读者更容易写出兼容性更强的程序
通过更多谜题、游戏和相关练习的方式来介绍C 的知识点
讲解更多用法,帮助读者以更高效的方式来使用STL代码
包含适用于日常编程参考的9个附录
《轻松学会C (第3版)》共18章9个附录,在兼顾C 关键主题的同时,注重编程思维的培养和练习,兼顾逻辑和游戏,以丰富的图表和其他结构化方式直观呈现出C 以及C 14的知识点和基础概念。作者通过深入浅出、通俗易懂的语言,丰富的范例,清楚的解释,大量的练习,全方位讨论了C 的关键主题,从一般的编程概念到技术到C 的具体特性。通过本书的阅读,读者可迅速掌握C 编程精髓。 《轻松学会C (第3版)》破除了C 难学的迷思,适合读者自学,也是一本适合课堂教学的入门经典。
目录
第1章 开始使用C 1
1.1 安装Microsoft Visual Studio
2015/2017 1
1.2 用Microsoft Visual Studio创建
项目 3
1.3 用Microsoft Visual Studio写程序 4
1.4 用Visual Studio运行程序 5
1.5 兼容性问题#1:stdafx.h或pch.h 5
1.6 兼容性问题#2:暂停屏幕 6
1.7 如果不用Visual Studio 7
1.8 跳到下个打印行 10
1.9 存储数据:C 变量 13
1.10 数据类型简介 14
1.11 变量名和关键字的注意事项 21
小结 22
第2章 判断语句 25
2.1 准备功课:数据类型 25
2.2 在程序中判断 26
2.3 循环入门 33
2.4 C 的真和假 39
2.5 递增操作符( ) 39
2.6 语句和表达式 41
2.7 布尔(短路)逻辑入门 42
2.8 Math库入门 45
小结 51
第3章 判断语句进阶 53
3.1 do-while循环 53
3.2 随机数入门 56
3.3 switch-case语句 63
小结 67
第4章 全能又好用的for语句 69
4.1 计数循环 69
4.2 for循环入门 70
4.3 大量例子 71
4.4 局部循环变量 75
4.5 语言对比:Basic语言的
For语句 78
小结 79
第5章 被大量调用的函数 81
5.1 函数的概念 81
5.2 函数的使用 82
5.3 局部和全局变量 90
5.4 递归函数 92
5.5 继续游戏 107
小结 108
第6章 数组 111
6.1 C 数组初探 111
6.2 初始化数组 112
6.3 基于零的索引 113
6.4 字节串和字符串数组 121
6.5 二维数组:进入矩阵 127
小结 128
第7章 指针 131
7.1 指针到底是什么? 131
7.2 指针概念 132
7.3 声明和使用指针 133
7.4 函数中的数据流 140
7.5 交换:另一个使用指针的函数 141
7.6 引用参数(&) 147
7.7 指针运算 147
7.8 指针和数组处理 149
小结 153
第8章 字符串:分析文本 155
8.1 计算机如何存储文本 155
8.2 单字符和字符串 169
8.3 C 语言的string类 172
小结 179
第9章 文件:电子存储 183
9.1 文件流对象入门 183
9.2 对比文本文件和二进制文件 191
9.3 二进制运算基础 193
小结 200
第10章 类和对象 203
10.1 理解OOP 203
10.2 对象的含义 204
10.3 Point:一个简单的类 206
10.4 Fraction类基础 212
小结 229
第11章 构造函数 231
11.1 构造函数入门 231
11.2 引用变量和引用参数(&) 242
11.3 拷贝构造函数 243
11.4 将字符串转换为分数的构造
函数 245
小结 247
第12章 两个完整的OOP例子 249
12.1 动态对象创建 249
12.2 new和delete的其他用法 250
12.3 二叉树应用 251
12.4 汉诺塔问题:动画版 260
小结 267
第13章 用STL简化编程 269
13.1 列表模板 269
13.2 设计RPN计算器 277
13.3 正确解释尖括号 286
小结 287
第14章 面向对象的三门问题 289
14.1 逻辑推理 289
14.2 电视节目(面向对象版) 291
小结 307
第15章 面向对象的扑克牌游戏 309
15.1 赢在拉斯维加斯 309
15.2 怎样抽牌 310
15.3 vector模板 319
15.4 判断牌型 325
小结 333
第16章 多态版扑克牌游戏 335
16.1 多种牌墩 335
16.2 “纯虚”和其他抽象事项 345
16.3 抽象类和接口 346
16.4 面向对象和I/O 347
小结 354
第17章 C 14新功能 357
17.1 C 14最新功能 357
17.2 C 11引入的功能 362
小结 381
第18章 操作符函数:用类来完成 385
18.1 操作符函数入门 385
18.2 作为全局函数的操作符函数 387
18.3 通过引用提高效率 389
18.4 操作其他类型 399
18.5 类赋值函数(=) 399
18.6 相等性测试函数(==) 401
18.7 类的“打印”函数 402
18.8 结语(关于操作符) 406
小结 407
附录A 操作符 411
附录B 数据类型 419
附录C 语法总结 425
附录D 预处理指令 437
附录E ASCII代码 443
附录F 标准库函数 447
附录G I/O流对象和类 455
附录H STL类和对象 461
附录I 术语表 469
译者序
两年里利用业余时间断断续续完成了本书翻译(感谢编辑大人的耐心与宽容)。原因不是本书无趣,而是因为太有趣,而译者的时间又不够而已。真的是一本C 入门的好书。语言精炼且前后呼应。你看到了一个不太理解的术语/概念,没问题,后面肯定有对它的详尽解释(而且是用你很容易明白的话)。
原书基于Visual Studio 2015写作,后来Visual Studio 2017问世,所以译者在中文版中添加了对Visual Studio 2017的支持。不想用微软的IDE?没问题,译者在这里推荐一些IDE:CodeLite,Dev C ,Eclipse,NetBeans……实在太多了。具体链接可参考译者的主页:https://bookzhou.com。
除了最基本的C 编程概念,一些“新潮”的东西都有所涉及,包括STL模板、C 11和C 14的新功能。至于指针,听起来很“高大上”,但读了本书之后,就会发现其实是小事一桩。关键在于,所有这些内容作者都用浅显的语言讲得明明白白。
本书之所以有趣,是因为里面讲述了太多实际问题的解决方案,例如汉诺塔、三门和扑克牌(发牌、洗牌和判断一手牌的大小)等。
逻辑和游戏,这是你通过本书来学习C 的主要动机之一(就不说就业必备技能了)。
最后,本书几乎所有源代码的注释和输出内容都有中文。中文版代码可通过译者主页下载(https://bookzhou.com)。
前言
C 可以说是当今世界最重要的编程语言。
该语言广泛运用于创建从操作系统到字处理软件的商业应用。曾有一段时间大型应用程序需用机器码来写,因计算机容量太小,其他都装不了。但今非昔比。比尔·盖茨(Bill Gates)不得不将整个BASIC压缩成64K的时代一去不复返了!
作为C语言的继任者,C 在保留了开发高效率程序这一目标的同时,还最大化提升了程序员的生产力。它生成的可执行文件在简洁性上一般仅次于机器码,但能干的事儿要多得多。C 大多数时候都是专业人员的首选语言。
然而,名气虽大,C 却不是最容易学的。这正是写作本书的目的。
我们是来找乐子的
任何值得学的都值得付出努力。但不是说这个过程就不能变得更有趣,本书的目的就是帮助大家轻松有趣地学会C 。我从20世纪80年代开始C编程,从90年代开始C 编程,创建过商业和系统级的应用程序。接触过各种陷阱,比如未初始化的指针和在if条件中该用两个等号(==)的时候用了一个(=)。我可以指导你避开多年前我要花上好几个小时来调试的错误。
我也喜欢逻辑和游戏。学习一门编程语言并不一定意味着枯燥。本书将探索汉诺塔和三门等有趣的问题。
图表能使学习编程的过程更有趣和容易。本书将大量运用表格和插图。
为什么选择C和C
不是说其他编程语言有什么问题。我是全世界首批写Visual Basic代码的人(Microsoft主导的一个项目),而且我承认Python是高级脚本工具。
但只要稍微注意一下,就会发现C 学起来同样容易。语法比Visual Basic和Python复杂一些,但C 长久以来都被公认为是一种简洁、灵活和优雅的语言。这正是其前身C语言受这么多专家推崇的原因。
C语言一开始的思路就是为重复写的代码行提供快捷方式。例如,可用 n使变量递增1,而不用写n = n 1。用C或C 写的程序越多,就越离不开这些快捷方式,离不开它们的简洁和灵活。
C 是怎样“思考对象”的
计算机科学家丹尼斯·里奇(Dennis Ritchie)创建C来作为写操作系统的一种工具(1983荣获图灵奖)。他需要一种简洁和灵活的语言,可在必要时操纵像物理地址这样的低级东西。结果是C在其他领域也快速流行。
后来,比雅尼·斯特劳斯特鲁普(Bjarne Stroustrup)创建了C ,最开始只是一种“有类的C”。添加了面向对象功能,这是我以后要花很多笔墨讲述的主题(从第10章起)。面向对象是围绕智能数据类型构建程序的一种方式。本版的一个主要目标就是演示如何将面向对象作为一种高级的、更模块化的编程方式,以及如何“思考对象”。
C 最终演化成远非仅仅一种“有类的C”。多年来添加了许多新功能,最引人注目的是标准模板库(Standard Template Library,STL)。STL不难学,本书将演示如何用它简化许多编程工作。假以时日,这个库会成为C 程序员的工作中心。
第3版的目标
第3版的目标很简单,就是保持过去版本的优势并修正一些缺陷,尤其是这一版更有趣且更易使用。前两版的大多数特色都予以保留,但更着重C 的实用性(和娱乐性)和面向对象,不在很少用到的功能上花太多笔墨。例如,我假定你不想写自己的string类,因为所有新的C 编译器很早就在提供该功能了。
这一版还强调了C 社区的“正确”语言规范。这些规范要么已成为标准,要么马上成为标准。
这一版正式使用Microsoft C 编译器(社区版)。也可以用其他顺手的C 编译器,因为大多数例子都是用标准C 写成的。不过,第1章会指导你使用与Visual Studio配套提供的Microsoft编译器。
本书还包括其他特色。
* 涵盖C 11和C 14新功能:这一版会介绍自C 11以来引入的许多新功能,并介绍C 14的一些前沿功能。假定你的C 编译器至少和Microsoft社区版一样新,所以这一版拿掉了一些过时的编程规范。
* 更多谜题、游戏、练习和插图:这些特色都是第2版大受欢迎的要素。第3版进一步“发扬光大”。
* 更着眼于面向对象的“为什么”和“怎么做”:C 的类和对象功能一直都被寄予厚望。本版在修订时的一个主要目标就是强调类和对象的实用性以及如何“思考对象”。
* 更多STL的知识:标准模板库不难学,能简化编程并提高效率。这一版会更多地探索STL。
* 有用的参考:这一版在书末保留并扩展了快速参考附录。
怎么开始
这一版假定你对编程一无所知或只知道一点。会开电脑,会用菜单系统、键盘和鼠标就行。第1章将指导你安装和使用Microsoft C 社区版。注意,该版本的C 在Microsoft Windows上运行。使用其他系统(比如Mac OS)需下载不同的工具。但C 常规的东西是共通的,本书大多数内容可以直接使用。
更多图标
前两版引入了许多有用的图标,这一版更多,作用是帮你快速定位自己需要的内容。请特别留意这些符号,它们强调了需要特别关注的部分。
剖析示例程序,逐行解释工作原理。不需要自己读长长的代码,我帮你做了!(或者说,我们一起研究。)
在每个完整的示例程序后面,都提供了至少一个练习(通常几个)。它们围绕例子展开,鼓励你修改并扩展刚才看到的程序代码。这是最好的学习方式。练习答案在作者的网站(brianoverland.com)提供。
围绕一个例子展开,分析如何改进、变得更短或更高效。
修改例子做其他事情。
提示新的语言关键字,清楚解释其用法。
和“关键字”相似,但提示的是不涉及关键字的C 语法。
“伪代码”是用自然语言描述的程序或程序片断。作用是帮你弄明白程序需要做的事情。然后将其直接转换成C 语句即可。
本书还穿插了一些有意思的“花絮”。不是特别关键,供闲暇时阅读。
列出重要事项,要么是需要注意的特殊事项,要么是一些“陷阱”,例如版本问题和需要最新编译器的一些语言功能。
表明当前主题只适合最新的C 14语言规范。
不涉及哪些主题
生命中没什么是免费的,除了爱、落日、空气和小狗。(实际上小狗都可能不是免费的。前不久我看了一些大丹犬,每只都要大概3000美元。但真的很可爱。)
由于需要强调对于初级到中级程序员来说重要的主题,所以这一版稍微减少了对于一些不常用功能的讨论。例如,操作符重载(前期一般都不会在类中编码这一功能)被移到了最后一章。其他大多数主题(包括相对高级的主题,比如位操作)都只是稍微提了一下。重点还是基础。
C 或许是目前规模最大的编程语言,就像英语拥有自然语言中最大的词库一样。一本面面俱到的入门书,这个出发点本身就是错的。但是,如果想学习C 的高级主题,也有大量资源可以参考。
有两本书我特别推荐。一本是C 语言创始人比雅尼·斯特劳斯特鲁普(Bjarne Stroustrup)的《C 编程语言》第4版,这是一本权威、全面和详尽的大部头参考书,建议在C 上手之后学习。如一本易于使用的参考书,推荐我自己写的C for the Impatient,它覆盖了语言和标准模板库的几乎一切内容。
图形用户界面(GUI)编程对平台依赖较大,要选择专门的书来学习。本书介绍核心C 语言及其库和模板,这些是独立于平台的。
再次提醒:找乐子
C 没什么好怕的。偶有陷阱,但我会引领你绕开。在你不小心或者不知道自己在做什么的时候,C 有时会显得稍难。但通过不停思考这些问题,情况会变得越来越好。
C 并不抽象。希望你通过实例来解谜和游戏,并从中获得乐趣。虽然本书目的是教会你一门新知识,但也希望寓教于乐。
源代码、练习答案和勘误
从作者或译者主页下载本书源代码、练习答案和勘误。作者主页是http://brianoverland.com/books/或https://github.com/transbot/CPP-without-fear。译者主页是https://bookzhou.com。
致谢
这一版是编辑金姆(Kim Boedigheimer)和我在西雅图派克市场附近喝茶的时候确定下来的。这本书更像是她的孩子而不是我的。她带来了一个出色的编辑和生产团队,极大简化了我的工作。团队成员包括科瑟尔(Kesel Wilson)、黛博拉(Deborah Thompson)、克里斯(Chris Zahn)、苏珊(Susan Brown Zahn)和约翰(John Fuller)。
特别感谢莱奥尔(Leor Zolman)出色的技术审校。感谢微软前软件开发工程师约翰(John R. Bennett)提供许多有益的反馈。还要感谢网络作家大卫(David Jack)提供一些有用的插图。
1.4 用Visual Studio运行程序
现在转换并运行程序。在Visual Studio中按快捷键Ctrl F5或选择“调试”|“开始执行(不调试)”。Visual Studio可能会说程序过期,询问是否重新生成。单击“是”。
也可按功能键F5来生成并运行程序,但程序输出只是“闪现”一下,不会在屏幕上停留。所以要用快捷键Ctrl F5以调试方式执行。
出现错误消息可能是因为打字错误。C “可怕”的一个地方在于,即使输错了一个字符,也可能造成一系列“连锁”错误。所以不要惊慌,检查拼写即可。尤其注意以下几点。
? 两个C 语句(输入的大多数代码行都是C 语句)以分号(;)结尾,所以不要忘了这些分号。
#include指令不以分号(;)结尾。
? C 大小写敏感(但大多数空白间距不敏感)。除了引号中的文本,这个程序没有任何大写字母。
确定打字无误后,按快捷键Ctrl F5重新生成程序。
1.5 兼容性问题#1:stdafx.h或pch.h
没人喜欢处理兼容性问题,无脑敲代码多爽!但在使用Microsoft Visual Studio的时候,有两个兼容性问题需要注意。
为支持所谓的“预编译头”,Microsoft Visual Studio在程序开头插入下面这一行代码。本来没什么,但如果从其他地方复制了普通C 代码,并覆盖掉了这一行,程序将无法编译。
#include “stdafx.h” // VS2017换成了”pch.h”
问题是其他编译器不支持这行代码,但用Microsoft Visual Studio生成的程序需要,除非像本节描述的那样进行了修改。
在Microsoft Visual Studio中编译程序有下面几种方式。
? 最简单的就是确定在用Visual Studio创建的任何程序中,这行代码总是第一行。所以,从别处拷贝普通的C 代码到Visual Studio项目,一定不要删除这一行:
#include “stdafx.h” // VS2017换成了”pch.h”
? 如果想编译普通C 代码(非Microsoft专用的那种),创建项目时不要在“应用程序向导”中直接单击“完成”。相反,单击“下一步”。在“应用程序设置”窗口中取消勾选“预编译头”。
? 项目创建好之后也可以更改设置。首先选择“项目”|“属性”(快捷键Alt F7)。在左侧窗格选择“预编译头”。(可能要先展开“配置属性”和“C/C ”。)最后在右侧窗格从相应下拉列表中选择“不使用预编译头”。
选择后两种方式,Microsoft专用行(比如#include “stdafx.h”)依然存在。但在不使用预编译头之后,这些行可以被普通C 代码覆盖。
还要注意,Visual Studio可能使用以下main函数框架:
int _tmain(int arg, _TCHAR* argv[])
评论
还没有评论。