C51同C语言一样,都是结构化的程序设计语言,其程序结构与一般的C语言程序结构没有差别,每个程序由若干个模块组成,每个模块又包含若干个基本结构,每个基本结构可以有若干条语句。结构化的C51程序设计语言有三种基本程序结构:顺序结构、分支结构和循环结构。
顺序结构是最基本、最简单的程序结构,程序按照语句的先后顺序依次执行。本节重点介绍其他两种程序结构及控制语句。
1.分支程序
分支程序有三种基本形式,其结构流程如图5-1所示。
图5-1 分支程序结构流程图
a)基本形式if(表达式)语句 b)if-else形式c)switch-case语句形式或if-else的嵌套形式
(1)if语句 用if语句可以构成分支结构,是两个条件的选择语句,它根据给定的条件进行判断,以决定执行哪个分支程序段。if语句有以下两种基本形式。
1)简单if语句。
格式:if(表达式)语句;
说明:如果表达式的值为真,则执行其后的语句,否则不执行该语句,即不操作。基本形式if(表达式)语句流程如图5-1a所示。
例如:两个数求较大值,用单if语句。
C51语言实现程序如下:
void main()
{ inta,b,max;
说明:如果表达式的值为真,则执行语句1,否则执行语句2。if-else形式流程如图5-1b所示。
例如:如图5-2所示,开关S1接在P3.0接口上,用发光二极管VL1(接在单片机P1.0接口上)显示开关状态,如果开关合上,VL1亮,开关断开,VL1熄灭。流程如图5-3所示。
图5-2 接线图
图5-3 流程图
3)if-else的嵌套形式。
由于前两种形式的if语句只有两个分支的情况,当有多个分支选择时,可在分支里面套分支,来实现多分支结构。
其一般形式为:
说明:依次判断表达式的值,当出现某个值为真时,则执行其对应的语句,然后跳到整个if语句之外继续执行程序。如果所有的表达式均为假,则执行语句n+1,然后继续执行后续程序。嵌套形式if-else语句的流程如图5-1c所示。
例如:比较两个数的大小。
C51语言实现程序如下:
另外,if-else的嵌套还可以把新的分支嵌在if分支里,也可以在if分支和else分支各自插入新的分支。
在if语句的三种形式中,所有的语句应为单个语句,如果要想在满足条件时执行一组(多个)语句(语句块),则必须把这一组语句用{}括起来组成一个复合语句,但要注意的是在“}”之后不能再加分号。(www.xing528.com)
(2)switch-case语句switch-case语句是另一种用于多分支选择的语句,其一般形式为:
说明:计算表达式的值,并逐个与其后的常量表达式值相比较,当表达式的值与某个常量表达式的值相等时,即执行其后的语句,然后不再进行判断,继续执行后面所有“case”后的语句。如果表达式的值与所有case后的常量表达式均不相同,则执行“default”后的语句。switch-case语句形式如图5-1c所示。
另外值得注意的是:各个“case”后面的语句,如果没有break语句,程序则不会跳出switch-case结构,会对后面的“case”条件继续进行判断,符合则执行相应的语句块,直到结束。
2.循环程序
图5-4 循环结构程序流程图
a)当型循环结构 b)直到型循环结构
循环结构是程序设计中一种极为重要的程序结构,其特点是:当条件成立时,反复执行某程序段,直到条件不成立为止。给定的条件称为循环条件,反复执行的程序段称为循环体。循环结构程序流程如图5-4所示。图5-4a是典型的当型循环结构,控制语句在循环体之前,所以在结束条件已具备的情况下,循环体程序可以一次也不执行。C51提供了while和for语句实现这种循环结构。图5-4b是直到型循环结构,其控制部分在循环体之后,即使在执行循环体程序之前结束条件已经具备,循环体程序至少还要执行一次,因此称为直到型循环结构。C51提供了do-while语句实现这种循环结构。
(1)while语句 while语句的一般形式为:
while(表达式) {语句块;}
其中表达式是循环条件,语句块为循环体。
说明:程序首先计算表达式的值,当值为真(非0)时,执行循环体语句块。
图5-5 接线图
例如:发光二极管接在AT89C51的P1.0引脚上,其接线如图5-5所示(只画出与题目相关部分),用while语句编制延时程序实现发光二极管闪烁。
C51语言实现程序如下:
(2)do-while语句 do- while语句的一般形式为:
这个循环与while循环的不同在于:它先执行循环中的语句,然后再判断表达式是否为真,如果为真则继续循环;如果为假,则终止循环。因此do-while循环至少要执行一次循环语句。其执行过程可用图5-4b表示。
例如:按上例中的要求,用do-while语句编制延时程序实现发光二极管闪烁。
C51语言实现程序如下:
(3)for语句 for语句使用非常灵活,执行流程如图5-6所示,它的一般形式为:
for([变量赋初值];[循环继续条件];[循环变量增值]){循环体语句组;}
例如:按上例中的要求,用for语句编制延时程序实现发光二极管闪烁。
C51语言实现程序如下:
图5-6 for语句执行流程图
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。