3.1.2 程序的三种基本结构
软件开发的过程中,讲究结构化程序设计方法,目的是使程序结构清晰、可读性强,提高程序设计的质量。程序的基本结构分三种。
1.顺序结构
如图3.1所示,先执行A操作,再执行B操作。
如下范例中的语句是顺序执行,也就是说,语句是从上到下、从左到右逐条执行的:

执行结果是按顺序先输出“1”,再输出“2”,最后才输出“3”。
2.选择结构
如图3.2所示,菱形框中的P代表一个条件,当条件P为真(成立)时执行A操作,否则执行B操作,只能执行A操作或B操作之一。例如玩电子游戏时,如果怪物的血大于0,则怪物咬玩家一口(执行A操作),否则怪物尸体消失(执行B操作)。

图3.1 顺序结构程序执行流程

图3.2 选择结构程序执行流程
这里简单演示一个范例,用到的if语句后面章节才会讲到,范例代码不强制要求掌握:

分析上面这段代码,条件肯定为真,所以会执行A操作,也就是输出“3>1”,这就是选择结构,两种操作选择其中之一执行。
此外,特别值得一提的是,选择结构可以派生出多分支选择结构,如图3.3所示。其中,k代表一个值,k值将与k1,k2,…,kn等多个值进行比较,如果与其中某个值相等,这里假设k与k2值相等,那么程序会选择执行k2所对应的一系列操作(图3.3中的A2操作)。

图3.3 多分支选择结构程序执行流程
多分支选择结构的典型语句是switch语句,这里简单演示一个范例,用到的switch语句后面章节才会讲到,范例代码不强制要求掌握:

3.循环结构
循环结构分为两种,即当型循环结构和直到型循环结构。

图3.4 当型循环结构程序执行流程
(1)当型循环结构。while语句是典型的当型循环结构语句:先判断条件P,再决定是否执行A操作,当条件P为真时,反复执行A操作,直到条件P为假时才停止执行A操作(停止循环)并继续往后执行其他代码,如图3.4所示。
这里演示一个while语句范例。while语句后面章节才会讲到,范例代码不强制要求掌握:

(2)直到型循环结构。do…while语句是典型的直到型循环结构语句:先执行一次A操作,再判断条件P是否为真,如果为真则继续执行A操作(反复执行A操作),直到条件P为假,如图3.5所示。有两点说明:

图3.5 直到型循环结构程序执行流程
· 可以看到,直到型循环结构至少会执行一次A操作(当型循环结构如果条件P不成立,则可能一次A操作也不执行)。
· 有些书上说判断P条件是否为假,为假则继续执行A操作。但是,C语言中的do…while语句要求条件P必须为真才会继续执行A操作。
这里演示一个do…while语句范例。do…while语句后面章节才会讲到,范例代码不强制要求掌握:

建议在程序设计中始终采用结构化的程序设计方法,养成良好的程序设计和书写习惯。