1.C51语句和程序结构
C51语句是计算机执行的操作命令,一条语句以分号结尾(注意:程序中的变量、函数声明部分尽管不是语句,但也以分号结尾)。从程序流程分析,程序主要有顺序结构、选择结构和循环结构这样三种最基本的结构。而C语句有表达式语句、复合语句、控制语句、空语句和函数调用语句等。
2.表达式语句、复合语句和顺序结构程序
表达式语句的一般形式为如下:
例如:x=y+z; /*赋值语句*/
i++; /*自增1语句*/
顺序结构程序由按先后顺序执行的多个语句组成,在C语言中,常常将按顺序执行的多条语句用花括号{}括起来构成复合语句,复合语句中每个语句以分号结尾,复合语句花括号后不再加分号。而没有内容,只有分号,不执行任何操作的语句称为空语句。像赋值语句那种不包含其他语句的语句,称为简单语句。通常用复合语句描述顺序结构程序。例如实现两个变量值交换的复合语句为:
3.选择语句和选择结构程序
(1)关系运算符和关系表达式。比较两个量的大小关系的运算符称为关系运算符,关系运算符有6种:<(小于)、<=(小于等于)、>(大于)、>=(大于等于)、==(等于)、!=(不等于)。
关系运算符都是双目运算符,都具有左结合特性。
关系表达式的一般形式为:
表达式1关系运算符 表达式2
例如:a>b,(a+b)<(c-d)等都是关系表达式。
关系表达式的结果取值为1(真)或0(假)。
(2)逻辑运算符和逻辑表达式。逻辑运算符有&&(逻辑与)、‖(逻辑或)、!(逻辑非)这样3种。
1)逻辑与表达式:表达式1 && 表达式2
当表达式1和表达式2的值都是非零时,表达式的值为1,否则为0。
2)逻辑或表达式:表达式1 ‖ 表达式2
当表达式1和表达式2的值中,只要有一个为非零,则表达式的值为l,否则为0。
3)逻辑非表达式:!表达式
当表达式值为0时,逻辑非表达式为1;表达式值为1时,逻辑非表达式值为0。
(3)if语句。if语句用来判定所给的条件是否满足来决定执行的两种可能操作之一。if语句有3种形式。
1)if(表达式)语句;
括号中的表达式一般为关系表达式或逻辑表达式。当表达式的值为非零时,则执行语句;否则,不执行语句。语句可以是简单语句或复合语句。
例如:
2)if(表达式)语句1;
else 语句2;
当括号中的表达式值为非零时执行语句1;否则,执行语句2。其中的语句1和语句2可以是简单语句或复合语句。
例如:
这种形式的if语句可以实现多种条件的选择。
在第2和第3种if语句中,应注意if和else的配对,else总是和最近的if配对。在ifelse语句中可以再包含ifelse语句,构成if-else语句的嵌套。
(4)条件表达式。在if(表达式)语句1;else语句2;这种形式中,若语句1、语句2都是给同一个变量赋值,则可以用更加简洁的条件表达式来实现。条件表达式的一般形式为:(www.xing528.com)
表达式1?表达式2:表达式3
条件表达式求解时,先求表达式1的值,若非零(即表达式1为真),则求解表达式2的值,并作为整个条件表达式的值;如果表达式1的值为零(即表达式1为假),则求解表达式3的值,并作为整个条件表达式的值。例如:
可以改写为条件表达式:
(5)switch语句。switch语句是直接处理多分支的选择语句,其功能类似于51的散转指令JMP@A+DPTR。一般形式为:
switch语句中的表达式一般为整型或字符型表达式,当表达式的值和某一个case后的常量表达式i相同时,就执行对应的语句i,语句i+1,…,语句n+1。若要使各种情况互相排斥,只执行语句i,应在每个语句后加上退出循环的语句break;若表达式和所有的常量表达式不匹配,则执行语句n+l。同时要求在switch语句中所有的常量表达式必须不同。
【例4-2】 若在一个应用系统中设置5个单字符命令:A、F、G、W、Z。变量SIO_IN为串行口输入的字符。要求设计一个程序,若SIO_IN为合法的命令字符求出其命令号(0~4),非法字符则置为0FFH。设SIO_IN、CMD_N为已定义的无符号字符型变量,则程序如下:
4.循环语句和循环结构程序
(1)while语句。while语句的一般形式为:
while(表达式)语句;
其中,()内的表达式为循环条件,一般为关系表达式或逻辑表达式,语句为循环体,可以是简单语句、复合语句或空语句。while语句执行过程如图4-12(a)所示。
【例4-3】 求S=1+2+3+…+100和的程序,请用while循环来实现:
图4-12 while不同结构的执行过程图
do-while语句先执行循环体语句,再求解表达式值,判断是否退出循环。do-while语句执行过程如图4-12(b)所示。
【例4-4】 求S=1+2+3+…+100和的程序,请用do-while循环来实现:
【例4-5】 P1.1输出16次跳变,产生8个脉冲,P1.1初态为0,则程序如下:
(3)for语句。for语句的一般形式为:
for(表达式1;表达式2;表达式3)语句;
for语句的执行过程如图4-13所示。循环程序由循环变量初始化、循环体、修改循环变量、判断循环终止条件等部分组成,上面的while、do-while语句循环变量初始化放在语句的前面,而循环变量的修改放在循环体中。而for语句具有循环程序的所有部分,可以理解为:
for(循环变量赋初值;循环条件;循环控制变量修改)
{语句}/*循环体,可以是简单语句、复合语句或空语句*/
图4-13 for语句循环结构图
for语句中的表达式1可以有几个表达式,表达式之间用逗号分开(,号表达式)。表达式1也可以省略,但分号(;)不可省略。如果表达式2省略(;号不可以省)则不判断条件,无限循环,表达式3也可省略,此时应在循环体中增加修改循环控制变量的语句。
【例4-6】 用for语句实现S=1+2+3+…+100的程序。
另外,for(;;),其功能相当于SJMP S|,即无限次循环。
(4)goto语句、break语句和continue语句。
1)goto语句为无条件跳转语句,一般形式为:
goto语句标号;/*goto语句尽量少用*/
2)break语句用来从循环体中跳出循环体,终止整个循环。一般形式为:
Break;
3)continue语句用于循环体中,其功能为跳过本次循环中尚未执行的语句,继续下次循环,而不终止整个循环,一般形式为:
Continue;
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。