学径 LearnPath

程序

1 / 1 · ← → 翻页

阅读模式

第 1 课

程序:机器之心

把计算步骤写成机器可执行的形式。

艾达·洛夫莱斯
艾达·洛夫莱斯,约1840年,阿尔弗雷德·爱德华·查隆绘。来源:Wikimedia Commons / Science Museum Group,公有领域。

导言

课程目标

理解「程序」:先做什么、再做什么、何时停止。

写出第一行Python代码,让你的计算机向世界问好!

现象

分析机:不只是更快的算盘

查尔斯·巴贝奇的分析机试验模型
查尔斯·巴贝奇分析机的运算部件试验模型,1834–1871,伦敦科学博物馆藏。来源:Wikimedia Commons / Science Museum,CC BY-SA 2.0。

多数人以为:只是更快的计算器。

现象

艾达看见的,不只是算术

艾达·洛夫莱斯
艾达·洛夫莱斯,约1840年,阿尔弗雷德·爱德华·查隆绘。来源:Wikimedia Commons / Science Museum Group,公有领域。

若能按规则操作符号,也能处理音乐与图形。

现象

ENIAC:换线缆,就换计算过程

宾夕法尼亚大学穆尔学院的 ENIAC
ENIAC 功能表前的操作,1946年。U. S. Army Photo。来源:Wikimedia Commons,公有领域。

改变连接方式,就改变机器在做什么。

原理

什么是计算过程

计算 3×4+53\times 4 + 5:

  1. 先算前两项的积 3×43\times 4,得到 12
  2. 再算它与第三项的和 12+512 + 5,得到 17

原理

步骤相同,数字可变

改变数字并不会改变计算的过程,比如:

换成 6×5+46\times 5 + 4,仍是这两步:

  1. 先算前两项的积 6×56\times 5,得到 30
  2. 再算它与第三项的和 30+430 + 4,得到 34

原理

代数化

既然如此,不如写成

a×b+ca\times b + c

不再用于具体的数字计算,而是表示一个抽象的「计算的过程」。

原理

改写成机器能懂的语言

用 0 与 1 写成的机器语言
示意图:机器以二进制编码将要执行的步骤。为本课绘制。

线缆的连接,或二进制代码。

讨论

机器与程序缺一不可

单有机器:一堆耗电的器件。

单有步骤:纸上的数学题。

二者合在一起,才算计算机科学。

原理

语言是人机之间的翻译

对于我们人类来说,不论是电源的开关游戏,还是0、1的二进制谜语,都太难掌握了。

编程语言就是让人类把计算过程用特定的符号来表示,然后再把符号翻译成机器可执行的指令。

讨论

本课选用 Python

Python 官方标志
Python 语言官方标志。设计:Tim Parkin;Python Software Foundation 商标。来源:python.org。

Python语言结构简单,语法接近人类的日常语言习惯。

在今天Python以及成为了数据处理相关领域里事实上的标准语言,为了不论从事哪类科学工作,都用得到Python

在很多大学里Python都是理工科的通识必修课。

例题

hello, world!

python
print('hello, world!')

请打开顶栏「在线 IDE」,当场运行。

原理

理解print

IBM 1403 宽行打印机
IBM 1403 宽行打印机,1959 年起用于主机把计算结果印在纸上。摄影:Crisco 1492。来源:Wikimedia Commons,CC BY-SA 3.0。

早期没有显示器,结果印在纸上。

例证

括号与引号

python
print(2 + 3)
print('2 + 3')
  • 括号:限定要输出的内容,须用英文括号
  • 无引号:理解为运算符号,先完成计算再输出
  • 有引号:只按字面输出

先让学生猜两行各自输出什么,再点破。

辨析

语法错误

python
print(hello, world!)
print('hello, world!')
printer('hello, world!')

可挑一两组当场运行,读出 SyntaxError。

实践

本节练习

先打印 1.2 + 0.8 这几个字。

再打印相加结果,应为 2.0。

请打开「在线 IDE」。第一行是带引号的字面算式,第二行是去掉引号后的结果。

小结

本节要点

请你总结

已到最后一页。可按 ← 回顾,或切换回阅读模式。