首页 理论教育 流程控制的常用符号和方法

流程控制的常用符号和方法

时间:2023-06-24 理论教育 版权反馈
【摘要】:流程图是用一些图框来表示各种操作。ANSI规定了一些常用的流程图符号。其实,一个程序或一个函数,整体上都是一个顺序结构,它是由一系列的语句或控制结构组成,这些语句与结构都按先后顺序运行。此外,在进入case判断,并执行完相应程序后,一般要使用break退出switch结构。

流程控制的常用符号和方法

流程图是用一些图框来表示各种操作。用图形表示算法,直观形象,易于理解。特别是对于初学者来说,使用流程图能帮助你更好地理清思路,从而顺利编写出相应的程序。ANSI(美国国家标准学会)规定了一些常用的流程图符号。

图2—2 程序流程图

正如我们之前提到的,C语言是一种结构化的编程语言,主要包括顺序结构、选择结构、循环结构。

1.顺序结构

在顺序结构中,程序按语句先后顺序依次执行。其实,一个程序或一个函数,整体上都是一个顺序结构,它是由一系列的语句或控制结构组成,这些语句与结构都按先后顺序运行。如图2—3所示,其中程序段1和程序段2两个框是按顺序执行的,也就是在执行完程序段1框中的操作后,接着会执行程序段2框中的操作。

图2—3 顺序结构

图2—4 C语言程序运行结果

2.选择结构

选择结构又称分支结构。在编写程序过程中,我们经常需要根据当前的数据值作出判断,决定下一步的操作。如图2—5所示是一个选择结构,该结构中包含一个判断框。根据判断框中的条件的成立与否,来选择执行程序段1或程序段2。执行完程序段1或程序段2的操作后,程序将离开该选择结构。

图2—5 选择结构

if语句

if语句是最常用的选择结构实现方式,当给定表达式为真时,就会运行其后的语句,通常有三种结构。

(1)单分支结构

单分支结构表示当条件满足,if后面的表达式的结果为真,那就执行{ }中的语句。一起来看下面这个简单的例子。

图2—6 C语言程序运行结果

(2)双分支结构

双分支结构增加了一个else语句,当给定表达式结果为假时,便运行else后面{ }中的语句。

图2—7 C语言程序运行结果

(3)多分支结构

根据实际情况,还可以使用多个if语句,从而形成多个分支,用于判断多种不同情况。

图2—8 C语言程序运行结果

switch…case语句

在处理比较复杂的问题时,经常会遇到有很多选择分支的情况,如果还使用if…else的结构编写程序,就会使程序显得冗长,且可读性差。在这种情况下,我们就可以使用switch语句来解决问题。其形式如下:

图2—9 C语言程序运行结果

switch结构会将switch后面()内的表达式与case后的常量表达式进行比较,如果符合就运行与当前常量表达式所对应的语句;如果都不相符,则会运行default后的语句,如果不存在default部分,程序将直接退出switch结构。

值得注意的是,switch后的表达式结果只能是整型字符型。如果要使用其他类型,则必须使用if语句。此外,在进入case判断,并执行完相应程序后,一般要使用break退出switch结构。如果没有使用break语句,程序则会一直执行到有break的位置退出或运行完该switch结构退出。

3.循环结构(www.xing528.com)

图2—10 当型循环结构

图2—11 直到型循环结构

循环结构又称重复结构,即反复执行某一部分操作。有两类循环结构:当型循环和直到型循环。当型循环结构会先判断给定条件,当给定条件不成立时,程序立即退出该结构;当条件成立时,执行程序段框,执行完程序段框内的操作后,再次判断条件是否成立,如此循环反复。直到型循环结构会先执行程序段框,然后判断给定的条件是否成立,成立即退出循环,反之则返回该结构的起始位置,重新执行程序段框,如此反复。

while循环语句

while语句是一种当型循环。只有满足表达式的条件,才会执行循环体中的语句。我们来看一个简单的例子。

图2—12 C语言程序运行结果

如果while后面表达式的值永远为“真”或者值为“1”时,程序就会进入死循环,就如例6所示,至于如何才能避免死循环的产生,我们会在稍后讲解。

图2—13 C语言程序运行结果

do…while循环语句

do…while循环语句与while语句不同,是一种直到型循环,它会一直循环到给定条件不成立为止。这种类型的循环至少会先执行一次do语句后的循环体,再判断是否进行下一次循环。

图2—14 C语言程序运行结果

for循环语句

for循环语句适用于循环次数确定的情况,所以总是需要一个变量,用它来计算循环次数。通常用i,j,k等小写字母来命名这些计数变量。for循环语句的括号内有三个部分,用分号(;)分开。第一部分用来设置计数变量的初始值,如i=0;第二部分用来设置判断条件,如i <=5;第三部分用来对计数变量执行递增或递减操作,如i++。

图2—15 C语言程序运行结果

表示初始值i为10,当i小于15时运行循环体中的语句,每执行完一次循环,i的值会自动加1。

在循环结构中,都有一个表达式用于判断是否要进入循环体。通常情况下,当该表达式结果为false(假)时程序就会跳出循环。但有时候,我们需要让程序提前结束循环,或者程序已经满足了一定条件,需要跳过本次循环余下的语句。这时,我们就会用到关键字break和continue。

在前文介绍switch多分支选择结构的时候已提及关键字break。其实,break不仅可以终止选择结构,也可以使程序跳出循环结构,执行余下的程序语句。此时,break一般会借助if语句来判断是否满足条件需要跳出循环。一般来说,其形式 如下:

  while(表达式){

  if(表达式)break;

… 

}

关键字continue允许我们忽略本次循环中剩下的语句,直接跳转到条件控制点并判断是否开始下一次循环。同样,continue一般也要搭配if语句使用。其形式如下:

  while(表达式){

  if(表达式)continue;

}

最后,总结一下循环语句编写的要点:

在程序中,循环控制特别需要注意的是防止出现死循环,在循环体内应该包含结束循环的语句。

使用for循环语句时,条件变量的初始化在for后的括号内,而用while和do…while循环语句时,循环变量的初始化操作应在循环体之前进行。while循环语句和for循环语句都是先判断表达式,后执行循环体,而do…while循环语句是先执行循环体然后判断表达式,所以,do…while的循环体至少会被执行一次,而while循环体和for循环体则有可能一次都不执行。

以上三种循环语句都可以使用break语句跳出循环,也可以使用continue语句结束当前的循环。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈