文档介绍:C程序设计语言
第3章控制流
孙志岗******@hit.
2017/11/10
1
Control Flow
三种基本结构
顺序结构、选择结构、循环结构
已经证明,任何程序均可只用这三种结构实现
BÖhm, Corrado, and Jacopini Guiseppe. "Flow diagrams, Turing machines and languages with only two formation rules." Communication of ACM, 9(5):366-371, May 1966.
只用这三种结构的程序,叫结构化程序
程序“必须”符合结构化规则
流程图
顺序结构
选择结构
true
false
true
false
循环结构
语句块(Block)
{}括住的若干条语句构成一个语句块
语句块内可以定义变量
变量必须在语句块的开头定义
变量仅在定义它的语句块内(包括下层语句块)有效()
同一个语句块内的变量不可同名,不同语句块可以同名()
各司其职、下层优先
尽量不要在下层语句块内定义变量,也尽量不要定义同名变量
语句块可以用在任何可以使用语句的地方,但没有道理要乱加语句块
if-else
选择结构的一种最常用形式
if (表达式) 语句块1;else 语句块2;语句块3
表达式值非0时,执行语句块1,然后语句块3;表达式值为0时,执行语句块2,然后语句块3
else部分可以没有。当表达式值为0时,直接执行语句3
if-else嵌套使用时,注意else和谁配套的问题
表达式!=0?
Y
N
语句块1
语句块2
语句块3
else-if
if的一种扩展
if (表达式1) 语句块1;else if (表达式2) 语句块2;else if (表达式3) 语句块3;…………else 语句块4;语句块5;
else部分可以没有
表达式1!=0?
Y
N
语句块1
语句块2
语句块5
表达式2!=0?
表达式3!=0?
语句块3
N
语句块4
N
Y
Y
switch
多路选择
switch (表达式) { case 整型常数1: 语句1; case 整型常数2: 语句2; ………… default: 语句3;}
default可以没有
现场编程完成计算器……
不要忘记break
switch和else-if的比较
else-if比switch的条件控制更强大一些
else-if可以依照各种逻辑运算的结果进行流程控制
switch只能进行==判断,并且只能是整数判断
switch比else-if更清晰
两者都要尽量避免用得过多、过长,尤其不要嵌套得太多
它们大大增加程序的分支,使逻辑关系显得混乱,不易维护,易出错
循环——while,for
while (表达式) 语句块;
for (表达式1; 表达式2; 表达式3) 语句块;
while
while (表达式) 语句块1;语句块2;
只要表达式的值为非0,就重复执行语句块1,直到表达式值为0时止,开始执行语句块2
表达式!=0?
Y
N
语句块1
语句块2