按 ‘ 2012年12月26日 ’ 归档

程序员入伙书——如果、那么、否则

在《初涉算法》一章,我说过程序没什么神秘的,无非是做三件事:

  1. 计算
  2. 流程控制
  3. 输入输出

关于基本的计算,前头几章已经讲过了。现在开始说说流程控制(Flow Control)。

流程控制是程序的核心价值。如果一段程序从头到尾平铺直叙,一条大路走到黑,就不好意思说自己是程序了,顶多是在打算盘。试想,如果没有流程控制,“从1累加到100”的任务就只能这样完成,老没劲了:

total = 0
total += 1
total += 2
total += 3
:
:
total += 99
total += 100

一个有趣的程序,一定有种种的岔路和转圈。读者可能会问:你不是说计算机不会思考,所有的行为都是已知的么?岔路的变数从何而来?俺回答:道路是已知的,走路的人是未知的。种种变数,来自于人类或其它机器的输入。例如你正在看这个页面,计算机不知道你下一步是往上翻屏、往下翻,还是关掉窗口。你的下一步动作是机器无法预知的,但计算机做好了应对你的任何操作的准备——只要你不掐电源。

下面我就开始介绍“岔路”了:如果这样,如果那样。

举个例子,Python有个功能叫max,如果你在Python Shell里写max(1, 3)按回车,max一定会回答“3”。我们看看,如果自己来写这个功能,程序是什么样的。尝试一下这个例子——在Python Shell下按Ctrl-N打开一个窗口,输入这段代码:
猛击阅读全文

程序员入伙书——赋值语句

赋值语句,就是把一个值搁到一个变量里的过程。

完成这个过程很简单,一个“=”足矣。打开Python,随意输入类似这样的语句:

>>> radius = 10
>>> pi = 3.1415926535897932
>>> circumference = radius * pi * 2
>>> circumference
62.83185307179586
>>> 

看看,几条赋值语句就把半径等于10的圆的周长求出来了,是不是很容易?这些语句当然可以简单地写成10 * 3.1415926535897932 * 2,这里演示的是思考的过程。

初学编程的人,容易在两件事上不习惯,我这里单列出来:

一、“=”不是“相等”的意思,而是“把等号右边的值算出来,放到等号左边的变量里去”。
二、赋值完成后,等号左边变量原有的值就被覆盖了,消失了,找不回来了。

这些要点,以前举例时说过或者暗示过,这次隆重重申一下。为了体会第一点,试试这段代码(以前的例子里挺常见的):

>>> total = 0
>>> total = total + 3
>>> total
3
>>> total = total + 4
>>> total
7
>>> 

像total = total + 4这种代码,现在在我眼里,是再正常不过的东东,但刚学编程的时代,是每次一瞧心里都咯噔一下的,因为把“等式”两边各减去total,即得到0 = 4。这怎么可能?!现在看顺眼了,因为我现在明白这句话就是三个步骤:把total的值读出来放到一个运算器里,在这个运算器里加4,把运算器的结果放回到total里去。
猛击阅读全文

随想的趣事

话说,北方孩子到江南去念书。出发前挺忐忑的,听说江浙那旮旯口味甜,怕自己不习惯。

到了地方打电话回家来:妈!我挺好的!这边口味一点都不甜!粽子、汤圆儿、豆腐脑儿,都是咸的!