04C51流程控制语句
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程序控制语句解析
4.switch语句
switch(整形或字符型变量) { case 变量可能值1:分支一;break; case 变量可能值2:分支二;break;
2.2.3
循环语句
1.while语句
while(表达式) { 循环体 } 循环条 件? T 语句 F
事先测试循环,在执 行语句之前判断表达 式,因此,循环可能 没有执行循环体就退 出。
【例2-6】
使用while语句实现从1到100的累加。
#include<reg52.h> #include<stdio.h> void main() { unsigned int i=1; unsigned int sum=0; SCON=0x52; TMOD=0x20; TH1=0xE8; TR1=1;
模块二 C51语言与 Keil C集成开发系统
2.2 C51程序结构控制语句
2.2.1 C51语句概述
一个完整的C51程序包括数据描述和数据操 作。 • 数据描述定义数据结构和数据初值,由数 据定义部分来实现; • 数据操作是对己提供的数据进行加工,这 部分的功能就是由语句来实现的。
既包括与底层硬件无关的数据 也包括如特殊功能寄存器(SFR)等与底层
硬件状态直接相关的数据。
2.2.1
C51语句概述
分号是语句的终结符,一个语句必须在最后出现 分号,分号是语句中不可缺少的一部分,在后面 介绍空语句时会看到,甚至一个单独的分号也可 以构成一个语句。 C51的语句按其复杂度可以分为简单语句和复杂语 句。 可以用花括号“{”和“}”把一些语句组合在 一起,使其在语法上等价于一个简单语句,这样 的语句就称之为复合语句。 复合语句中最后一个语句中最后的分号不能忽略 不写;结束一个复合语句的右花括号之后不能带 分号。
C51的常用语句
以上的都是合法的表达式语句。一般来说,任何表达式在末尾加上分号“;”,
便可以构成语句。示例如下:
a=a+8
//赋值表达式
a=a+8;
//赋值语句
3.复合语句
5
复合语句是用花括号“{}”将一组语句组合在一起而构成的语句。C51语言中由单个表 达式和末尾的分号构成的语句是简单语句。在C51语言中,复合语句是允许嵌套的,即就是 在花括号“{}”中的“{}”也是复合语句。复合语句在程序运行时,“{}”中的各行单语 句是依次顺序执行的。在C51语言中使用复合语句需要注意如下几点:
(1)C51语言中,复合语句在语法上等同于一条单语句。 (2)复合语句中不但可以由可执行语句组成,还可以用变量定义等语句组成。要注意 的是在复合语句中所定义的变量,称为“局部变量”,所谓局部变量就是指它的有效范围 只在复合语句中。 (3)对于一个函数而言,函数体就是一个复合语句,函数内定义的变量有效范围只在 函数内部。
C51的常用语句
1
C51的常用语句
1.声明语句 2.表达式语句 3.复合语句 4.循环语句 5.条件语句 6.开关语句 7.跳转语句 8.调用语句 9.返回语句
C51的常用语句
2
C51语句,即C51语言中的操作命令,用于使单片机完成特定的功能。 C51的源程序是由一系列的语句组成的,这些语句可以完成变量声明、赋值 和控制输入输出等操作。一条完整的语句必须以“;”结束。由于单片机能 识别的是机器指令,因此一般一条语句经过编译后生成若干条机器指令来执 行。C51语言中的语句包括说明语句(声明语句)、表达式语句、复合语句、 循环语句、条件语句、开关语句、跳转语句、调用语句和返回语句等,下面 分别进行说明。
5.条件语句
C51 流程控制语句
上一页 下一页 返回
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; •} • 其语义是:计算表达式的值,并逐个与其后的常量表达式值相比较,
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;
第4章_Cx51流程控制语句
A
B
4.1.2 选择结构及其流程图
如果计算机只能做象顺序结构那样简单的基 本操作,那么它的用途将十分有限。计算机功能 强大的原因在于它具有决策能力,或者说具有选 择能力。 在如图所示地选择 结构中,程序首先对一 个条件(P)进行检测, 当条件为真(Y)时执行 任务A,反之(N)则执行 任务B。 Y A
{case 0: //嵌套条件0 {c=10;break;} //任务0 case 2: //嵌套条件1 {c=20; break;} //嵌套任务1 default: //嵌套条件外情况 (可选) {c=30;} //嵌套条件之外任务 } //嵌套条件之外任务
} }
4.3 循环语句
4.3.1 while语句 4.3.2 do while语句 4.3.3 for循环语句
出口
在并行多分支结构中,根据k值的不同取值0、 1、2、3分别选择执行A、B、C、D。
4.1.3 循环结构及其流程图
所有的分支机构都使程序流程一直向前执行, 除非使用了定向跳转语句goto,而使用循环结构可 以使分支程序重复地执行。
goto语句也称为无条件转移语句,其一般格式如下: goto 语句标号; 其中语句标号是按标识符规定书写的符号, 放在某一语句行的 前面,标号后加冒号(:)。语句标号起标识语句的作用,与goto 语句 配合使用。 如: label: i++; loop: while(x<7); C语言不限制程序中使用标号的次数,但各标号不得重名。goto语句 的语义是改变程序流向, 转去执行语句标号所标识的语句。 goto语句通常与条件语句配合使用。可用来实现条件转移, 构成循 环,跳出循环体等功能。 但是,在结构化程序设计中一般不主张使用goto语句, 以免造成程 序流程的混乱,使理解和调试程序都产生困难。
第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章 Cx51流程控制语句
要养成对循环体加花括号的习惯。尽管在循环
体只有一条语句时可以不加花括号,但是加了可以 更加安全,特别在多层嵌入语句的情况下,可以避 免不小心引起的错误。
再次强调,一定要有保证在最坏情况下退出循环 体的保全措施,以防出现死循环。
4.3.2 do while语句
do while语句的一般形式为: do { 语句; /*循环体*/ } while ( 表达式 ) 其中表达式仍然是while语句能否继续的条件, 语句部分同样是循环体,用来完成某些任务。 只要表达式为真,就重复执行其中的循环体, 直到表达式结果为假时,中断这个循环,继续执行 循环体之外的其它任务。
while循环语句的语法流程如下图所示:
入口
进入while循环
P为真? Y 循环体内重 复操作语句
N
退出循环执 行下面语句 出口
while结构的最大特点在于,其循环测试条件处 于循环体的开头,若想进入循环体这必须首先进行 循环条件测试。若测试条件一开始就不合格,则循 环体内语句就一次都不会执行。
//基本条件判断 //条件0 //条件0任务 //条件1 //条件1任务 //条件外情况(可选) //嵌套基本条件判断 {case 0: //嵌套条件0 {c=10;break;} //任务0 case 2: //嵌套条件1 {c=20; break;} //嵌套任务1 default: //嵌套条件外情况 (可选) {c=30;} //嵌套条件之外任务 } //嵌套条件之外任务
初始语句、循环条件和结尾语句都不是必须的, 任何一部分都可以省略。
例 for(;;) { a+=1; if(a>100) break; } 这个例子中,是依靠循环体内的条件检测,利用 break语句来结束循环的。
第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.多层条件嵌套的条件语句
教学课件:第四章-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单片机的流程控制语句 来实现程序的逻辑控制。
单片机C语言编程常用语句讲课稿
C51函数
一、函数的定义与分类 ⒈ 函数的分类
⑴ 标准库函数 ⑵ 用户自定义函数 用户自定义函数是用户根据自己的需要而编写的函数。 从函数定义的形式上划分:无参数函数、有参数函数 和空函数。 ⒉ 函数的定义 返回值类型 函数名(形式参数列表)
#include <reg52.h>
void main()
{
char a;
a=P1;
a=a&0x03;
/*屏蔽高6位*/
switch (a)
{
case 3:P1=0x83;break;
case 2:P1=0x43;break;
case 1:P1=0x23;break;
case 0:P1=0x13;
}
void main()
{
char a; while (1) {
While中的条件恒为1,表示 死循环。
a=P1;
a=a&0x03;
/*屏蔽高6位*/
switch (a)
{
case 3:P1=0x83;break;
case 2:P1=0x43;break;
case 1:P1=0x23;break;
case 0:P1=0x13;
⒉ 二维数组 ⑴ 二维数组的定义 类型说明符 数组名[行数] [列数]; 如:float a[3][4]; ⑵ 二维数组的初始化 int a[3][4]={{1,2,3,4},{5,6,7,8}, {9,10,11,12}}; /*全部初始化*/ int a[3][4]={{1,2,3,4},{5,6,7,8}, {}}; /*部分初始化,a[2][0]= a[2][1]= a[2][2]= a[2][3]= 0*/
[理学]04-cx51流程控制语句
幸福感的三种来源我的“经济学思想史”研究班的课结尾,昨天开始听学生的课堂报告,有趣,第一组的主题是“幸福”研究,接着我那本《经济学思想史讲义》的第一主题。
幸福感的三种来源:1)物质生活;2)社会生活;3)精神生活。
详细解释呢?很冗长,也很不清晰。
不过,有案例可参照。
从物质生活的维度获取幸福感,我们现在的生活方式提供了最多的样本。
从社会生活的维度获取幸福感,西方人现在的倾向,称之为“社群主义”或“后现代”倾向。
Agnies Heller解释,这是一种深层次的情感卷入(emotional involvement),它产生的幸福感,远为深刻和久远。
恋爱当然是它常见的形式,但还有更多更复杂的其它形式。
总之,幸福的这一来源的行为学特征是,这里发生的情感,是指向他人的,不是向内的自恋情结。
在教室里,我难以让学生们信服的,是幸福的第三种来源与第二种来源的区分。
第三种来源是精神生活的维度,我提供的案例意味着,这一维度的特征是“精神的自足”,中国古儒所说“不外求”的心性状态。
西方管理学家彼得·圣吉和他的团队,似乎很热衷于这一维度的体验。
印度大哲,也可为案例。
学生们的课堂报告,主要介绍了欧洲和北美学者1950年代至1990年代的研究报告,问卷调查的结果,三类预测:1)个人幸福感的增长正比于人均财富的增长,这是1950年代战后繁荣时期的典型感受;2)个人幸福感的增长与人均财富的增长完全无关,前者是一常量,后者随时间上升,这是1960年代社会动荡和思想变革之后的典型感受;3)个人幸福感的增长与财富的增长,先呈现正相关关系,然后,大约在人均20000美元(1990年美元不变价)之后,呈现负相关关系。
这是后现代社会的典型感受。
我的问题是:中国人普遍的感受是上列哪一种呢?或许,我们应将中国人按照收入和财富划分为若干层级?赵婕摘自汪丁丁搜狐博客。
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的语句按其复杂度可以分为简单语句和复杂语 句。 可以用花括号“{”和“}”把一些语句组合在 一起,使其在语法上等价于一个简单语句,这样 的语句就称之为复合语句。 复合语句中最后一个语句中最后的分号不能忽略 不写;结束一个复合语句的右花括号之后不能带 分号。
C51 流程控制语句
上一页
返回
4.2 选 择 结 构
• 4.2.1 if 语句的三种基本形式
• C51 语言的if 语句有三种基本形式。 • 1. 第一种形式(基本形式) • if(表达式)语句 • 其语义是:如果表达式的值为真,则执行其后的语句,否则不执行该
语句,其过程如图4.2 所示。 • 例4.4 输入两个整数,输出其中的大数。请编程实现此功能。 • #include <stdio.h> • void main()
上一页 下一页 返回
4.3 循 环 结 构
• (1) while 语句中的表达式一般是关系表达式或逻辑表达式,只要 表达式的值为真(非0)
• 即可继续循环。 • (2) 循环体如果包括有一个以上的语句,则必须用“{}”括起来,
组成复合语句。 • (3) 应注意循环条件的选择以避免死循环。 • 二、do-while 语句 • do-while 语句的一般形式为: • do • 语句;
(3);否则,转至步骤(4)。 • (3) 执行循环体语句组,并求解“循环变量增值”表达式3,然后
转向步骤(2)。
上一页 下一页 返回
4.3 循 环 结 构
• (4) 执行for 语句的下一条语句。 • 对“变量赋初值”“循环继续条件”和“循环变量增值”部分均可缺
省,甚至全部缺省,但其间的分号不能省略。 • 当循环体语句组仅由一条语句构成时,可以不使用复合语句形式。
第4 章 C51 流程控制语句
• 4.1 顺序结构 • 4.2 选择结构 • 4.3 循环结构 • 4.4 C51 数组 • 4.5 函数 • 4.6 程序设计
返回
4.1 顺 序 结 构
• 顺序结构是一种最基本、最简单的编程结构。在这种结构中,程序由 低地址向高地址顺序执行指令代码。如图4.1 所示,程序先执行A 操 作,再执行B 操作,两者是顺序执行的关系。
第四章 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=?