C51 流程控制语句

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
“循环变量赋初值”表达式1,既可以是给循环变量赋初值的赋值表 达式,也可以是与此无关的其他表达式(如逗号表达式)。 • “循环继续条件”部分是一个逻辑量,除一般的关系(或逻辑)表达 式外,也允许是数值(或字符)表达式。 • for 语句中的各表达式都可省略,但分号间隔符不能少。
上一页
返回
4.4 C51 数 组
• 例4.1 要求把内部RAM 30H 中的一个压缩BCD 码(如97H),转换 为十六进制数,并把该数存放入内部RAM 31H,编程实现之。
• #include <reg51.h> • #include <absacc.h> • void main() •{ • unsigned char data a[20];
4.2 选 择 结 构
• 例如:“if(a = 5)语句;”“if(b)语句;”都是允许的。只要表 达式的值为非0,即为“真”。如在“if(a = 5)…;”中,表达式 的值永远为非0,所以其后的语句总是要执行的,当然这种情况在程 序中不一定会出现,但在语法上是合法的。
• (2) 在if 语句中,条件判断表达式必须用括号括起来,在语句之后 必须加分号。
• 二维字符数组中,第一个下标是字符串的个数,第二个下标定义每个 字符串的长度,该长度应当比这批字符串中最长的串多一个字符,用 于装入字符串的结束符' \o'。
上一页
返回
4.5 函 数
• C 语言程序的一般组成结构:
下一页 返回
4.5 函 数
• 普通函数之间可以互相调用,但普通函数不能调用主函数。 • 一个C 程序的指向从main( )函数开始,调用其他函数后返回到主函
• 数组是一组具有固定数目和相同类型成分分量的有序集合。 • 1. 一维数组 • 定义:类型说明符 数组名[整型表达式] • 2. 二维数组 • 定义:类型说明符 数组名[常量表达式][常量表达式] • 3. 字符数组 • 定义方法同上。 • 字符数组中'' '' 括起来的一串字符,称为字符串常量。C 语言编译器
下一页 返回
4.2 选 择 结 构
•{ • int a,b,max; • printf("\n input two numbers: "); • scanf("%d%d",&a,&b); • max=a; • if(max<b)max=b; • printf("max=%d",max); •}
上一页 下一页 返回
是否结束还是继续,修改指针和变量是为下一次循环判断做准备,当 符合结束条件时,结束循环;否则,继续循环。 • (4) 结束:存放结果或做其他处理。 • 在循环程序中,有两种常用的控制循环次数的方法:一种是循环次数 已知,这时把循环次数作为循环计算器的初值,当计数器的值加满或 减为0 时,即结束循环;否则,继续循环。
循环体语句。
上一页 下一页 返回
4.3 循 环 结 构
• 例4.9 统计从键盘输入一行字符的个数。请编程实现此功能。 • #include <stdio.h> • void main() •{ • int n=0; • printf("input a string:\n"); • while(getchar()!='\n')n + + ; • printf("%d",n); •}
• 图4.5 是典型的当型循环结构,控制语句在循环体之前,所以在结束 条件已具备的情况下,循环体程序可以一次也不执行,C51 提供了 while 和for 语句实现这种循环结构。
• 图4.6 中其控制部分在循环体之后,因此,即使在执行循环体程序之 前结束条件已经具备,循环体程序至少还要执行一次,因此称为直到 型循环结构,C51 提供了do-while 语句实现这种循环结构。
• 4.2.2 switch-case 语句
• C51 语言还提供了另一种用于多分支选择的switch 语句,其一般形 式为:
• switch(表达式) •{ • case 常量表达式1: 语句1;
上一页 下一页 返回
4.2 选 择 结 构
• case 常量表达式2: 语句2; •… • case 常量表达式n: 语句n; • default : 语句n + 1; •} • 其语义是:计算表达式的值,并逐个与其后的常量表达式值相比较,
4.2 选 择 结 构
• 2. 第二种形式 • if(表达式) • 语句1; • else • 语句2; • 其语义是:如果表达式的值为真,则执行语句A,否则执行语句B。
其过程如图4.3 所示。
上一页 下一页 返回
4.2 选 择 结 构
• 3. 第三种形式(if-else-if 形式) • 前两种形式的if 语句一般都用于两个分支的情况。当有多个分支选择
(3);否则,转至步骤(4)。 • (3) 执行循环体语句组,并求解“循环变量增值”表达式3,然后
转向步骤(2)。
上一页 下一页 返回
4.3 循 环 结 构
• (4) 执行for 语句的下一条语句。 • 对“变量赋初值”“循环继续条件”和“循环变量增值”部分均可缺
省,甚至全部缺省,但其间的分号不能省略。 • 当循环体语句组仅由一条语句构成时,可以不使用复合语句形式。
上一页 下一页 返回
4.3 循 环 结 构
• while(表达式); • 其中语句是循环体,表达式是循环条件。 • do-while 语句的语义是:先执行循环体语句一次,再判别表达式的
值,若为真(非0)则 • 继续循环,否则终止循环。 • do-while 语句和while 语句的区别在于do-while 是先执行后判断,
下一页 返回
4.3 循 环 结 构
• 循环程序一般包括以下4 个部分: • (1) 初始化:置循环初值,即设置循环开始的状态,比如设置地址
指针、设定工作寄存器、设定循环次数等。 • (2) 循环体:这是要重复执行的程序段,是循环结构的基本部分。 • (3) 循环控制:循环控制包括修改指针、修改控制变量和判断循环
当表达式的值与某个常量表达式的值相等时,即执行其后的语句,然 后不再进行判断,继续执行后面所有case后的语句。如果表达式的 值与所有case 后的常量表达式均不相同时,则执行default 后的语句。 其执行流程图如图4.4 所示。
上一页 下一页 返回
4.2 选 择 结 构
• 在使用switch 语句时还应注意以下几点: • (1) 在case 后的各常量表达式的值不能相同,否则会出现错误。 • (2) 在case 后,允许有多个语句,可以不用“{ }”括起来。 • (3) 各case 和default 子句的先后顺序可以变动,而不会影响程序
时,可采用if-else-if语句,其一般形式为: • if(表达式1) • 语句1; • else if(表达式2) • 语句2; • else if(表达式3) • 语句3; •…
上一页 下一页 返回
4.2 选 择 结 构
• else if(表达式m) • 语句m; • else • 语句n; • 其语义是:依次判断表达式的值,当出现某个值为真时,则执行其到
• (3) 在if 语句的三种形式中,所有的语句应为单个语句,如果要想 在满足条件时执行一组(多个)语句,则必须把这一组语句用“{}” 括起来组成一个复合语句。但要注意的是在“}”之后不能再加分号。
上一页 下一页 返回
4.2 选 择 结 构
• (4) if 语句的嵌套。 • 当if 语句中的执行语句又是if 语句时,则构成了if 语句嵌套的情形。
第4 章 C51 流程控制语句
• 4.1 顺序结构 • 4.2 选择结构 • 4.3 循环结构 • 4.4 C51 数组 • 4.5 函数 • 4.6 程序设计
返回
4.1 顺 序Baidu Nhomakorabea结 构
• 顺序结构是一种最基本、最简单的编程结构。在这种结构中,程序由 低地址向高地址顺序执行指令代码。如图4.1 所示,程序先执行A 操 作,再执行B 操作,两者是顺序执行的关系。
上一页 下一页 返回
4.3 循 环 结 构
• 另一种是循环次数未知,这时可根据给定的问题条件来判断是否继续。 • 一、while 语句 • while 语句的一般形式为: • while(表达式) 语句; • 其中表达式是循环条件,语句为循环体。 • while 语句的语义是:计算表达式的值,当值为真(非0)时,执行
其一般形式可表示如下: • if(表达式) • if 语句; • 或者为: • if(表达式) • if 语句; • else • if 语句;
上一页 下一页 返回
4.2 选 择 结 构
• 在嵌套内的if 语句可能又是if-else 型的,这将会出现多个if 和多个 else 重叠的情况,这时要特别注意if 和else 的配对问题。
执行结果。 • (4) default 子句可以省略不用。
上一页 下一页 返回
4.2 选 择 结 构
• 4.2.3 break语句
• C51语言还提供了一种break语句,专用于跳出switch语句。Break 语句只有关键字break,没有参数。
上一页
返回
4.3 循 环 结 构
• 程序设计中,常常要求某一段程序重复执行多次,这时可采用循环结 构程序。这种结构可大大简化程序,但程序执行的时间并不会减少。
上一页 下一页 返回
4.3 循 环 结 构
• (1) while 语句中的表达式一般是关系表达式或逻辑表达式,只要 表达式的值为真(非0)
• 即可继续循环。 • (2) 循环体如果包括有一个以上的语句,则必须用“{}”括起来,
组成复合语句。 • (3) 应注意循环条件的选择以避免死循环。 • 二、do-while 语句 • do-while 语句的一般形式为: • do • 语句;
上一页
返回
4.2 选 择 结 构
• 4.2.1 if 语句的三种基本形式
• C51 语言的if 语句有三种基本形式。 • 1. 第一种形式(基本形式) • if(表达式)语句 • 其语义是:如果表达式的值为真,则执行其后的语句,否则不执行该
语句,其过程如图4.2 所示。 • 例4.4 输入两个整数,输出其中的大数。请编程实现此功能。 • #include <stdio.h> • void main()
整个if 语句之外继续执行程序。如果所有的表达式均为假,则执行语 句n。然后继续执行后续程序。使用if 语句应注意以下问题: • (1) 在三种形式的if 语句中,在if 关键字之后均为表达式。该表达 式通常是逻辑表达式或关系表达式,但也可以是其他表达式,如赋值 表达式等,甚至也可以是一个变量。
上一页 下一页 返回
数main( )中,最后在主函数main( )中结束整个C 程序的运行。 • 1. 函数的分类 • C 语言函数分为主函数main( )和普通函数两种。普通函数从不同角
因此do-while 至少要 • 执行一次循环体。而while 是先判断后执行,如果条件不满足,则循
环体语句一次也不执行。 • while 语句和do-while 语句一般都可以相互改写。
上一页 下一页 返回
4.3 循 环 结 构
• 三、for 语句 • for 语句的一般格式为: • for([变量赋初值];[循环继续条件];[循环变量增值]) • { 循环体语句组;} • 执行过程如图4.7 所示。 • (1) 求解“变量赋初值”表达式1。 • (2) 求解“循环继续条件”表达式2。如果其值非0,执行步骤
会自动地在字符末尾加上结束符'\o'(NULL);用' ' 括起来的字符为 字符的ASCII 码值而不是字符串。比如:'a' 表示a 的ASCII 码值97, 而''a'' 表示一个字符串,它由两个字符组成,即a 和\o。
下一页 返回
4.4 C51 数 组
• 一个字符串可以用一个一维数组来装入,但数组的元素数目一定要比 字符多一个,以便C 编译器自动在其后面加入结束符' \o'。
下一页 返回
4.1 顺 序 结 构
• DBYTE[0x30]=0x97; • a[0]=0x97; • a[2]=a[0]; • a[1]=a[1]>>4; • a[1]=a[1]*10; • a[2]=a[2]&0x0F; • a[1]=a[1] + a[2]; • DBYTE[0x31]=a[1]; • while (1); •}
相关文档
最新文档