描述
开 本: 大32开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787115446800
学习并掌握一门编程语言的*方式是用它去解决问题,而本书正是为想要动手实践的程序员设计的。书中基于日常软件开发中经常遇到的实际问题提炼了57道练习题,以帮助程序员磨练技艺、提升技能。这些练习题由浅入深,首先从简单的程序入手,然后逐步过渡到解决更难的问题。如果你是一名新手,这些练习题可以帮你打开编程的大门。如果你是一位经验丰富的程序员,也可以运用这些练习题来快速地学习一种新语言或新的编程风格。
有经验的程序员在学习了一门新语言后,也会有很多不知道如何使用的特性。针对
程序员的这一普遍困惑,知名软件工程师Brian P. Hogan 在这本书中总结了57 道练习
题,帮助他们锤炼技能。这些练习题均取自实践,难度会逐渐增加,使得编程训练
充满挑战又乐趣多多。
理解问题 1
发现输入、处理和输出 3
用测试驱动设计 4
用伪代码编写算法 7
编写代码 9
挑战 9
前进! 10
第2 章 输入、处理和输出 11
1 问好 12
2 计算字符数 13
3 打印引语 14
4 疯狂填词 15
5 简单的数学处理 16
6 计算退休时间 17
本章回顾 17
第3 章 计算 19
7 矩形房间的面积 22
8 比萨聚会 23
9 涂料计算程序 24
10 自助结账 25
11 货币兑换 26
12 计算单利 28
13 确定复利 30
本章回顾 31
第4 章 作出决策 32
14 税额计算程序 36
15 密码验证 38
16 法定驾驶年龄 39
17 计算血液中的酒精含量 41
18 温度转换程序 43
19 计算身高体重指数 45
20 多州税收计算程序 47
21 从数字到名字 49
22 比较数字 50
23 定位汽车问题 51
本章回顾 52
第5 章 函数 53
24 字母易位词检查程序 55
25 检查密码强度 56
26 计算还清信用卡欠款所需的时间 57
27 验证输入 59
本章回顾 60
第6 章 重复 61
28 数字相加 65
29 处理错误的输入 66
30 乘法表 68
31 卡蒙内心率 69
32 猜数字游戏 71
本章回顾 72
第7 章 数据结构 73
33 神奇8 号球 76
34 从员工列表中删除元素 77
35 选择优胜者 79
36 计算统计信息 81
37 密码生成器 83
38 过滤值 84
39 排序记录 85
40 过滤记录 87
本章回顾 88
第8 章 使用文件 89
41 姓名排序程序 91
42 解析数据文件 93
43 网站生成器 95
44 产品搜索 96
45 单词查找 98
46 词频统计 99
本章回顾 100
第9 章 使用外部服务 101
47 谁在太空中? 103
48 抓取天气 104
49 Flickr 照片搜索 105
50 电影推荐 107
51 向Firebase 提交笔记 109
52 创建自己的时间服务 110
本章回顾 111
第10 章 完整的程序 112
53 待完成事项清单 113
54 短网址服务 114
55 文本分享 115
56 记录财产 116
57 多选琐事问答应用 117
下一步干什么? 117
“如果你正想学习一门新的编程语言,那你也应该选择这本书。你将从中学到如何从基本原理出发解决问题,为后面的学习和工作打下坚实的基础。我学到了很多,希望你也大有收获。”——Stephen Orr,Impact
Applications高级软件工程师
“实践是学习新编程语言的*方法,而这本书就是这方面的绝佳资源。因为这本书是语言无关的,所以也有无限的重读价值。在诸多技术图书中,这种特质极为少见。”——Jason Pike,theswiftlearner.com软件工程师
“对于任何一个想学习一门全新语言的人而言,这本书都是非常棒的。不管是新程序员还是老程序员,都能从这本书的练习题中获益良多。初学者可以舒服地学习这本书,有经验的程序员也能看到很多挑战。”——Alex Henry,JAMF
Software测试工程师
本书内容
之所以写作本书,首先是希望向编程语言初学者提供一些一开始可能要面对的、有挑战的问题。因此,大部分问题一开始相对简单,难度会逐渐增加。书中练习的这种延续性,使得编程基础的训练充满挑战,同时又有很多乐趣,还可以让我们更加快速地上手一门新语言。在部分,程序只是简单地接受一些输入,操作数据得到不同的输出,让你体验计算机程序如何处理输入和输出操作。这是新手周要编写的程序。
下一步就有些挑战了,要编写进行计算的程序。有些程序就像计算房屋面积那么简单,但是其他程序可能会涉及金融和医疗方面的计算,和我们可能在工作中碰到的类似。
然后,通过引入决策逻辑和重复逻辑,我们会增加程序的复杂性,而且会引入函数。
之后,你会发现有些问题需要使用像数组(array)或映射(map)这样的数据结构来解决。这些程序还需要你利用之前解决的其他问题。
当然,没有点儿文件输入输出,程序是不完整的。所以我们会练习从文件中读数据,处理,后写回。
现代的程序往往要和外部服务交互,因此你会发现一些程序需要使用第三方API的数据。
后,本书后面有几个比较大的程序,需要读者综合前面所学。
此外,每个练习都有一些在构建程序时必须遵循的约束,还有一些高于当前程序的挑战。如果你完全没有编程基础,可以跳过这些挑战,等技能提高之后再回来看看。如果你已经有些经验,并且感觉程序太过简单,则可以立刻试试。取决于所选择的编程语言,有些挑战可能非常困难。比如,如果使用JavaScript和HTML开发这些程序,那实现一个GUI版本会非常容易。如果使用Java开发,就要多做大量的工作。不过对于这些挑战,如果你感觉合适,可以自由修改。
然而,本书不会提供这些程序的解决方案。如果你做了足够深入的思考,而且使用了所有可以调配的资源,应该能独立想出解决之道,而这正是本书主旨所在。
后一件事:本书中没有那些低劣的面试题,也没有FizzBuzz之类的问题。你不需要翻转二叉树,也不需要编写快速排序算法(除非它作为某种解决方案的一部分而用到)。如果你想找这类内容,应该到别的地方看看。那类问题有价值,但至于为什么要做,我们并不清楚,所以实际做起来会更困难。这就使得人们感觉它们不是那么好接近,因而成了学习的障碍。
本书中的问题是比较简单而且容易涉及的现实问题,可以帮你练习使用代码解决问题。
评论
还没有评论。