第4章-C51流程与控制

上传人:陈** 文档编号:182498983 上传时间:2023-01-24 格式:PPT 页数:56 大小:308.50KB
返回 下载 相关 举报
第4章-C51流程与控制_第1页
第1页 / 共56页
第4章-C51流程与控制_第2页
第2页 / 共56页
第4章-C51流程与控制_第3页
第3页 / 共56页
点击查看更多>>
资源描述
第4章 C51流程与控制C语言概述nC语句:以“;”作分隔符,编译后产生机器指令.nC语句分类p表达式语句:表达式加分号构成。空语句:;if()else switchfor()while()dowhile()continuebreakgotoreturn分支循环辅助控制如 total=total+limit;a=3;func();printf(“Hello,world!n”);C语言概述p :p用 括起来的一组语句 一般形式:数据说明部分;执行语句部分;说明:“”后不加分号语法上和单一语句相同复合语句可嵌套复合语句第4章 C51流程与控制p结构化程序设计n基本思想:任何程序都可以用三种基本结构表示,限制使用无条件转移语句(goto)n结构化程序:由三种基本结构反复嵌套构成的程序叫n优点:结构清晰,易读,提高程序设计质量和效率p三种基本结构n顺序结构n选择结构n循环结构程序的三种基本结构N-S结结构构图图流流程程图图ABABYNABP成立成立?P T F A B程序的三种基本结构循环结构NYP成立成立?A当当P成立时成立时 A A直到P成立YNAP成立成立?N-S结结构构图图流流程程图图4.1 顺序结构程序顺序结构程序的一般算法描述变量定义变量定义变量赋值变量赋值运算处理运算处理输出输出结果结果可用:可用:变量初始化变量初始化 赋值语句赋值语句 输入函数调用语句输入函数调用语句顺序结构程序#includevoid main()int a,b,c;printf(nplease input a,b:);scanf(%d,%d,&a,&b);printf(nbefore exchange:a=%d b=%dn,a,b);c=a;a=b;b=c;printf(after exchange:a=%d b=%dn,a,b);程序运行情况如下:程序运行情况如下:please input a,b:32,57 before exchange:a=32 b=57 after exchange:a=57 b=32 选择结构程序(1)关系运算符和关系表达式p关系运算符也称比较运算符,即将两个值进行比较,判断其结果为“真”或“假”,(灌)pC语言提供了六种关系运算符(左结合)=!=优先级较高 优先级较低p关系表达式n用关系运算符将运算对象连接成的式子 例如:12=c 等价于 a=(b=c)ab=c 左结合 等价于(ab)=cp关系运算符优先于赋值运算符,低于算术运算符说明:p关系运算的结果应该是逻辑值。C语言中没有逻辑型数据,用数值用 1 表示逻辑真,0 表示逻辑假例如:75 的值是 1,57 的值是 0 ab的值是 0,ab 的值是1即关系表达式的值为:0 或1 p实型数可进行大于或小于比较,但通常不进行=或!=的关系运算p判断一个实型数是否等于0时,通常用其绝对值与一个很小的数进行小于比较。如:fabs(x)=z 逻辑运算符和逻辑表达式p逻辑运算符的优先级 和结合性n!是单目运算符,右结合,高于算术运算符n&和|是双目运算符,左结合,高于赋值运算符,低于关系运算符。例如:m=n&!x+y=z 等价于 m=(n&(!x)+y)=z)p逻辑运算的结果为 0 或 1例如设:a=15,b=0,c=-2 a&b&c 结果为0 a|b|c 结果为1 (a+c)|b&c 结果为1逻辑运算规则运算对象逻辑运算结果aba&ba|b!a非0非0110非000100非001100001逻辑运算规则p运算按照从左至右的顺序进行,一旦能够确定逻辑表达式的值,就立即结束运算p逻辑运算的短路性质n例如设:a=1,b=0,c=-2na&b&c关系运算符与逻辑运算符的应用p表示数学公式abc p判断a,b,c三条线段能否组成一个三角形 pa,b不同时为负 4.2选择结构程序pif语句(条件选择语句)nif语句的三种形式p形式一:格式:if(expression)statement 执行过程:例:if(xy)printf(“%d”,x);语句语句流程图流程图NY表达式非表达式非0?内嵌语句,可为:内嵌语句,可为:赋值语句赋值语句 函数调用语句函数调用语句 控制语句控制语句 复合语句复合语句 空语句空语句可为算术、关系、逻辑、赋值可为算术、关系、逻辑、赋值等表达式等表达式例题pAT89C51单片机的P1口接有8只发光二极管,接有4个按键,要求按下某一按键,LED全亮,按下另一键LED全灭p例如:if(x0)m+;if(ab)c=a;a=b;b=c;if语句(条件选择语句)l 形式二:u格式:if(expression)statement1 else statement2u执行过程:例:if(xy)max=x;else max=y;语句语句1 语句语句2流程图流程图NY表达式非表达式非0?p格式nif(表达式)语句1 else 语句2 p功能:n计算表达式的值,如果它的值是一个非0值(逻辑真),就执行内嵌语句1,之后跳过内嵌语句2,执行后续语句;否则跳过内嵌语句1,执行内嵌语句2,之后执行后续语句。例题p要求按下键K1时灯亮,松开K1时灯灭p例如:if(x0)m+;else m-;if(ch=a&ch1000)index=0.4;else if(salary800)index=0.3;else if(salary600)index=0.2;else if(salary400)index=0.1;else index=0;p格式nif(表达式1)语句1 nelse if(表达式2)语句2 n nelse if(表达式m)语句m nelse 语句 np功能:n依次计算并判断表达式i,为非0时执行后面的语句,都为0时,执行语句nn无论执行完那个语句分支,都转到后续语句p流程图例题如:if(a=b&x=y)printf(“a=b,x=y”);if(3)printf(“OK”);if(a)printf(“%d”,a);uif后面的表达式类型任意u语句可以是复合语句u if(x)if(x!=0)if(!x)if(x=0)例 考虑下面程序的输出结果:#include main()int x,y;scanf(“%d,%d”,&x,&y);if(xy)x=y;y=x;else x+;y+;printf(“%d,%dn”,x,y);Compile Error!说明:v:l一般形式:if(expr1)if(expr2)statement1 else statement2else if(expr3)statement3 else statement4内嵌if内嵌ifif(expr1)if(expr2)statement1 else statement2内嵌ifif(expr1)if(expr2)statement1else statement3 内嵌ifif(expr1)statement1else if(expr3)statement3 else statement4内嵌ifif语句嵌套例 输入两数并判断其大小关系【例】【例】比较两个整数的关系。比较两个整数的关系。#include void main()int x,y;printf(Enter integer X and Y:);scanf(%d%d,&x,&y);if(x!=y)if(x y)printf(XYn);else printf(XYn);else printf(X=Yn);有利于阅读程序有利于阅读程序 if语句嵌套的形式p简单if语句的嵌套形式 nif(表达式)n if 语句p双重(或多重)分支if语句的嵌套形式 nif(表达式)n if 语句 nelse n if 语句 可以是各种形式的可以是各种形式的if语句语句可以是各种形式的可以是各种形式的if语句语句如果是简单如果是简单if语句,语句,必须用必须用“”括起括起例如:p if(c=50)printf(50=c=100n);p if(c=50)printf(50=c=100n);nelse printf(c50n);nelse nif(c=150)printf(100c150n);p if(c=50)printf(50=c=100n);nelse printf(“cb)pif(ac)pif(ad)m=1;pelse m=2;pelse m=3;例题p按K1键点亮LED,按K2熄灭LED,且K2优先,只要K2被按住LED就不能被点亮p缺省 时,else总是和它上面离它最近的未配对的if配对if()if()if()else.else.else.if else 配对原则:例:if(a=b)if(b=c)printf(“a=b=c”);else printf(“a!=b”);修改:if(a=b)if(b=c)printf(“a=b=c”);else printf(“a!=b”);实现if else 正确配对方法:加 条件运算符if(ab)max=a;else max=b;p可用条件表达式来处理:max=ab?a:b;p条件运算符要求有3个操作对象,一般形式:p表达式1?表达式2:表达式3;v一般形式:switch(表达式)case E1:语句组 1;break;case E2:语句组 2;break;.case En:语句组 n;break;default:语句组;break;v执行过程:switch表达式语句组1语句组2语句组n语句组.E 1E 2Endefaultcase switch语句(开关分支语句)v:lE1,E2,En是常量表达式,且值必须互不相同l语句标号作用,必须用break跳出lcase后可包含多个可执行语句,且不必加 lswitch可嵌套l多个case可共用一组执行语句如:case A:case B:case C:printf(“score60n”);break;.说明:例#include stdio.h void main()int score;scanf(%d,&score);switch(score)case 5:printf(Very good!);case 4:printf(Good!);case 3:printf(Pass!);case 2:printf(Fail!);default:printf(data error!);运行结果:score为5时,输出:Very good!Good!Pass!Fail!data error!例子(1)#include main()int c;printf(Enter m or n or h or other:);c=getchar();switch(c)case m:printf(nGood morning!n);break;case n:printf(nGood night!n);break;case h:printf(nHello!n);break;default:printf(n?n);break;例子(2)根据输入字母输出字符串例题p要求按K1键,P1.7和P1.3所接的LED亮;按K2键,P1.6和P1.2所接的LED亮;按K3键,P1.5和P1.1所接的LED亮;按K4键,P1.4和P1.0所接的LED亮4.3 循环结构程序pwhile语句实现的循环结构pdo-while语句实现的循环结构pfor语句实现的循环结构p循环结构中的跳转语句p循环结构程序设计举例(1)while语句的循环结构 p语句一般格式 n while(表达式)语句 功能:p计算表达式的值,为非0(逻辑真)时,重复执行内嵌语句,每执行一次,就判断一次表达式的值,直到表达式的值为0 时结束循环,转去执行while后面的语句。pwhile(1);或while(1);为无限循环结构;当表达式为真当表达式为真 语句语句表 达 式 非表 达 式 非0?语句语句说明p如果while(表达式)的值为0,则循环体一次也不执行(例如当i的初值=101)。p在循环体中必须有使循环趋向结束的操作,否则循环将无限进行(死循环)。p在循环体中,语句的先后位置必须符合逻辑,否则会影响运算结果。p为了保证循环正常运行,应该特别注意:n 循环控制条件的描述n 控制条件的初始状态(初始值)n 循环体内部对控制条件的影响例题p编程实现:若K1键被按下,流水灯工作;否则等全部熄灭do-while语句p语句一般格式 n do n 语句 n while(表达式);p功能:n先执行内嵌语句(循环体),之后计算表达式的值,不为0(逻辑真)时,再执行循环体并判断条件,直到表达式的值为 0(逻辑假)结束循环,转去执行while下面的语句。do-while循环的算法 循环体循环体当表达式为当表达式为N-S结构图结构图NY循环体循环体表达式非表达式非0?流程图流程图例题p编程实现do-while语句实现如下功能:K1按住,流水灯工作;K1松开,灯全熄灭说明pwhile和do-while都能实现循环控制,while结构程序通常都可以转换成do-while结构循环结构中的跳转语句p可采用如下三种语句实现跳转:ncontinue语句nbreak语句ngoto语句(不建议使用)跳转语句pcontinue功能:中断本轮循环体的执行(即跳过循环体中尚未执行的语句),立即开始执行下一轮循环。pbreak功能:利用break语句能够强迫终止本层循环,转到后续语句执行。continue:p int x,n=0,s=0;nwhile(n10)n scanf(%d,&x);n if(x0)continue;n s+=x;n+;n ;break语句:p int x,n=0,s=0;nwhile(n10)n scanf(%d,&x);n if(x0)break;n s+=x;n+;n ;例题pcontinue:p要求开机后,全部LED不亮,按K1键从LED1开始依次点亮,至LED8后停止并全部熄灭,待再次按K1键,可重复上述过程,如果中间K2键被按下,则LED立即全部熄灭,并返回起始状态例题pbreak:p要求开机后,全部LED不亮,按K1键从LED1开始依次点亮,至LED8后停止并全部熄灭,待再次按K1键,可重复上述过程,如果中间K2键被按下,则LED立即全部熄灭,并返回起始状态
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!