首页>参考读物>计算机科学与技术>软件与程序设计

苹果开发之C程序设计(原书第2版)
作者 : (美)David Mark James Bucanek 著
译者 : 张龙 译
出版日期 : 2015-04-08
ISBN : 978-7-111-49417-1
定价 : 79.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 : 365
开本 : 16
原书名 : Learn C on the Mac: For OS X and iOS
原出版社: Apress
属性分类: 店面
包含CD :
绝版 : 未绝版
图书简介

图书特色

本书是经典畅销书的全新升级版,全面且深入地讲解Mac环境下C编程的各项知识,是从零开始系统学习C编程的首选!书中既详细讲解C语言的基础编程知识和技巧,又涵盖Xcode的使用方法,并且针对最新的C标准做了更新,包含大量实用的代码示例。
全书共14章:第1章介绍本书通篇使用的软件工具;第2章介绍编程的基础知识;第3章讲述C语言的语句和函数;第4章讨论C语言的变量和运算符;第5章阐述如何调试程序;第6章介绍程序的流程控制;第7章讲解指针和参数;第8章介绍更多其他的数据类型;第9章讨论命令行的相关内容;第10章讲述如何设计自定义数据结构;第11章介绍文件的使用方法;第12章讨论如何处理错误;第13章讲解更高级的主题,比如强制类型转换、联合、递归、排序、集合等;第14章展望Objective-C的未来。
本书的第一版曾经影响了整整一代程序员,两位作者也都是经验丰富的专家,对于初学者来说完全不需要具备任何编程知识,只需从第1章开始逐章阅读即可。首先从基础知识开始,然后在Mac专家的指引下,采取小步前进的方式来学习C程序设计的精髓,从最为基础的工具的使用、变量的定义到复杂的指针、结构体、创建命令行工具等,书中都有深入且广泛的介绍。
本书是一本绝佳的C语言程序设计教程,不仅有准确的理论讲解,还穿插了大量实用的代码示例,没有任何编程经验的读者在学习完本书后将会对C语言有着全新的感悟和认识。
通过阅读本书,你将会从中学习到:
编写与编译原生C程序
通过变量与运算符探究强大的数学表达式
使用指针与参数增强程序
通过流程控制来控制程序的走向
设计自定义数据结构
创建自己的命令行工具
保存程序数据并再次读取回来
程序出现问题时处理错误

作者简介
David Mark 是一位经验丰富的Mac开发者与作者,曾编写过大量关于Mac与iOS开发的图书,包括《Beginning iPhone 4 Development》、《More iPhone 3 Development》、《Learn C on the Mac》和《Ultimate Mac Programming》等。David还是iOS与Android开发工作室MartianCraft的联合创始人。
James Bucanek 在过去30多年一直从事编程与微处理器系统的开发工作。他在众多计算机硬件与软件方面具有非常丰富的经验,从嵌入式消费品到工业机器人。他的开发项目包括面向Apple II的首个局域网、分布式空调控制系统、钢琴教学系统、数字示波器、硅片沉积装置,以及针对中小学教育的协作式写作工具。James目前主要关注OS X与iOS软件开发,在这个领域中,他可以将自己深厚的UNIX知识与面向对象语言编程经验凝结到优雅的设计中。

图书前言

欢迎阅读本书
欢迎!既然已经开始阅读本书,那就说明你肯定喜欢Mac。不仅喜欢Mac,你肯定还想学习如何设计并开发出自己的Mac程序。
那你真是找对书了。
本书假定你已经知道如何使用Mac,知道这就够了。你无须了解任何编程知识,一点儿都不需要。我们会从基础知识开始,每次前进一小步,从而确保你已经没有任何问题了。
本书将重点讨论编程基础。与此同时,你还将学习到C编程语言的核心。
在Douglas Adam的《The Hitchhiker’s Guide to the Galaxy》一书中,“生命、宇宙与一切的终极问题”的答案是“42”。当然,这个答案是不对的,正确答案应该是“C”。
C语言是软件开发的源泉。过去半个世纪以来,计算机与消费电子产品领域的重要变革很大程度上都是通过C语言、衍生自C的语言(Objective-C、C++)以及根据C设计的语言(Java、C#)实现的。学习C吧,程序世界将成为你的囊中之物。
Douglas Adams是个狂热的Mac爱好者。
学习完本书后,你就可以开始学习面向对象编程与Objective-C了——OS X与iOS的官方编程语言。
听起来有点难以应付吧?没关系,本书将采取小步前进的方式,大家都能跟得上,你当然也没问题!
本书读者对象
当Dave在1991年写下本书第1版时,他是写给大学生看的。毕竟,他就是在大学时开始学习编程的,但事实证明他错了。
“头一次感觉我低估了我的读者是在收到一封5年级学生写的邮件时,他已经读完了全书。5年级啊!不止一个,还有很多9岁、10岁、11岁的小朋友已经开始学习编程了,这简直太酷了!最棒的是这些小朋友发给我他们实际编写的应用时,你无法想象我是多么骄傲和自豪。”
Dave发现了这其中的重要意义。随着时间的流逝,我们收到来自于足球妈妈、爱好者,甚至普通人的邮件,他们开始使用Mac了,都从《Learn C on the Mac》起步,并且学有所成。
那么该如何起步呢?虽然仅仅通过读书来学习C语言也是可行的,但是最好能够实际运行每个示例程序,这样才能有最大的收获。要做到这一点,你需要一台运行OS X(最好是10.6.8或更高的版本)的Mac并联网。需要上网下载Apple为对Mac编程感兴趣的人所提供的免费工具,还需要下载本书配套的项目。
重申一次,如果对编程一无所知,请不要担心。本书前几章将会带你快速入门。如果已经具备了一些编程经验(甚至还比较丰富),那就可以跳过前几章,从第3章开始探究C语言基础。
本书内容安排
下面来快速介绍本书的主要内容。
第1章介绍如何获取本书将会用到的免费软件工具。
第2章介绍构建计算机程序的一些基础知识。
第3章介绍如何将一系列程序语句嵌入到可重用的函数中,这样就可以不断重复使用了。
第4章介绍变量与运算符,将强大的数学表达式引入到程序中。
第5章介绍如何逐行观测程序的执行,以了解程序运行是否正确,如果不正确则可以即时修复。
第6章介绍流程控制的概念,使用if、else、do与while结构来控制程序的走向。
第7章介绍指针与参数,这两个概念会将程序的水平提升到一个全新的高度。
第8章超越本书前半部分所用的简单数据类型,介绍如何处理更复杂的数字以及数组和文本字符串之类的数据类型。
第9章介绍如何部署完成的程序以及如何通过命令行使用它。
第10章更加深入地介绍数据,同时还介绍如何设计自定义数据结构。
第11章引入数据文件的概念,介绍如何保存程序的数据,以及如何再将其读取回来。
第12章介绍在程序出错时该如何处理错误。
第13章介绍各种高阶主题——强制类型转换、联合体、递归、排序、集合等。
最后,第14章对全书做了总结,并给出接下来的学习建议。
准备好了吗 出发吧!

上架指导

计算机\程序设计

封底文字

本书的第一版曾经影响了整整一代程序员,两位作者也都是经验丰富的专家。对于初学者来说完全不需要具备任何编程知识,只需从第1章开始逐章阅读即可。首先从基础知识开始,然后在Mac专家的指引下,采取小步前进的方式来学习C程序设计的精髓,从最为基础的工具的使用、变量的定义到复杂的指针、结构体、创建命令行工具等,书中都有深入且广泛的介绍。
  本书是一本绝佳的C语言程序设计教程,不仅有准确的理论讲解,还穿插了大量实用的代码示例,没有任何编程经验的读者在学习完本书后将会对C语言有着全新的感悟和认识。
  通过阅读本书,你将会从中学习到:
 编写与编译原生C程序
 通过变量与运算符探究强大的数学表达式
 使用指针与参数增强程序
 通过流程控制来控制程序的走向
 设计自定义数据结构
 创建自己的命令行工具
 保存程序数据并再次读取回来
 程序出现问题时处理错误

作者简介

(美)David Mark James Bucanek 著:暂无简介

译者简介

张龙 译:暂无简介

译者序

当今的编程语言世界呈现出百花齐放的景象,C、C++、Java、C#、Scala、Go、Erlang、Haskell、Python、Ruby等语言各放异彩。面对这浩如烟海的编程语言,初学者该何去何从呢?诚然,初学者可以选择任何一种语言作为自己的启蒙语言,比如Java或Python等。但作为20世纪出现的古老语言,C语言依然在各个领域中发挥着自己的强大作用。很多现代编程语言都或多或少地借鉴了C语言,如Java和C#等。另外,iOS与OS X的核心编程语言Objective-C也是C语言的超集。由此看来,学习C语言对后续其他编程语言的学习会起到很大的促进作用,同时由于C语言偏底层的特性,这使得C程序员会具备更系统的计算机软硬件知识。
目前,市场上关于C语言的图书与教程数不胜数,从最为经典的Brian W. Kernighan与Dennis M. Ritchie合著的《C程序设计语言》到现在从各个角度剖析C语言的技术图书。在这种局面下,初学者难免无所适从,到底该从哪里开始呢?答案就是从本书开始。
原书第1版曾经影响了整整一代程序员,两位作者也都是经验丰富的专家。对于初学者来说完全不需要具备任何编程知识,只需从第1章开始逐章阅读即可。全书14章采取了小步前进的讲解方式,从最为基础的工具的使用、变量的定义到复杂的指针、结构体、创建命令行工具等进行了深入且广泛的介绍。没有任何编程经验的读者在学习完本书后将会对C语言拥有全新的感悟和认识。
另外值得一提的是,本书完全是在Mac环境下介绍C编程的,采用的工具也是Mac上最为优秀的开发工具Xcode。读者不仅会学习到C语言的知识与技巧,还将掌握Xcode的使用方法。这对于后续学习iOS或OS X开发都是大有裨益的。全书不仅有准确的理论讲解,还穿插了大量实用的代码示例,这些示例都是可以直接在计算机上运行的,因此建议广大初学者不仅要学习理论知识,还要动手试验这些代码示例,通过实际运行的结果来验证对理论知识的理解。在系统学习完本书后,读者朋友可以根据自己的兴趣进行深入,比如学习Objective-C语言或者其他面向对象编程语言。相信在掌握了C语言的原理后再去学习其他语言会有更好的效果和更快的学习速度。
翻译图书是一项艰苦的工作,这里我首先要感谢机械工业出版社的谢晓芳编辑,感谢你在图书翻译过程中给予我的支持与鼓励;其次,我要将感谢送给我的妻子张明辉,在翻译图书过程中是你无微不至的照顾才能让我忘却生活中的琐事,专心于工作;感谢我的父母,没有你们的谆谆教导和精心抚育就不会有今天的我;最后,将本书送给我亲爱的孩子张梓轩,如果你未来想成为一名程序员,那么爸爸愿意助你一臂之力。
尽管在翻译过程中译者已经尽了最大的努力力求保证译文的准确性和流畅性,但囿于水平有限,读者在阅读过程中如果发现了错误或不准确之处请及时与我联系,以便再版时修正。我的邮箱是zhanglong217@163.com,新浪微博是@风中叶的思考,欢迎关注。最后,祝各位读者阅读愉快,早日迈入C语言的圣殿。

张龙
2014年12月28日于北京

图书目录

译者序
作者简介
技术审校者简介
前言
致谢
第1章 获取工具 1
1.1 安装Xcode 1
1.2 Xcode的价格 2
1.3 何为注册开发者 3
1.4 获取项目 3
1.5 使用Xcode 3
1.5.1 新建Xcode项目 5
1.5.2 工作空间窗口 6
1.5.3 运行项目 7
1.6 继续前进 8
第2章 编程基础 9
2.1 编程 9
2.1.1 C语言的其他替代者 9
2.1.2 Objective-C、C#、C++及Java怎么样呢 10
2.2 对于Mac或者iOS设备来说最佳编程语言是什么 10
2.3 编程过程 11
2.3.1 源代码 11
2.3.2 编译源代码 13
2.3.3 构建应用程序 14
2.4 接下来的内容 14
第3章 C语言基础:语句与函数 15
3.1 C语句 15
3.2 C函数 15
3.2.1 定义函数 16
3.2.2 语法错误与算法 17
3.2.3 调用函数 18
3.3 一个程序,两个函数 20
3.3.1 Hello2项目 20
3.3.2 Hello2源代码 22
3.3.3 运行Hello2 23
3.4 重复三次 24
3.5 产生一些错误 25
3.5.1 修复问题 26
3.5.2 再探细节 27
3.5.3 C是区分大小写的 27
3.6 探究Xcode自带的手册 29
3.7 接下来的内容 30
第4章 C语言基础:变量与运算符 32
4.1 变量简介 32
4.1.1 使用变量 33
4.1.2 变量名 34
4.1.3 类型的大小 35
4.1.4 字节与位 35
4.1.5 从1字节到2字节 37
4.2 运算符 37
4.2.1 +、-、++与--运算符 38
4.2.2 +=与-=运算符 39
4.2.3 *、/、%、*=、/=与%=运算符 40
4.3 使用圆括号 41
4.4 运算符优先级 42
4.5 示例程序 43
4.5.1 打开Operator.xcodeproj 43
4.5.2 分析Operator源代码 44
4.5.3 打开Postfix.xcode 47
4.5.4 分析Postfix源代码 47
4.6 修剪代码 49
4.6.1 源代码间距 49
4.6.2 代码注释 51
4.6.3 花括号之争 52
4.7 接下来的内容 53
第5章 调试 55
5.1 何为调试器 55
5.2 控制执行 56
5.2.1 设置断点 57
5.2.2 跳过语句 59
5.2.3 单步执行函数 59
5.2.4 跳出函数 62
5.2.5 全速前进 63
5.3 查看变量 64
5.4 调试器怎么像座冰山一样 66
5.5 接下来的内容 67
第6章 控制程序的流程 68
6.1 流程控制 68
6.2 表达式 69
6.2.1 结果为真的表达式 70
6.2.2 比较运算符 71
6.2.3 逻辑运算符 71
6.2.4 TruthTester.xcodeproj 74
6.3 复合表达式 74
6.4 语句 75
6.4.1 花括号 76
6.4.2 应该将分号放置在何处 77
6.4.3 两个常见陷阱 78
6.5 while语句 81
6.6 for语句 83
6.7 do语句 87
6.8 switch语句 88
6.8.1 不带语句的case 90
6.8.2 毁誉参半的穿越 91
6.8.3 switch总结 91
6.9 循环中的break 92
6.10 continue语句 92
6.11 IsOdd.xcodeproj 93
6.12 NextPrime.xcodeproj 95
6.13 接下来的内容 98
第7章 指针与参数 100
7.1 何为指针 100
7.1.1 为何要使用指针 101
7.1.2 图书馆示例小结 102
7.2 指针基础 103
7.2.1 变量地址 103
7.2.2 &运算符 104
7.2.3 声明指针变量 104
7.2.4 *运算符 105
7.3 函数参数 109
7.3.1 变量的作用域 109
7.3.2 函数参数的工作原理 110
7.3.3 参数是临时的 111
7.3.4 实参与形参的区别 112
7.4 函数返回值 113
7.4.1 printf()返回一个值 114
7.4.2 多条return语句 114
7.4.3 什么都不返回 115
7.5 整合 116
7.5.1 将指针作为形参 116
7.5.2 Factor.xcodeproj 117
7.6 关于指针的一些说明 119
7.6.1 按值传递与按引用传递 119
7.6.2 NULL指针值 119
7.6.3 指针的阴暗面 120
7.7 全局与静态变量 121
7.7.1 全局变量 121
7.7.2 向程序添加全局变量 123
7.7.3 静态变量 124
7.7.4 接下来的内容 125
第8章 更多数据类型 127
8.1 int之外的数据类型 127
8.1.1 FloatSizer 128
8.1.2 整型类型 133
8.1.3 IntSizer.xcodeproj 135
8.1.4 int的优缺点 136
8.2 最佳整型类型 139
8.2.1 语义类型 140
8.2.2 精确宽度类型 140
8.2.3 整型与浮点型 141
8.3 使用字符 141
8.3.1 ASCII字符集 142
8.3.2 ASCII.xcodeproj 142
8.3.3 分析ASCII源代码 145
8.4 数组 146
8.4.1 为何使用数组 147
8.4.2 Dice.xcode 147
8.4.3 分析Dice源代码 148
8.4.4 要小心 151
8.5 #define指令 151
8.5.1 在代码中使用#define 153
8.5.2 分析预处理器 154
8.5.3 使用#define指令的好处 155
8.5.4 类似于函数的#define宏 156
8.6 文本字符串 157
8.6.1 内存中的文本字符串 157
8.6.2 FullName.xcodeproj 158
8.6.3 Overflow.xcodeproj 161
8.7 接下来的内容 163
第9章 命令行 165
9.1 命令行基础 165
9.1.1 命令参数 167
9.1.2 命令进阶 168
9.1.3 shell命令来自何处 169
9.2 创建命令行工具 170
9.2.1 命令参数与main() 171
9.2.2 SeeArgs.xcodeproj 171
9.3 部署程序 173
9.4 使用路径 176
9.4.1 当前目录与相对路径 176
9.4.2 特殊目录名 178
9.4.3 主目录名 179
9.5 安装命令行工具 179
9.5.1 创建私有的bin目录 180
9.5.2 安装工具 181
9.5.3 配置PATH变量 181
9.6 字符输入 182
9.6.1 管道 182
9.6.2 重定向 183
9.6.3 Namer.xcodeproj 186
9.7 指针运算 191
9.7.1 指针比较 191
9.7.2 指针加法 191
9.7.3 指针减法 193
9.8 WordCount.xcodeproj 194
9.8.1 分析WordCount源代码 195
9.8.2 在Shell中测试WordCount 201
9.9 RomanNumeral.xcodeproj 203
9.9.1 main() 204
9.9.2 NumberToRomanNumeral() 204
9.10 关于命令行界面的总结 208
9.11 接下来的内容 209
第10章 设计自定义数据结构 210
10.1 打包数据 210
10.2 模型A:3个数组 210
10.3 模型B:结构化方式 217
10.4 将结构体作为参数传递 222
10.5 ParamAddress.xcodeproj 224
10.6 结构体数组 225
10.7 分配自己的内存 226
10.7.1 使用malloc() 227
10.7.2 free() 229
10.7.3 追踪地址 229
10.8 使用链表 230
10.8.1 为何使用链表 230
10.8.2 创建链表 230
10.9 DVDTracker.xcodeproj 231
10.10 接下来的内容 239
第11章 使用文件 240
11.1 何为数据文件 240
11.2 文件基础 241
11.2.1 理解文件名 241
11.2.2 打开与关闭文件 242
11.3 读取文件 243
11.4 PrintFile.xcodeproj 245
11.5 写入文件 248
11.6 其他文件操纵方法 260
11.6.1 更新模式 260
11.6.2 随机文件访问 261
11.6.3 使用随机访问函数 261
11.6.4 DinoEdit.xcodeproj 262
11.6.5 文本与数据文件 268
11.6.6 处理端的问题 269
11.7 改进RomanNumeral 270
11.7.1 分析RomanNumeral.xcodeproj 271
11.7.2 测试RomanNumeral 274
11.8 文件系统对象 276
11.9 接下来的内容 277
第12章 错误处理 278
12.1 墨菲定律 278
12.2 规则#1:永远不要假设 279
12.2.1 关于变量的假设 280
12.2.2 检查范围 281
12.2.3 容忍所有可能值 282
12.2.4 对假设进行断言 283
12.3 规则#2:保持警觉 285
12.3.1 关注返回值 285
12.3.2 errno 286
12.4 规则#3:制订逃生计划 288
12.4.1 紧跟成功 288
12.4.2 提前返回 290
12.4.3 忽略之前的失败 291
12.4.4 过滤错误 293
12.4.5 尽早退出 294
12.4.6 跳过 295
12.5 规则#4:预测问题 298
12.6 规则#5:适当选取 299
12.7 接下来的内容 300
第13章 高阶主题 301
13.1 类型转换 301
13.1.1 转换规则 302
13.1.2 转换警告 304
13.2 强制类型转换 304
13.3 const修饰符 307
13.4 创建自定义类型 308
13.4.1 struct typedef 309
13.4.2 前向引用 309
13.5 枚举类型 310
13.6 联合体 312
13.7 递归 314
13.7.1 迭代 315
13.7.2 递归 315
13.8 函数指针 318
13.9 其余运算符 319
13.10 深入探索标准库 321
13.10.1 使用标准库进行排序 322
13.10.2 Core Foundation中的集合 327
13.11 接下来的内容 333
第14章 未来展望 335
14.1 Mac用户界面 335
14.1.1 学习Objective-C 336
14.1.2 Cocoa与Cocoa Touch 336
14.2 了解一些OS X代码 337
14.3 iOS应用速览 339
14.4 Objective-C速览 340
14.5 继续前行 343
附录 练习答案 344

教学资源推荐
作者: [美]本贾尼·斯特劳斯特鲁普(Bjarne Stroustrup)著
作者: [美]梁勇(Y. Daniel Liang) 著
作者: [美]肯尼斯·A.兰伯特(Kenneth A. Lambert)著
作者: [美]保罗·C. 乔根森(Paul C. Jorgensen) 著
参考读物推荐
作者: (美)凯 S.霍斯特曼(Cay S. Horstmann)著
作者: 张丙振 檀飞翔 等著
作者: (美)Alexander Stepanov, Paul McJones 著