C51 流程控制语句
第四章 C51流程控制语句
第四章
C51流程控制语句
6
4.1.3 循环结构及其流程图
循环结构两大要素: 无限循环 循环条件 p 死循环 结束循环的条件表达式 循环体 A 循环执行的语句或语句组
名词解释 名词解释
空循环 设置循环条件要特别注意确定: 循环变量的初值 循环变量的终值 循环变量的变化规律
第四章 C51流程控制语句
第四章 C51流程控制语句
5
4.1.3 循环结构及其流程图
在C51语言中可用以下语句构成循环:
if … goto while do … while for
其中if … goto是通过编程技巧(if语句和goto语句组 合)构成循环功能。而且goto语句将影响程序流程的 模块化,使程序可读性变差,所以结构化程序设计主 张限制goto语句的使用。 其他三种语句是C51语言提供的循环结构专用语句。
第四章
【例】 求∑i =1+2+3+4…+99+100 (i=1~100)
C51流程控制语句
21
main( ) 4.3.4 其他循环控制结构 {
break 结束循环
在switch中退出switch结构;
第四章
C51流程控制语句
20
4.3.3 for语句循环结构
一般形式 for (表达式1;条件表达式;表达式3) 循环语句(组);
用于构成计数型当型循环:先 判断后执行/条件为真继续循环, main() 直到条件为假时结束循环。 表达式1: 整个循环中只执行1次, { 常用来对循环变量设置初值 int i , s=0; 条件表达式(表达式2): 其值 为真(非0)时继续执行循环语 for (i=1;i<=100;i++) 句(组),否则结束循环 s=s+i; 表达式3: 常用于循环变量值的 更新(循环体的一部分每次循环 } 语句组执行完后执行一次) s=?
C51的程序语句
C51的程序语句1表达式语句在表达式的后面加一个分号“;”,构成表达式语句;一行可以放一个表达式语句,也可放多个表达式语句,每个表达式后面须用“;”分隔;一行还可以仅由一个“;”占一行形成一个表达式语句,即空语句2复合语句由若干条语句组合而成的一种语句,用大括号“{ }”将若干条语句包括在一起就形成了一个复合语句。
复合语句最后不需要以分号“;”结束,但它内部的各条语句仍需以分号“;”结束。
复合语句的一般形式如下:{局部变量定义<程序体>}3顺序、选择和循环结构选择结构可以用if/else, if/else if等语句实现;多分支结构,通过if和else if 语句嵌套实现,也可用switch/case语句实现;循环结构通过while、do while、for、goto等语句实现。
4条件、分支和循环语句4.1 if语句――基本条件选择语句,一般有三种格式4.2 switch/case语句――处理多分支结构的语句4.3 while—循环语句While do语句:先判断,后执行。
While (表达式)[do] {语句;} /*循环体*/先计算表达式的值,为真时,执行循环体内的语句,否则,不执行循环体中的语句,中止循环,执行循环体后的下一条语句。
表达式的值可以在循环体内改变。
Do{语句;} /*循环体*/While (表达式);/*先执行,后判断表达式的值,表达式的值为真,则再执行循环体,然后再判断。
循环体的内容至少执行一次*/4.4 for 语句――循环For 语句是C51中使用最灵活、最频繁的循环控制语句,可以完全代替while语句,功能最强大,格式如下:For (表达式1;表达式2;表达式3){语句;} /*循环体*/4.5 循环的嵌套4.6 break和continue语句4.7 return语句5 C51的函数方法5.1 函数的定义格式函数类型函数名(形式参数表) [reentrant] [interrupt m] [using n] 形式参数说明{ 局部变量定义函数体}函数类型说明了函数的返回值的类型函数名是用户为自定义函数取的名字,以便于调用函数时使用形式参数用于列举在主调函数与被调函数之间进行数据传递的形式参数Reentrant 修饰符Interrupt m修饰符Using n用于指定本函数内部使用的工作寄存器组,其中n的取值为0~3,表示寄存器组号。
C51流程控制语句
C语句分类
表达式语句:表达式加分号;构成。 空语句: ;
程序控制语句(9种):
if( )~else~ switch for( )~ 循环 while( )~ do~while( ) continue break 辅助控制 goto return
分支
1
4.4.1 C程序的三种基本结构
24
一般形式: do { 循环体语句; } while(表达式); 执行流程:
循环体 真(非0)
while 表达式 假(0)
特点:先执行循环体,后判断表达式 说明: 至少执行一次循环体 17
:
3.for语句
for(循环变量赋初值;循环条件;修改循环变量) { 循环体语句; }
说明: for语句中表达式1,表达 式2 ,表达式3 都可省略, 但分号;不可省 无限循环: for(;;)
实现if ~ else 正确配对方法:加{ }
10
4. switch语句(开关分支语句)
一般形式:
switch 表达式 case E1 语句组1 E2 语句组2 En
…...
语句组n
执行过程:
switch( 表达式) { case E1: 语句组 1; break; case E2: 语句组 2; break; default ……. 语句组n+1 case En: 语句组 n; break; [default: 语句组n+1 ; break;] } 11
格式:if (表达式)
{
真(非0)
语句组; }
例:if (x>y) printf(“%d”,x);
5
4.4.2 选择语句
C51程序设计03语句及流程控制
3. if-else-if语语句的一般形式 if( 表达式1 ) 语句1; 表达式1 语句1; else if( 表达式2 ) 表达式2 语句2; 语句2; else 语句3; 语句3; if-else-if语句又称为嵌套的 语句又称为嵌套的if-else语句,其中,语句 、语句 语句, 语句又称为嵌套的 语句 其中,语句1、 2、语句 可以是 可以是C51语言中任意合法的语句。 语言中任意合法的语句。 、语句3可以是 语言中任意合法的语句
3.1.3 循环语句
在程序设计中经常会遇到需要重复执行的操作, 在程序设计中经常会遇到需要重复执行的操作,如延 累加、累乘、数据传递等, 时、累加、累乘、数据传递等,利用循环结构来处理各类 重复操作既简单又方便。 重复操作既简单又方便。 C51 语言中提供了 种语句来实现循环结构,分别是 语言中提供了3种语句来实现循环结构 种语句来实现循环结构, while 语句、do-while 语句和 语句、 语句和for 语句。其中,while语句又 语句。其中, 语句又 称为“ 型循环, 语句又称为“ 称为“当”型循环,do-while语句又称为“直到”型循环。 语句又称为 直到”型循环。
复合语句虽然可由多条语句组成,但它是一个整体, 复合语句虽然可由多条语句组成,但它是一个整体, 相当于一条语句, 相当于一条语句,凡可以使用单一语句的位置都可以使用 复合语句。在复合语句内,不仅可以有执行语句, 复合语句。在复合语句内,不仅可以有执行语句,还可以 有变量定义(或说明 语句。 或说明)语句 有变量定义 或说明 语句。
3. 复合语句 语言中, 在C51语言中,把多条语句用一对大括号括起来组成 语言中 复合语句。 的语句称为复合语句 复合语句又称为“语句块” 的语句称为复合语句。复合语句又称为“语句块”,其一 般格式为 { 语句 ;语句 ;…;语句 ;} 语句1;语句2; ;语句n;
C51程序设计(完整)
第1章C51数据类型与运算1.1C51数据类型C51的数据类型如下所示:C51编译器支持的数据类型、长度和值域如下表1-1所示。
与面向数学运算的计算机相比,51单片机对变量类型或数据类型的选择更具有关键性意义。
如果在程序设计中使用大量而不必要的变量类型,这会导致C编译器调用库函数的数量,以处理大量的变量类型和数据类型。
所以必须特别慎重地进行变量和数据类型的选择。
1.2C51数据存储类型C51编译器还可以通过将变量、常量定义成不同的存储类型(data,bdata,idata,pdata,xdata,code)的方法,将它们定义在不同的存储区中。
存储类型与51单片机实际存储空间的对应关系如表1-2所示。
储区中。
片内RAM是存放临时性传递变量或使用频率较高变量的理想场所。
访问片内数据存储器(data、bdata、idata)比访问片外数据存储器(xdata、pdata)相对快一些,因此可将经常使用的变量置于片内数据存储器,而将规模较大的或不常使用的数据置于片外数据存储器中。
C51存储类型及其大小和值域如表1-3所示。
例如:表1-3 C51存储类型及其大小和值域char data var1; /*字符变量var1被定义为data存储类型,定位在片内RAM中*/bit bdata flags; /*位变量flags被定义为data存储类型,定位在片内RAM中的位寻址区*//*(20H~2FH)*/float idata x,y,z; /*浮点变量x,y,z被定义为idata存储类型,定位在片内RAM中,并只能用间接寻址的方法进行访问*/unsigned int pdata dimension; /*无符号整型变量dimension被定义为pdata存储类型,定位在片外RAM中,并用MOVX @Ri访问*/ unsigned char xdata vector[10][4][4]; /*无符号字符三维数组变量vector[10][4][4]被定义为xdata存储类型,定位在片外RAM中,占据10×4×4=160个字节空间*/如果在变量定义时省略存储类型标志符,编译器会自动默认存储类型。
C51程序控制语句解析
源程序清单:
#include<reg51.h> void main() { unsigned char ctl; P1=0X0F; while(1) { ctl=P1; } } ctl=ctl & 0x0f; switch(ctl) { case 0x0e:P1=0x8f ; break; case 0x0d:P1=0x4f ; break; case 0x0b:P1=0x2f ; break; case 0x07:P1=0x1f ; break; default:P1=0x0f; }
转移语句
2.continue语句 continue;
• continue语句的作用是跳过本次循环中剩余的 循环体语句,立即进行下一次循环
【例2-11】
针对例2-9,其 功能改变为当与 P1.0相连的K1按 下时,发光二极 管暂停闪烁,K1 放开时,发光二 极管继续闪烁, 试编写程序实现 之。
#include <reg51.h> sbit P10 = P1^0; sbit P00 = P0^0; void main() { int i; while(1) { if(P10 == 0) continue; P0=~P0; for(i=30000;i>0;i++); } }
硬件状态直接相关的数据。
2.2.1
C51语句概述
分号是语句的终结符,一个语句必须在最后出现 分号,分号是语句中不可缺少的一部分,在后面 介绍空语句时会看到,甚至一个单独的分号也可 以构成一个语句。 C51的语句按其复杂度可以分为简单语句和复杂语 句。 可以用花括号“{”和“}”把一些语句组合在 一起,使其在语法上等价于一个简单语句,这样 的语句就称之为复合语句。 复合语句中最后一个语句中最后的分号不能忽略 不写;结束一个复合语句的右花括号之后不能带 分号。
第4章 C51流程与控制
#include <stdio.h> main( ) { int s, n;
for(s=0,n=1;n<=100;n++)
s+=n; while(1); } /*累加求和*/
18
#include <reg51.h> main( ) { int s, n; s=0; n=1; while(n<=100) { s+=n; n++; } while(1); } ----------------------------------------------//用 do-while 计算1-100的累加和 #include <reg51.h> main( ) { int s, n; s=0; n=1; do { s+=n; n++; }while(n<=100); while(1); }
void main() { int a, b, c; a=2; //主函数
b=3;
if (a!=b) a++; if (a==b) a--; c=a+b; }
5
//if语句的单分支结构
2. 双分支结构
条件语句包含两个语句分支,由关键字if和else构成, 其一般形式为: if (表达式) 语句1;
环的操作。
22
2. continue语句
用来跳过循环体中剩余的语句而强行执行下一次循环。 其使用的一般形式如下: continue;
在 C51 语 言中, continue 语句 只用在 for 、 while 、 dowhile等循环体中,常与if条件语句一起使用,可以提前结 束本次循环。
第4章 C51流程与控制
例题
例如:
⑴ if (x>0) m++; else m--; ⑵ if ( ch>= 'a' && ch<= 'z' ) { ch=ch-32 ; printf(" %c\n",ch); } else printf(" %c\n",ch) ;
要求按下键K1时灯亮,松开K1时灯灭
if语句(条件选择语句)
⑵ if (c<=100)
与 哪 个 if 配 对 ?
⑶ if (c<=100)
再如:
if(a>b) if(a>c) if(a>d) m=1; else m=2; else m=3;
问题:哪一个 else 和哪一个 if 相匹配? 规则:在嵌套的if~else语句中,else总是与 上面的离它最近的尚未配对的if 配对。
功能:
流程图
Y 语句1
表达式1?
N N …
Y 语句2
表达式2?
Y
语句m
N 语句n
例题
例如:
if (a<0) x= -1 ; else if (a==0 ) x= 0 ; else x=1 ;
说明: if后面的表达式类型任意 语句可以是复合语句 如:if(a==b&&x==y) printf(“a=b,x=y”); if(x) if(x!=0) if(3) printf(“OK”); if(!x) if(x==0) if(„a‟) printf(“%d”,‟a‟); 例 考虑下面程序的输出结果: #include <stdio.h> main() { int x,y; scanf(“%d,%d”,&x,&y); if(x>y) Compile Error! x=y; y=x; else x++; y++; printf(“%d,%d\n”,x,y); }
2019年第13章C51语句和流程.ppt
13.7.1 goto语句
• goto语句是一个无条件的转向语句,在C51程序执行到这个语句时,程序指针就会无
条件地跳转到goto后的标号所在的程序段。goto语句在很多高级语言中都会有,其一
般形式如下:
• goto 语句标号;
• 其中的语句标号为一个带冒号的标识符。使用goto语句的程序示例如下:
• #include <stdio.h>
//头文件
•
• void main()
//主函数
•{
• int i=0,total=0;
• loop:
//语句标号
• total = total +i;
续程序;当表达式为假时,就跳过分支语句,执行后续程序。 • 使用if语句的单分支结构程序,示例如下: • #include <stdio.h>
//头文件 • • void main()
//主函数 •{ • int a,b;
//变量声明 • a=1;
//初始化 • b=1;
//初始化 • if (a==b) a++;
条件分支。该语句从上到下逐个对条件进行判断, 一旦条件为真,就执行与其相关的分支语句,并 跳过剩余的阶梯;如果没有一个条件为真,则执 行最后一个else分支语句n+1。
13.6 开关语句
• 开关语句主要用于在程序中实现多个语句分支处理。在C51
程序中,开关语句以关键字switch和case来标识。开关语
//执行运算
•
第4章 C51语句和流程
if-else-if结构的流程结构
4.2.3
循环结构
• 循环结构的程序是指循环重复执行同一代码段的 程序。这种结构常用于需要多次执行某项任务处 理的场合,可以简化代码。一般由while语句、 do-while语句、for语句等构成。while语句、dowhile语句、for语句构成的循环结构示意图,分 别如图所示。
x!( x > 0) ⎧ y=⎨ 3 2 ⎩x − 2 x + (x ≤ 0)
4.3
小结
• 本章首先详细讲述了单片机C51语言中的各种语句 结构,包括变量声明语句、表达式语句、复合语 句、循环语句、条件语句、开关语句、程序跳转 语句、函数调用语句、函数返回语句和空语句。 这些语句是C51程序最基本最重要的组成部分。本 章还介绍了几种常用的程序流程控制结构,包括 顺序结构、选择结构和循环结构等。熟练运用本 章介绍的各种语句以及流程控制结构,可以达到 简化程序的目的,是C51语言进行程序设计的基础。
• 在C51中常采用模块化程序结构,而对于复杂的应 用程序,为了控制模块间的执行顺序,这时就需 要采用一定的流程控制结构来实现。C51程序可以 采用前面介绍的各种流程控制语句来实现。一般 来说,比较常见的流程控制结构是顺序结构、分 支结构和循环结构等三种。对于比较复杂的程序 设计,还可以多种流程控制结构嵌套使用,以达 到最优的处理效果。
4.1.5
条件语句
• 条件语句由关键字if构成,用于需要根据某些条 件来控制执行走向的程序。条件语句又被称为if 条件语句或“分支语句”。条件语句是很重用的 程序控制语句,在C51的程序设计中经常会用到。 C51语言提供了多种形式的if条件语句,下面分别 进行介绍。 • 1.单分支条件语句 • 2.双分支条件语句 • 3.多分支条件语句 • 4.多层条件嵌套的条件语句
第3章C51语言程序设计基础
(5)符号常量
C51语言中允许将程序中的常量定义为一个标识符,称为符号常量。 符号常量一般使用大写英文字母表示,以区别于一般用小写字母表 示的变量。 符号常量在使用前必须先定义,定义的形式是: #define 标识符 #define PI 常量 3.1415926
2.变量
变量的定义: int i,j,k; si; ui; 数据类型 变量名; unsigned char unsigned int
第3章 单片机C51语言设计基础
3.1 C51的数据
3.2
3.3 3.4
C51对单片机主要资源的控制
C51的基本运算与流程控制 C51的数组与指针
3.5
3.6
C51函数
C51的预处理命令
3.1 C51的数据
3.1.1 3.1.2 3.1.3 3.1.4 数据类型 常量与变量 数据存储类型 局部变量与全局变量
分为单精度(float)型和双精度(double)型。 其定义形式为: float x,y; //指定x,y为单精度实数 double z; //指定z为双精度实数 在一般系统中,一个float型数据在内存中占4个字节 (32位),一个double型数据占8个字节(64位)。单精 度实数提供7位有效数字,双精度实数提供15~16位有效 数字。
(3)字符型常量
字符型常量是指用一对单引号括起来的一个字符。如'a'、'9'、'! '等。字符常量中的单引号只起定界作用并不表示字符本身。
在C51语言中,字符是按其对应的ASCII码值来存储的,1个字符占1 个字节
字符串常量是指用一对双引号括起来的一串字符,双引号只起定界作用, 如"China"、"123456"等。
教学课件:第四章-C51流程控制语句
用于控制程序的执行流程,使其跳 转到指定的代码位置。C51中的跳 转语句包括break语句、continue 语句和return语句。
03
条件语句
if语句
条件判断的关键字
if语句是C51中用于条件判断的关键字,它允许程序根据某个条件的结果来决定 是否执行一段代码。if语句通常以if关键字开始,后面跟着一对圆括号,用于包含 条件表达式,最后是一个代码块,只有在条件表达式的结果为真时才会执行。
三元运算符
一行内的条件表达式
VS
三元运算符是C51中用于在一行内编 写条件表达式的一种简写方式。它的 语法格式为“条件 ? 表达式1 : 表达 式2”,其中条件是一个布尔表达式, 如果条件为真,则整个表达式的值为 表达式1的值,否则为表达式2的值。 这种运算符可以用于简化if-else语句 的写法,使代码更加简洁明了。
04
循环语句
while循环
条件判断在先,执行循环体在后
while循环首先判断给定的条件是否为真,如果为真,则执行循环体内的语句;执行完毕后再次判断 条件,如此往复,直到条件不再满足为止。
do-while循环
执行循环体在先,条件判断在后
do-while循环先执行一次循环体内的语句,然后再判断给定 的条件是否为真,如果为真,则再次执行循环体内的语句; 如此往复,直到条件不再满足为止。
教学课件:第四章-C51流 程控制语句
• 引言 • C51流程控制语句概述 • 条件语句 • 循环语句 • 跳转语句 • 综合实例
01
引言
课程介绍
01
本章是C51单片机编程的重要章 节,主要介绍C51单片机的流程 控制语句。
02
通过学习本章,学生将掌握如何 使用C51单片机的流程控制语句 来实现程序的逻辑控制。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
上一页 下一页 返回
4.2 选 择 结 构
• (4) if 语句的嵌套。 • 当if 语句中的执行语句又是if 语句时,则构成了if 语句嵌套的情形。
• 数组是一组具有固定数目和相同类型成分分量的有序集合。 • 1. 一维数组 • 定义:类型说明符 数组名[整型表达式] • 2. 二维数组 • 定义:类型说明符 数组名[常量表达式][常量表达式] • 3. 字符数组 • 定义方法同上。 • 字符数组中'' '' 括起来的一串字符,称为字符串常量。C 语言编译器
上一页 下一页 返回
4.3 循 环 结 构
• while(表达式); • 其中语句是循环体,表达式是循环条件。 • do-while 语句的语义是:先执行循环体语句一次,再判别表达式的
值,若为真(非0)则 • 继续循环,否则终止循环。 • do-while 语句和while 语句的区别在于do-while 是先执行后判断,
• 4.2.2 switch-case 语句
• C51 语言还提供了另一种用于多分支选择的switch 语句,其一般形 式为:
• switch(表达式) •{ • case 常量表达式1: 语句1;
上一页 下一页 返回
4.2 选 择 结 构
• case 常量表达式2: 语句2; •… • case 常量表达式n: 语句n; • default : 语句n + 1; •} • 其语义是:计算表达式的值,并逐个与其后的常量表达式值相比较,
数main( )中,最后在主函数main( )中结束整个C 程序的运行。 • 1. 函数的分类 • C 语言函数分为主函数main( )和普通函数两种。普通函数从不同角
是否结束还是继续,修改指针和变量是为下一次循环判断做准备,当 符合结束条件时,结束循环;否则,继续循环。 • (4) 结束:存放结果或做其他处理。 • 在循环程序中,有两种常用的控制循环次数的方法:一种是循环次数 已知,这时把循环次数作为循环计算器的初值,当计数器的值加满或 减为0 时,即结束循环;否则,继续循环。
4.2 选 择 结 构
• 2. 第二种形式 • if(表达式) • 语句1; • else • 语句2; • 其语义是:如果表达式的值为真,则执行语句A,否则执行语句B。
其过程如图4.3 所示。
上一页 下一页 返回
4.2 选 择 结 构
• 3. 第三种形式(if-else-if 形式) • 前两种形式的if 语句一般都用于两个分支的情况。当有多个分支选择
第4 章 C51 流程控制语句
• 4.1 顺序结构 • 4.2 选择结构 • 4.3 循环结构 • 4.4 C51 数组 • 4.5 函数 • 4.6 程序设计
返回
4.1 顺 序 结 构
• 顺序结构是一种最基本、最简单的编程结构。在这种结构中,程序由 低地址向高地址顺序执行指令代码。如图4.1 所示,程序先执行A 操 作,再执行B 操作,两者是顺序执行的关系。
下一页 返回
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); •}
上一页 下一页 返回
时,可采用if-else-if语句,其一般形式为: • if(表达式1) • 语句1; • else if(表达式2) • 语句2; • else if(表达式3) • 语句3; •…
上一页 下一页返回
4.2 选 择 结 构
• else if(表达式m) • 语句m; • else • 语句n; • 其语义是:依次判断表达式的值,当出现某个值为真时,则执行其到
下一页 返回
4.3 循 环 结 构
• 循环程序一般包括以下4 个部分: • (1) 初始化:置循环初值,即设置循环开始的状态,比如设置地址
指针、设定工作寄存器、设定循环次数等。 • (2) 循环体:这是要重复执行的程序段,是循环结构的基本部分。 • (3) 循环控制:循环控制包括修改指针、修改控制变量和判断循环
下一页 返回
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); •}
其一般形式可表示如下: • if(表达式) • if 语句; • 或者为: • if(表达式) • if 语句; • else • if 语句;
上一页 下一页 返回
4.2 选 择 结 构
• 在嵌套内的if 语句可能又是if-else 型的,这将会出现多个if 和多个 else 重叠的情况,这时要特别注意if 和else 的配对问题。
上一页
返回
4.2 选 择 结 构
• 4.2.1 if 语句的三种基本形式
• C51 语言的if 语句有三种基本形式。 • 1. 第一种形式(基本形式) • if(表达式)语句 • 其语义是:如果表达式的值为真,则执行其后的语句,否则不执行该
语句,其过程如图4.2 所示。 • 例4.4 输入两个整数,输出其中的大数。请编程实现此功能。 • #include <stdio.h> • void main()
“循环变量赋初值”表达式1,既可以是给循环变量赋初值的赋值表 达式,也可以是与此无关的其他表达式(如逗号表达式)。 • “循环继续条件”部分是一个逻辑量,除一般的关系(或逻辑)表达 式外,也允许是数值(或字符)表达式。 • for 语句中的各表达式都可省略,但分号间隔符不能少。
上一页
返回
4.4 C51 数 组
• 图4.5 是典型的当型循环结构,控制语句在循环体之前,所以在结束 条件已具备的情况下,循环体程序可以一次也不执行,C51 提供了 while 和for 语句实现这种循环结构。
• 图4.6 中其控制部分在循环体之后,因此,即使在执行循环体程序之 前结束条件已经具备,循环体程序至少还要执行一次,因此称为直到 型循环结构,C51 提供了do-while 语句实现这种循环结构。
• 二维字符数组中,第一个下标是字符串的个数,第二个下标定义每个 字符串的长度,该长度应当比这批字符串中最长的串多一个字符,用 于装入字符串的结束符' \o'。
上一页
返回
4.5 函 数
• C 语言程序的一般组成结构:
下一页 返回
4.5 函 数
• 普通函数之间可以互相调用,但普通函数不能调用主函数。 • 一个C 程序的指向从main( )函数开始,调用其他函数后返回到主函
执行结果。 • (4) default 子句可以省略不用。
上一页 下一页 返回
4.2 选 择 结 构
• 4.2.3 break语句
• C51语言还提供了一种break语句,专用于跳出switch语句。Break 语句只有关键字break,没有参数。
上一页
返回
4.3 循 环 结 构
• 程序设计中,常常要求某一段程序重复执行多次,这时可采用循环结 构程序。这种结构可大大简化程序,但程序执行的时间并不会减少。
会自动地在字符末尾加上结束符'\o'(NULL);用' ' 括起来的字符为 字符的ASCII 码值而不是字符串。比如:'a' 表示a 的ASCII 码值97, 而''a'' 表示一个字符串,它由两个字符组成,即a 和\o。
下一页 返回
4.4 C51 数 组
• 一个字符串可以用一个一维数组来装入,但数组的元素数目一定要比 字符多一个,以便C 编译器自动在其后面加入结束符' \o'。
4.2 选 择 结 构
• 例如:“if(a = 5)语句;”“if(b)语句;”都是允许的。只要表 达式的值为非0,即为“真”。如在“if(a = 5)…;”中,表达式 的值永远为非0,所以其后的语句总是要执行的,当然这种情况在程 序中不一定会出现,但在语法上是合法的。
• (2) 在if 语句中,条件判断表达式必须用括号括起来,在语句之后 必须加分号。
(3);否则,转至步骤(4)。 • (3) 执行循环体语句组,并求解“循环变量增值”表达式3,然后
转向步骤(2)。
上一页 下一页 返回
4.3 循 环 结 构
• (4) 执行for 语句的下一条语句。 • 对“变量赋初值”“循环继续条件”和“循环变量增值”部分均可缺
省,甚至全部缺省,但其间的分号不能省略。 • 当循环体语句组仅由一条语句构成时,可以不使用复合语句形式。
整个if 语句之外继续执行程序。如果所有的表达式均为假,则执行语 句n。然后继续执行后续程序。使用if 语句应注意以下问题: • (1) 在三种形式的if 语句中,在if 关键字之后均为表达式。该表达 式通常是逻辑表达式或关系表达式,但也可以是其他表达式,如赋值 表达式等,甚至也可以是一个变量。
上一页 下一页 返回
• 例4.1 要求把内部RAM 30H 中的一个压缩BCD 码(如97H),转换 为十六进制数,并把该数存放入内部RAM 31H,编程实现之。
• #include <reg51.h> • #include <absacc.h> • void main() •{ • unsigned char data a[20];