在研究程序设计的算法时人们发现,复杂的算法都可以由顺序结构、分支(选择)结构和循环结构这三种基本结构组成。因此,构造一个算法的时候也仅以这三种基本结构作为“建筑单元”。这样用就象用模块构建的一样,结构清晰,易于验证其正确性,易于纠错,这种方法就是结构化的设计方法。
生活中的问题虽然远较程序设计中的问题更复杂,但生活算法也是以这三种基本结构构建起来的。
1. 顺序结构
所谓顺序就是按照一定的次序,一步步地解决问题。例如,每天早晨起床前后的活动是:
(图略)
使用计算机中很多操作的流程都是顺序结构,例如保存文件的过程是:
(图略)
在顺序结构中,有些环节是可以改变前后次序的,而有些环节必须按照一定次序执行。如“刷牙”和“洗脸”两个环节,是可以改变先后次序的。可以先刷牙,然后再洗脸。也可以先洗脸、然后刷牙。但是“起床”、“上学”两个环节中必然是先“起床”,后“上学”。生活中是不会出现先“上学”,后“起床”的。
顺序是最基本的算法形式。
生活中利用技术解决问题的过程都按照一定的次序来进行的。如果某些关键环节的次序错了很可能出现问题无法的尴尬。
2. 分支结构
一部分问题在不同的条件下会有着不同的步骤和方法,这就是分支结构。在生活中的“选择”、“判断”都是典型的分支结构。
例如:打算明天去公园玩,但如果天气不好,那只好在家中看电视。这个过程可以表示成为下图。
(图略)
在真实的生活中,解决某个问题时是按照前后次序流程顺序进行的。但是如果考虑解决问题时,往往还要想到那些没有被执行的活动。执行的与没有执行的,整个规划、推理的算法中,有相当多的环节是分支(选择)结构。在许多情况下,不是选择了这种步骤就是选择那种步骤。
3. 循环结构
由于没有达到某种条件而不停地重复,这样的过程就是一种循环结构。在现实生活中,我们也经常会碰到这样的事情。例如:在跳绳比赛中以时间为限,只要是没有到时间之前,要不停地跳下去。
(图略)
生活中的重复少了一些完全相同,多了许多相似事情的重复。重复的内容可能并不完全一致,但非常相似。这样的重复也是一种循环结构。
在算法中,顺序结构、条件分支结构、循环结构并不彼此孤立。三种基本结构既可以并列,也可以相互包含,在循环中常常伴有条件分支和顺序结构,条件分支结构中也常常伴有循环和顺序结构。正是这三种基本结构按照不同的结构组成了不同的算法。
4. 模块化的基本思路
算法经常是环环相扣的模块化的结构。
所谓模块化其实就是把一个大的问题按一定的分类方式分成若干个小问题,直到问题被分解到最简单、最单一的结构,就好像是搭积木一样。
例如:前面所说的起床后的活动,可以分为起床、刷牙、洗脸、吃饭、上学几个顺序,这样就把一个复杂的程序分解成为若干个相对简单一些的部分了。如果需要再进一步的细化,那么我们就要把这些列举出来的部分再进一步细分。
例如:可将洗脸这一个部分再分解为下列几个动作序列:1、拿毛巾;2、洗毛巾;3、拧干毛巾;4、擦脸;5、洗毛巾;6、拧干毛巾;7、放毛巾。
(图略)
有了生活算法的顺序、分支、循环三种基本结构,根据从顶及底的设计思路,利用模块化的设计方法就可以分析与规划生活中许多问题了。这样通过分析并且设计出来的解决方案将会是一种更全面的解决方法,既从全局的角度来思考的,也能从细节考虑的解决方案。
【系列内容,随时更改,暂勿学术引用】

〖生活算法系列2〗—生活算法的基本形式 