新書推薦:
![幸福过了头](http://103.6.6.69/upload/mall/productImages/y24/8/9787530223994.jpg)
《
幸福过了头
》
售價:HK$
78.2
![可是,你还有你的人生呀](http://103.6.6.66/upload/mall/productImages/24/28/9787302662693.jpg)
《
可是,你还有你的人生呀
》
售價:HK$
67.9
![务必尽兴:我们穷极一生追求的到底是什么?](http://103.6.6.69/upload/mall/productImages/y24/8/9787115643629.jpg)
《
务必尽兴:我们穷极一生追求的到底是什么?
》
售價:HK$
68.8
![大哲学家](http://103.6.6.66/upload/mall/productImages/24/27/9787522528809.jpg)
《
大哲学家
》
售價:HK$
89.7
![乌程汉简萃编](http://103.6.6.66/upload/mall/productImages/24/26/9787547933510.jpg)
《
乌程汉简萃编
》
售價:HK$
112.7
![资治通鉴:帝王的镜子](http://103.6.6.66/upload/mall/productImages/24/26/9787559486417.jpg)
《
资治通鉴:帝王的镜子
》
售價:HK$
66.7
![从中亚古道到新大陆:哈佛汉学史话(在哈佛见证百年学术史的风云变迁)](http://103.6.6.66/upload/mall/productImages/24/27/9787532189960.jpg)
《
从中亚古道到新大陆:哈佛汉学史话(在哈佛见证百年学术史的风云变迁)
》
售價:HK$
78.2
![贞观政要:天可汗的时代](http://103.6.6.66/upload/mall/productImages/24/26/9787559486424.jpg)
《
贞观政要:天可汗的时代
》
售價:HK$
66.7
|
編輯推薦: |
重点内容:C 及程序设计中的核心概念以及高效的学习方法。
讲授方法:采用传统顺序,首先强调控制结构、过程分解和数组算法,在较为靠前的章节中就适时地引入了对象的概念。*后介绍数据结构和算法,涉及高级C 特性。
阅读准备:不要求读者具备编程经验。
|
內容簡介: |
本书由经典畅销书籍《Java核心技术》的作者Cay Horstmann撰写,非常适合C 初学者和爱好者阅读,不仅能够帮助新手快速入门,掌握基础知识,而且有益于培养读者解决实际问题的思维和能力。
书中采用传统的讲授方法,首先强调控制结构、过程分解和数组算法,在较为靠前的章节中就适时地引入了对象的概念。从第9章开始,读者将动手设计和实现自定义的类。*后介绍数据结构和算法,涉及高级C 特性。
本书特色
难度适中,适合自学。从C 繁杂的特性中进行精选,既涵盖大多数现代特性及程序设计的基本思想,又保持了适当的学习难度。
深入浅出,阐述透彻。对于一些难以理解的内容,结合文字、图片、代码及习题等多种方式进行讲解,所有代码均可免费下载。
实例学习,强调实战。共包含25个可运行的示例,通过实践帮助读者理解面向对象程序设计,从新手进阶为富有成效的程序员。
|
關於作者: |
凯霍斯特曼(Cay Horstmann) 圣何塞州立大学计算机科学系教授,Java的倡导者,经常在开发人员会议上发表演讲。他是《Java核心技术》的作者,同时也关注Python、Scala、C 等语言,为专业程序员和计算机科学专业学生编写过数十本图书。
|
目錄:
|
出版者的话
译者序
前言
第1章 引言 1
1.1 何谓编程 1
1.2 计算机的组成 2
1.3 机器代码和程序设计语言 4
1.4 熟悉编程环境 5
1.5 分析第一个程序 8
1.6 错误 11
1.7 问题求解:算法设计 12
1.7.1 算法的概念 12
1.7.2 求解投资问题的算法 13
1.7.3 伪代码 14
1.7.4 从算法到程序 14
本章小结 18
复习题 19
练习题 22
编程项目 23
第2章 基本数据类型 25
2.1 变量 25
2.1.1 变量定义 25
2.1.2 数值类型 26
2.1.3 变量名 27
2.1.4 赋值语句 27
2.1.5 常量 29
2.1.6 注释 29
2.2 算术运算 33
2.2.1 算术运算符 33
2.2.2 递增和递减 33
2.2.3 整数除法和余数 33
2.2.4 将浮点数转换为整数 34
2.2.5 幂运算和求根运算 34
2.3 输入和输出 40
2.3.1 输入 40
2.3.2 格式化输出 41
2.4 问题求解:首先通过手工实现 43
2.5 字符串 46
2.5.1 字符串类型 47
2.5.2 连接 47
2.5.3 字符串输入 47
2.5.4 字符串函数 48
本章小结 50
复习题 51
练习题 54
编程项目 56
第3章 分支 64
3.1 if语句 64
3.2 数字和字符串的比较 69
3.3 多路分支 75
3.4 嵌套分支 79
3.5 问题求解:流程图 83
3.6 问题求解:测试用例 85
3.7 布尔变量和运算符 87
3.8 实际应用:输入确认 91
本章小结 94
复习题 95
练习题 99
编程项目 101
第4章 循环 109
4.1 while循环 109
4.2 问题求解:手动跟踪 115
4.3 for循环 118
4.4 do循环 123
4.5 处理输入 124
4.5.1 标记值 124
4.5.2 一直读直至输入失败 126
4.6 问题求解:情节串联图板 129
4.7 常用的循环算法 131
4.7.1 求和及均值 131
4.7.2 统计匹配项 132
4.7.3 找到第一个匹配项 132
4.7.4 一直提示输入直至找到匹配项 132
4.7.5 最大值和最小值 133
4.7.6 比较相邻值 133
4.8 嵌套循环 137
4.9 问题求解:首先解决较简单的问题 140
4.10 随机数与模拟 144
4.10.1 生成随机数 144
4.10.2 模拟掷骰子 145
4.10.3 蒙特卡罗方法 146
本章小结 148
复习题 149
练习题 153
编程项目 156
第5章 函数 167
5.1 将函数看作黑盒 167
5.2 实现函数 168
5.3 参数传递 170
5.4 返回值 172
5.5 无返回值的函数 176
5.6 问题求解:可重用函数 177
5.7 问题求解:逐步细化 178
5.8 变量作用域和全局变量 185
5.9 引用参数 187
5.10 递归函数(可选) 191
本章小结 196
复习题 197
练习题 200
编程项目 203
第6章 数组和向量 225
6.1 数组 225
6.1.1 定义数组 225
6.1.2 访问数组元素 227
6.1.3 部分填充的数组 228
6.2 常见的数组算法 230
6.2.1 填充 230
6.2.2 复制 231
6.2.3 求和及均值 231
6.2.4 最大值和最小值 231
6.2.5 元素分隔符 232
6.2.6 统计匹配项 232
6.2.7 线性搜索 232
6.2.8 移除元素 233
6.2.9 插入元素 233
6.2.10 交换元素 234
6.2.11 读取输入 235
6.3 数组与函数 239
6.4 问题求解:修改算法 242
6.5 问题求解:通过操纵有形的物体发现算法 248
6.6 二维数组 250
6.6.1 定义二维数组 250
6.6.2 访问数组元素 251
6.6.3 定位相邻元素 251
6.6.4 计算行和列的合计 252
6.6.5 二维数组参数 253
6.7 向量 256
6.7.1 定义向量 256
6.7.2 增大和减小向量 257
6.7.3 向量和函数 258
6.7.4 向量算法 259
6.7.5 二维向量 260
本章小结 262
复习题 262
练习题 266
编程项目 269
第7章 指针和结构体 282
7.1 定义和使用指针 282
7.1.1 定义指针 282
7.1.2 通过指针访问变量 283
7.1.3 指针的初始化 285
7.2 数组和指针 287
7.2.1 数组作为指针 287
7.2.2 指针的算术运算 288
7.2.3 数组参数变量就是指针 289
7.3 C和C 字符串 292
7.3.1 字符类型 292
7.3.2 C字符串 292
7.3.3 字符数组 293
7.3.4 C和C 字符串的相互转换 293
7.3.5 C 字符串和运算符[] 294
7.4 动态内存分配 296
7.5 指针数组和指针向量 299
7.6 问题求解:绘制指针-数据关系图 302
7.7 结构体 305
7.7.1 结构体类型 305
7.7.2 结构体的赋值和比较 306
7.7.3 函数和结构体 306
7.7.4 结构体数组 306
7.7.5 具有数组成员的结构体 307
7.7.6 嵌套结构体 307
7.8 指针和结构体 309
7.8.1 指向结构体的指针 309
7.8.2 具有指针成员的结构体 309
本章小结 311
复习题 311
练习题 315
编程项目 317
第8章 流 323
8.1 读写文本文件 323
8.1.1 打开流 323
8.1.2 从文件中读入 324
8.1.3 写入文件 325
8.1.4 文件处理示例 325
8.2 读取文本输入 328
8.2.1 读入单词 328
8.2.2 读取字符 328
8.2.3 读取多行数据 329
8.3 写入文本输出 332
8.4 解析和格式化字符串 334
8.5 命令行参数 336
8.6 随
|
內容試閱:
|
本书专注于介绍C 和程序设计的本质以及如何高效学习。本书旨在满足学生广泛的兴趣和提高学生的能力,并且适合作为计算机科学家、工程师和其他专业学生学习第一门编程课的教材。学习本书无须具备编程经验,只需具备少量高中代数知识。
本书特色
本书主要特色如下:
基础理论先行
本书使用C 程序设计语言作为介绍计算机科学概念的载体。本书涵盖了重要的C 语言的子集,专注于标准C 语言的现代特性,这些特性使学生更富有成效。本书采用了传统的写作思路,首先重点介绍控制结构、过程分解和数组算法。在前几章中适当的时候使用了对象。在第9章中,学生开始设计和实现自定义的类。
逐步指导及可运行的示例助力学生成功
新手程序员经常会问:我怎么开始?现在我应该做什么?当然,像编程这么复杂的事情不能简化成类似菜谱的指令。然而,按步骤的指导对于建立自信并提供完成任务的要点都是非常有帮助的。问题求解小节强调设计和规划的重要性。如何去做帮助完成编程工作。附加的可运行的示例在E-Text上或者线上都是可用的。
提示:本书中所有示例程序的源文件,包括可运行的示例,都随本书的源代码提供。请下载这些文件至你的计算机中,以便学习各章节时访问。
练习才能臻于完美
学习程序设计的学生当然应有能力实现非常有用的程序,但是,他们首先要有相信自己能够成功的自信。增强的E-Text使学生沉浸在旨在培养深入学习的活动中。学生不仅仅观看动画和代码运行轨迹,还要努力去生成代码。这一过程提供即时反馈,来向学生展示他们做得对的地方和还需要学习的地方。每节的末尾都提供了丰富的练习,包括代码补全问题和面向技巧的多项选择题。同时,每一章都以精心设计的复习题和编程项目结束。
清晰的问题求解策略
对技术实用且循序渐进的描述方式,有助于学生设计并评估编程问题的各种解决方案。这些问题解决策略只在最相关的地方引入,以帮助学生克服成功路上的障碍。这些策略包括:
算法设计(附伪代码)
手工模拟执行(手工实现示例计算)
流程图
选择测试用例
手工追踪程序运行轨迹
情节串联图板
首先解决一个较简单的问题
可复用的函数
逐步求精
自适应算法
通过操纵有形的物体来发现算法
绘制图片(指针图表)
跟踪对象(确认其状态和行为)
发现类
递归式思维
评估算法的运行时间
可视化方法激励读者并简化导读
图片提供了旨在解释计算机相关概念的本质和行为的类比物。循序渐进的图形能形象地说明复杂的程序操作。语法框和示例表以紧凑的格式展示了各种典型案例和特殊案例。在专注于文字材料之前,通过浏览图片来获得整体的印象是较为容易的。
技术上准确的同时专注于本质
对于新手程序员而言,百科全书式的覆盖范围并无益处。但是,相反的情况把材料精简为过于简单化的要点也无济于事。本书中,知识要素以读者可消化的粒度展现,当读者准备好接收额外的信息时,本书提供单独的注解帮助其深入练习和理解语言的特性,因而不会发生由于人为过度简化导致读者对知识产生错觉。
增强合理的工程实践
本书提供大量关于软件质量和常见错误的有用提示,鼓励学生养成良好的编程习惯。重点关注测试驱动的开发,鼓励学生系统地测试自己编写的程序。
可选的工程和商业领域练习题
来自科学和商业领域的问题提升了每章末尾的练习题的质量。为了吸引学生,这些练习题展示了程序设计对应用领域的价值。
第3版的更新
针对现代版本的C 进行了更新
将C 2011和C 2014标准的许多特征描述为推荐的最佳实践或者作为特别专题。
新增并重新组织了专题
本书目前支持从两种途径来学习面向对象程序设计以及继承。读者可以在引入类的概念之前学习指针和结构。或者,可以将指针的学习推迟到学习类的实现之后。
本版本增加了常用数据结构和算法的内容,因而可以支持计算机科学专业的其他课程。
在一系列可运行的示例和练习题中引入了多媒体专项,例如生成和修改图像、声音和动画。
本书导读
本书可用于两学期的程序设计导论课程,既包含算法,也包含数据结构。全书章节的组织与之前的版本一样灵活,各章节之间的依赖关系如图1所示。
图1 章节依赖关系
第一部分:基础知识(第1~8章)
前6章遵循传统的方法介绍基本的程序设计概念。学生将学习控制结构、逐步求精和数组。对象仅用于输入输出和字符串处理。输入输出首先在第2章中谈及,接下来在8.1节中介绍如何读取和写入文本文件。
对于有系统编程或者嵌入式编程需要的工程师,会涉及第7章关于指针的内容。学习过7.1节和7.4节的内容,读者足以继续学习第10章的多态性指针。
第8章的主题是文件处理。8.1节介绍如何读取和写入文本文件,其余部分给出开发实际应用所需的额外资料。
第二部分:面向对象设计(第9~10章)
当打下坚实的基础后,学生就已经准备好处理类的实现问题了。第9和10章介绍C 的面向对象特性。第9章介绍类的设计和实现。第10章涉及继承和多态性。当这两章结束时,学生将有能力实现具有多个交互类的程序。
第三部分:数据结构和算法(第11~17章)
第11~17章涵盖适
|
|