编程设计的思考方式,浅谈编程思维分支结构
编程设计的思考方式,浅谈编程思维分支结构1、A → X→ C通过这张图,我们能清楚地看到,将来可能出现的路径(分支):相信你一定能理解这两个分支,以及各个分支的顺序,现在我们将这个结构转为计算机程序伪代码:if(长发及腰) 你来娶我 else 你不能来娶我看到了吗?这里仅仅替换了汉字的『如果』,让整个语句更简单化。你可能会说,生活中的选择可复杂了,远比这个复杂,那计算机程序中如何做呢?举一个相对复杂的例子。比如期末考试前你对孩子说:这次考试你考 100 分,就可以得到优秀的评级,同时会得到一个书包奖励;如果成绩在 90 到 100 之间,评级为良好,会有一支钢笔的奖励;如果在 70 到 90 之间,评级为中等,没有奖励;70 分以下评级为差,会罚做一个假期家务。
在这个系列开篇 浅谈编程思维——程序 中,我们知道程序就是告诉计算机做事一系列命令。既然告诉计算机做事,做事就需要有一定的顺序,这个顺序决定程序的运行。我们使用的各种电脑软件,手机 APP 软件,无不受这个规律支配着。毫无疑问这是一种很强大的规律,但不会像万有引力那样难以想象理解。
今天聊分支结构,相比于顺序结构,是否走这个分支行取决于这个条件是否达到标准。看到条件,你一定既熟悉又陌生。我们熟悉条件这个词语,在生活中经常讲条件,所讲的条件就是你要达到某某标准。比如某姑娘给给心仪的男孩子说『等我长发及腰你来娶我』。这就是典型的条件语句,生活中这样,程序中这样。当然这句话是高度艺术化的,我们不妨补全这句话隐藏的部分,这句话就成了『如果我长发及腰了,你就来娶我』。这句话就清晰地表达出三层含义和两个结果:一、这句话说的未来;二、未来要满足一定的标准;三、满足标准后就会发生某种事情。同理未来可能不能满足这个条件,那就不能发生之前承诺的事情。满足条件和不满足条件就是两个分支。
这是生活中的场景,我们转换一下,转换到使它具有执行顺序。
如果我长及腰
你就来娶我
如果我没有长发及腰
你不能娶我
再看图,看看不同的分支:
相信你一定能理解这两个分支,以及各个分支的顺序,现在我们将这个结构转为计算机程序伪代码:
if(长发及腰)
你来娶我
else
你不能来娶我
看到了吗?这里仅仅替换了汉字的『如果』,让整个语句更简单化。
你可能会说,生活中的选择可复杂了,远比这个复杂,那计算机程序中如何做呢?举一个相对复杂的例子。比如期末考试前你对孩子说:这次考试你考 100 分,就可以得到优秀的评级,同时会得到一个书包奖励;如果成绩在 90 到 100 之间,评级为良好,会有一支钢笔的奖励;如果在 70 到 90 之间,评级为中等,没有奖励;70 分以下评级为差,会罚做一个假期家务。
通过这张图,我们能清楚地看到,将来可能出现的路径(分支):
1、A → X→ C
2、A → X→ B
3、A → X→ D
4、A → X→ E
这段话和前面的区别是多了 2 个条件,执行的分支也就多了 2 个,但包含的含义还是那三层。现在我们通过计算机程序转化一下:
if(100)
优秀
得到一个书包
else if (90到100之间)
良好
得到一支钢笔
else if (70到90之间)
中等
else
差
罚做一个假期家务
相信你一定能看懂这段「程序」的意思。如果你没有接触过程序,你也许会问,程序真这样写吗?是的,各个编程语言有细微的差别,但结构就是这样。
生活中能否达到条件,有我们生活中的标准。比如说长发及腰,看看头发长到腰间没有,而考试考多少分,看最终试卷的得分就行。而在计算机中,判断是否达到标准,会有一个叫做布尔值的概念。什么是布尔值,用中文语境的一句话说『非黑即白』,这个条件只有两个极端,要么达到——白,要么达不到就是黑。而在计算机就是真和假。这里悄悄地告诉你一句,现在我们用的电子计算机,最擅长表达真和假(也可以是 0 和 1)。为什么吗?先简单说一下,电子计算机是由电路的通电和未通电来确定事物状态。这些布尔值就清楚了,通电状态就是 1 ,不通电状态就是 0。也许你觉得很奇妙了,是的,奇妙的计算机世界欢迎你。
布尔(英语:Boolean)是计算机科学中的逻辑数据类型,以发明布尔代数的数学家乔治·布尔为名。它是只有两种值的原始类型,通常是True和False。
总结一下,分支结构就是基于未来假设,根据假设的条件,达到那个标准就走那条路。这里走的路就是分支。生活中未来的路,取决于我们今天所做的事情,以及周围的环境变化,等一系列复杂互相影响的因素。而计算机程序中的未来,正常情况下,就取决于外界的输入。这个输入可能是键盘输入,比如刚才那段孩子成绩状况,你输入孩子最终考试成绩,就会出现对应的结果。也可能是周围环境感应,比如手伸到水龙头下,开始放水;比如感应灯感应到声音而灯亮。
目前计算机程序,绝大情况下是还是人设定它的未来,不像我们的生活,影响因素太多,未来的不确定性很大。这就再次说明了,计算机中的分支可能很多,但写法就是这样简单,语义表达也不会太复杂。