编程
了解编程、算法和伪代码。
你想学习编程吗?你做出了一个很好的决定。编程是一项非常出色的技能,而且非常有趣。它可以用来开发下一代应用程序,操控树莓派或Arduino,编写最新的爆款游戏——还有无数其他用途。事实上,一旦你学会了编程,唯一限制你的就是你的想象力。
在本章中,我们将简要回顾编程的历史,了解计算机程序的本质,然后介绍我们将用于学习编程的JavaScript编程语言。
我们还将立即投入实践,开始编写编程代码,用JavaScript写出两个程序!
最后,我们会通过一些编程挑战来检验你新掌握的技能——就像本书每一章结尾都会做的那样。
编程入门
编程 的本质是让计算机按照我们的意愿执行任务。一个计算机程序本质上是一系列指令,告诉计算机如何完成某项任务。不幸的是,计算机并不使用和我们一样的语言。
例如,我们不能简单地写下“把圆的颜色改为蓝色”,就指望计算机能理解。编程语言就起到了中介的作用:它是一种既能被计算机理解,也能被人类理解的语言。
学习编程有点像学习一门外语,只不过计算机对语法的要求非常严格。
我们必须确保每个细节都准确无误,语法必须完全正确。计算机功能强大,可以完成令人惊叹的任务,但只要一个括号位置不对,程序就会崩溃!
编写程序本质上就是为计算机写一组精确的指令。问题在于,这些指令必须极其精确。哪怕有一点模糊,计算机执行的结果可能与我们的预期完全不同——甚至可能导致程序崩溃。
算法
如今,“算法”这个词频繁出现。我们可能听说过“Instagram算法”或“谷歌搜索算法”。那么,算法到底是什么?
“算法”一词源自波斯数学家阿尔·花拉子米(Al-Khwarizmi)的名字,他是第一位撰写代数教科书的人,并习惯用逐步分解的方法来解释自己的方法。
这使得“算法”一词被用来描述任何一种分步骤进行的方法。每一步都应该清晰明确,知道该做什么以及每一步的作用是什么。例如,以下是一个泡一杯茶的算法:
- 把水烧开。
- 拿一个杯子。
- 拿一个茶包。
- 把茶包放进杯子里。
- 当水壶烧开后,将水倒入杯中。
- 静置两分钟让茶浸泡。
- 把茶包从杯中取出。
- 拿一些牛奶。
- 将牛奶加入茶中。
- 搅拌茶。
先加奶还是后加奶:
有些人可能不同意“等茶做好后再加牛奶”的建议。如果你认为应该先加牛奶,我们尊重你的选择,尽管我们的建议有所不同。
这些指令看起来简单直接,但实际上包含了不少假设,有些步骤也略显模糊。比如,怎样才能烧开水?杯子和茶包从哪里拿?该倒多少水进杯子里?这些问题都没有回答。通常这没问题,因为大多数人熟悉泡茶的过程,但如果有人从未见过泡茶,可能会难以理解其中某些步骤。
伪代码
伪代码 是一种模拟代码,用来说明程序的功能,而无需关心具体编程语言的复杂细节。它仍然遵循程序的结构和规范,使用明确的命令,但不涉及特定语言的语法。
例如,“在屏幕上显示一条消息”这条指令,在伪代码中可以写作 display(message),而在Python语言中则写作 print(message)。注意,Python代码使用了非常具体的 print 命令,这是它用来在屏幕上输出信息的方式。其他语言虽然使用的命令不同,但基本功能类似。
下面是一个用伪代码描述泡茶过程的例子:
1boil(water, 250ml) in kettle 2get(cup) from cupboard 3get(teabag) from box 4put(teabag) in cup 5when(kettle boils) 6{ pour(water, 250ml) in cup } 7wait(2 mins) 8remove(teabag) from cup 9get(milk, 20ml) 10add(milk, 20ml) to tea 11stir(tea)
一个熟悉某种编程语言的程序员,应该能够根据伪代码理解逻辑,并将其转换为实际的编程语言。伪代码在编写代码之前用于规划程序结构非常有用,也便于使用不同编程语言的程序员之间交流想法。