程序的结构及分类
程序的结构化是一个设计思想,规定了一套方法,是程序具有合理的结构,以保证和验证程序的正确性。这种方法要求程序设计者布恩那个随心所欲的编写程序,而要按照一定的结构形式来设计和编写程序。他的一个重要目的是使程序具有良好的结构,使程序易于设计,易于理解,易于调试修改,以提高设计和维护程序工作的效率。
结构化程序设计的三种基本结构是:顺序结构、选择结构(分支结构)、循环结构。
顺序结构表示程序中的各操作是按照它们出现的先后顺序执行的。
选择结构表示程序的处理步骤出现了分支,它需要根据某一特定的条件选择其中的一个分支执行。选择结构有单选择、双选择和多选择三种形式。
循环结构表示程序反复执行某个或某些操作,直到某条件为假(或为真)时才可终止循环。在循环结构中最主要的是:什么情况下执行循环?哪些操作需要循环执行?循环结构的基本形式有两种:当型循环和直到型循环。
分支语句介绍
顺序结构的程序虽然能解决计算、输出等问题,但不能做判断再选择。对于要先做判断再选择的问题就要使用分支结构。分支结构的执行是依据一定的条件选择执行路径,而不是严格按照语句出现的物理顺序。分支结构的程序设计方法的关键在于构造合适的分支条件和分析程序流程,根据不同的程序流程选择适当的分支语句。分支结构适合于带有逻辑或关系比较等条件判断的计算,设计这类程序时往往都要先绘制其程序流程图,然后根据程序流程写出源程序,这样做把程序设计分析与语言分开,使得问题简单化,易于理解。
C语言中分支结构包括:if语句和switch语句。
if语句介绍
形式一(if):如果表达式为真,则执行语句块1,否则不执行。
1 if(表达式) 2 { 3 语句块1; 4 } 5 后续语句;
形式二(if...else...):如果表达式为真则执行语句块1,否则执行语句块2
1 if(表达式){ 2 语句块1; 3 }else{ 4 语句块2; 5 }
形式三(if...else if...else if ...else):if 和 else之间可以有多个else if,从上往下只执行第一个为真的表达式对应的代码块内容。
从表达式1开始往下判断,当表达式为真就执行该表达式对应的语句块,例如从表达式1开始判断一直到表达式n才出现表达式的值为真,那么就执行语句块n中的内容,当语句块执行结束后跳出整个if语句。如果表达式1到表达式n的值都为假则执行else后面的语句块n+1。
且根据情况需要可以省略最后的else及语句块内容。
1 if(表达式1){ 2 语句块1; 3 }else if(表达式2){ 4 语句块2; 5 }else if(表达式3){ 6 语句块3; 7 } 8 ... 9 else if(表达式n){ 10 语句块n; 11 }else{ 12 语句块n+1; 13 }
形式四(if 语句的嵌套):if语句中根据需要还可以嵌套if语句。
使用if语句值得注意的地方:
#1 if(表达式) ;//if后面跟空语句,表示如果表达式的值为真则什么也不干。
#2 if(表达式) return 0; //函数不会往下执行了,直接退出。一个函数可以有多个return,但只有一个起作用。
#3 if(非零常量) 表示永真、if(0)表示永假。没有实际意义
#4 遇到省略大括号的if语句,从下往上依次匹配 else 匹配 if
switch语句介绍
又称开关语句。
1)使用格式
switch(表达式){
case 常量表达式1: 语句1;
case 常量表达式2: 语句2; ...
case 常量表达式n: 语句n;
default: 语句n+1;
}
其语义是:计算表达式的值。 并逐个与其后的常量表达式值相比较,当表达式的值与某个常量表 达式的值相等时, 即执行其后的语句,然后不再进行判断,继续执行后面所有case后的语句。如 表达式的值与所有case后的常量表达式均不相同时,则执行default后的语句。
2)case穿透问题
ase语句执行的过程中,一旦进入某个分支后就会一直执行到switch结束。为了避免上述情况,C语言还提供了一种break语句,专用于跳出switch语句.
3)swith语句值得注意的地方:
1) 表达式的类型(case语句后的值)必须是整型或可以转变为整型的值 (byte、short、char和int类型)。整形变量 整形常量 返回值是整形的表达式 可以装换为int类型的表达式
2) 功能代码部分可以写任意多句。
3) case语句可以有任意多句,可以不用加括号“{}”
4) break关键字的意思是中断,指结束switch语句,break语句为可选。
4)case值得注意的地方
1)case的值1、值2...值n只能为常数或常量,不能为变量。
2)case的值必须是整数,不能为浮点数。
3)case后面不可以直接定义变量
4)如果在case后面定义的变量必须加上大括号
5) default语句可以写在switch语句中的任意位置,功能类似于if语句中的else。但是写在最上面会重新一次往下执行,穿透是往下穿透的。default写在最后省略break不影响。
执行流程:在执行的过程中,如果遇到break语句,则跳出switch语句。如果没有遇到break 语句,则一直执行到switch语句的结束。
循环语句介绍
在不少实际问题中有许多具有规律性的重复操作,因此在程序中就需要重复执行某些语句。一组被重复执行的语句称之为循环体,能否继续重复,决定循环的终止条件。循环结构是在一定条件下反复执行某段程序的流程结构,被反复执行的程序被称为循环体。 循环语句是由循环体及循环的终止条件两部分组成的。
while循环
while结构循环为当型循环(when type loop),一般用于不知道循环次数的情况。维持循环的是一个条件表达式,条件成立执行循环体,条件不成立退出循环。
一般形式:
while (表达式){
循环体;
}
do...while循环
do…while语句结构为直到型循环(until type loop),也用于不知道循环次数的情况。do…while和while的区别在于do…while结构是执行完一遍循环体再判断条件。
一般形式:
do{
循环体;
} while(表达式); //注意最后的分号
for循环
-
for为当型循环语句,它很好地体现了正确表达循环结构应注意的三个问题:
-
for表达式
-
for语句格式为:
-
for语句执行过程如下: