4--第四章--C51流程控制语句课件.ppt

上传人:可****阿 文档编号:83281331 上传时间:2023-03-29 格式:PPT 页数:26 大小:1.74MB
返回 下载 相关 举报
4--第四章--C51流程控制语句课件.ppt_第1页
第1页 / 共26页
4--第四章--C51流程控制语句课件.ppt_第2页
第2页 / 共26页
点击查看更多>>
资源描述

《4--第四章--C51流程控制语句课件.ppt》由会员分享,可在线阅读,更多相关《4--第四章--C51流程控制语句课件.ppt(26页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、 第四章第四章 C51流程控制语句流程控制语句4.1 表达式语句及复合语句表达式语句及复合语句4.1.1 表达式语句表达式语句在表达式的后边加一个分号在表达式的后边加一个分号“;”就构成了表达式语句就构成了表达式语句,如如:a=b+;x=8;y=7;+k;可以一行放一个表达式形成表达式语句,也可以一行放多个表达式可以一行放一个表达式形成表达式语句,也可以一行放多个表达式形成表达式语句,这时每个表达式后面都必须带形成表达式语句,这时每个表达式后面都必须带“;”号,另外,还号,另外,还可以仅由可以仅由个分号个分号“;”占一行形成一个表达式语句,这种语句称为占一行形成一个表达式语句,这种语句称为空语

2、句。空语句。空语句在程序设计中通常用于两种情况:空语句在程序设计中通常用于两种情况:(1)在程序中为有关语句提供标号,用以标记程序执行的位置。)在程序中为有关语句提供标号,用以标记程序执行的位置。例如采用下面的语句可以构成一个循环。例如采用下面的语句可以构成一个循环。repeat:;:;goto repeat;(2)在用)在用while语句构成的循环语句后面加一个分号,形成一个不语句构成的循环语句后面加一个分号,形成一个不执行其它操作的空循环体。这种结构通常用于对某位进行判断,当不满执行其它操作的空循环体。这种结构通常用于对某位进行判断,当不满足条件则等待,满足条件则执行。足条件则等待,满足条

3、件则执行。【例【例4-1】下面这段子程序用于读取】下面这段子程序用于读取8051单片机的串行口的数据,当单片机的串行口的数据,当没有接收到则等待,当接收到,接收数据后返回,返回值为接收的数据。没有接收到则等待,当接收到,接收数据后返回,返回值为接收的数据。#include char getchar()char c;while(!RI);/当接收中断标志位当接收中断标志位RI为为0则等待,当接收中断标志位则等待,当接收中断标志位 为为1则结束等待则结束等待c=SBUF;RI=0;return(c);4.2 C51程序基本结构与相关语句程序基本结构与相关语句4.2.1 C51的基本结构的基本结构一

4、顺序结构一顺序结构顺顺序序结结构是最基本、最构是最基本、最简单简单的的结结构,在构,在这这种种结结构中,程构中,程序由低地址到高地址依次序由低地址到高地址依次执执行,行,图图4-1给给出出顺顺序序结结构流构流程程图图,程序先,程序先执执行行A操作,操作,然后再然后再执执行行B操作。操作。AB图图4-1顺顺序序结结构流程构流程图图 选择结构可使程序根据不同的情况,选择执行不同的分支,在选选择结构可使程序根据不同的情况,选择执行不同的分支,在选择结构中,程序先都对一个条件进行判断。当条件成立,即条件语句为择结构中,程序先都对一个条件进行判断。当条件成立,即条件语句为“真真”时,执行一个分支,当条件

5、不成立时,即条件语句为时,执行一个分支,当条件不成立时,即条件语句为“假假”时,时,执行另一个分支。如图执行另一个分支。如图4-2,当条件,当条件S成立时,执行分支成立时,执行分支A,当条件,当条件P不成不成立时,执行分支立时,执行分支B。二选择结构二选择结构条件P语句A语句B成立不成立 在在C51中,实现选择结构的语句为中,实现选择结构的语句为if/else,if/else if语句。另外在语句。另外在C51中还支持多分支结构,多分支结构既可以通过中还支持多分支结构,多分支结构既可以通过if和和else if语句嵌套语句嵌套实现,可用实现,可用swith/case语句实现。语句实现。在程序处

6、理过程中,有时需要在程序处理过程中,有时需要某一段程序重复执行多次,这时就需某一段程序重复执行多次,这时就需要循环结构来实现,循环结构就是能要循环结构来实现,循环结构就是能够使程序段重复执行的结构。循环结够使程序段重复执行的结构。循环结构又分为两种:当(构又分为两种:当(while)型循环)型循环结构和直到(结构和直到(do.while)型循环结)型循环结构。构。(1)当型循环结构)当型循环结构当型循环结构如图当型循环结构如图4-3,当条件,当条件P成成立(为立(为“真真”)时,重复执行语句)时,重复执行语句A,当条件不成立(为,当条件不成立(为“假假”)时才停)时才停止重复,执行后面的程序。

7、止重复,执行后面的程序。三循环结构三循环结构图图4-3 当型循环结构当型循环结构 (2)直到型循环结构)直到型循环结构直到型循环结构如图直到型循环结构如图4-4,先执,先执行语句行语句A,再判断条件,再判断条件P,当条件,当条件成立(为成立(为“真真”)时,再重复执)时,再重复执行语句行语句A,直到条件不成立(为,直到条件不成立(为“假假”)时才停止重复,执行后面)时才停止重复,执行后面的程序。的程序。条件P语句A成立不成 立图4-4 直到型循环结构构成循环结构的语句主要有:构成循环结构的语句主要有:while、do while、for、goto等。等。【例【例4-2】if语句的用法。语句的用

8、法。(1)if (x!=y)printf(“x=%d,y=%dn”,x,y);执行上面语句时,如果执行上面语句时,如果x不等于不等于y,则输出,则输出x的值和的值和y的值。的值。(2)if (xy)max=x;else max=y;执行上面语句时,如执行上面语句时,如x大于大于y成立,则把成立,则把x送给最大值变量送给最大值变量max,如,如x大于大于y不成立,则把不成立,则把y送给最大值变量送给最大值变量max。使。使max变量得到变量得到x、y中的大中的大数。数。(3)if (score=90)printf(“Your result is an An”);else if (score=80

9、)printf(“Your result is an Bn”);else if (score=70)printf(“Your result is an Cn”);else if (score=60)printf(“Your result is an Dn”);else printf(“Your result is an En”);执行上面语句后,能够根据分数执行上面语句后,能够根据分数score分别打出分别打出A、B、C、D、E五五个等级。个等级。(4)case语句和语句和default语句的出现次序对执行过程没有影响。语句的出现次序对执行过程没有影响。(5)每个)每个case语句后面可以有语

10、句后面可以有“break”,也可以没有。有,也可以没有。有break语句,语句,执行到执行到break则退出则退出switch结构,若没有,则会顺次执行后面的语句,直结构,若没有,则会顺次执行后面的语句,直到遇到到遇到break或结束。或结束。(6)每一个)每一个case语句后面可以带一个语句,也可以带多个语句,还可语句后面可以带一个语句,也可以带多个语句,还可以不带。语句可以用花括号括起,也可以不括。以不带。语句可以用花括号括起,也可以不括。(7)多个)多个case可以共用一组执行语句。可以共用一组执行语句。【例【例4-3】switch/case语句的用法。语句的用法。对学生成绩划分为对学生

11、成绩划分为AD,对应不同的百分制分数,要求根据不同的等级,对应不同的百分制分数,要求根据不同的等级打印出它的对应百分数。可以通过下面的打印出它的对应百分数。可以通过下面的switch/case语句实现。语句实现。switch(grade)case A:printf(“90100n”););break;case B:printf(“8090n”););break;case C:printf(“7080n”););break;case D:printf(“6070n”););break;case E:printf(“60n”););break;default:printf(“error”n)#in

12、clude /包含特殊功能寄存器库包含特殊功能寄存器库#include /包含包含I/O函数库函数库void main(void)/主函数主函数 int i,s=0;/定义整型变量定义整型变量x和和y i=1;SCON=0 x52;/串口初始化串口初始化 TMOD=0 x20;TH1=0 xF3;TR1=1;while (i=100)/累加累加1100之和在之和在s中中 s=s+i;i+;printf(“1+2+3+100=%dn”,s);while(1);程序执行的结果:程序执行的结果:1+2+3+100=50504.2.5 do while语句语句do while语句在语句在C51中用于实

13、现直到型循环结构,它的格式如下:中用于实现直到型循环结构,它的格式如下:do 语句;语句;/*循环体循环体*/while(表达式);(表达式);它的特点是:先执行循环体中的语句,后判断表达式。如表达它的特点是:先执行循环体中的语句,后判断表达式。如表达式成立(真),则再执行循环体,然后又判断,直到有表达式不成式成立(真),则再执行循环体,然后又判断,直到有表达式不成立(假)时,退出循环,执行立(假)时,退出循环,执行do while结构的下一条语句。结构的下一条语句。do while语句在执行时,循环体内的语句至少会被执行一次。语句在执行时,循环体内的语句至少会被执行一次。【例【例4-5】通过

14、通过do while语句实现计算并输出语句实现计算并输出1100的累加和。的累加和。#include /包含特殊功能寄存器库包含特殊功能寄存器库#include /包含包含I/O函数库函数库void main(void)/主函数主函数 int i,s=0;/定义整型变量定义整型变量x和和y i=1;SCON=0 x52;/串口初始化串口初始化 TMOD=0 x20;TH1=0 xF3;TR1=1;do /累加累加1100之和在之和在s中中 s=s+i;i+;while (i=100);printf(“1+2+3+100=%dn”,s);while(1);程序执行的结果:程序执行的结果:1+2+

15、3+100=5050 在在C51语言中,语言中,for语句是使用最灵活、用得最多的循环控制语句,同语句是使用最灵活、用得最多的循环控制语句,同时也最为复杂。它可以用于循环次数已经确定的情况,也可以用于循环次时也最为复杂。它可以用于循环次数已经确定的情况,也可以用于循环次数不确定的情况。它完全可以代替数不确定的情况。它完全可以代替while语句,功能最强大。它的格式如语句,功能最强大。它的格式如下:下:for(表达式(表达式1;表达式;表达式2;表达式;表达式3)语句;语句;/*循环体循环体*/for语句后面带三个表达式,它的执行过程如下:语句后面带三个表达式,它的执行过程如下:(1)先求解表达

16、式)先求解表达式1的值。的值。(2)求解表达式)求解表达式2的值,如表达式的值,如表达式2的值为真,则执行循环休中的语句,的值为真,则执行循环休中的语句,然后执行下一步(然后执行下一步(3)的操作,如表达式)的操作,如表达式2的值为假,则结束的值为假,则结束for循环,转循环,转到最后一步。到最后一步。(3)若表达式)若表达式2的值为真,则执行完循环体中的语句后,求解表达式的值为真,则执行完循环体中的语句后,求解表达式3,然后转到第四步。,然后转到第四步。(4)转到()转到(2)继续执行。)继续执行。(5)退出)退出for循环,执行下面的一条语句。循环,执行下面的一条语句。在在for循环中,一

17、般表达式循环中,一般表达式1为初值表达式,用于给循环变量赋初值;为初值表达式,用于给循环变量赋初值;表达式表达式2为条件表达式,对循环变量进行判断;表达式为条件表达式,对循环变量进行判断;表达式3为循环变量更新表为循环变量更新表达式,用于对循环变量的值进行更新,使循环变量能不满足条件而退出循达式,用于对循环变量的值进行更新,使循环变量能不满足条件而退出循环。环。4.2.6 for语句语句【例【例4-6】用用for语句实现计算并输出语句实现计算并输出1100的累加和。的累加和。#include /包含特殊功能寄存器库包含特殊功能寄存器库#include /包含包含I/O函数库函数库void ma

18、in(void)/主函数主函数int i,s=0;/定义整型变量定义整型变量x和和ySCON=0 x52;/串口初始化串口初始化TMOD=0 x20;TH1=0 xF3;TR1=1;for(i=1;i=100;i+)s=s+i;/累加累加1100之和在之和在s中中printf(“1+2+3+100=%dn”,s);while(1);程序执行的结果:程序执行的结果:1+2+3+100=5050 break和和continue语句通常用于循环结构中,用来跳出循环结构。语句通常用于循环结构中,用来跳出循环结构。但是二者又有所不同,下面分别介绍。但是二者又有所不同,下面分别介绍。1break语句语句

19、前面已介绍过用前面已介绍过用break语句可以跳出语句可以跳出switch结构,使程序继续执结构,使程序继续执行行switch结构后面的一个语句。使用结构后面的一个语句。使用break语句还可以从循环体中跳语句还可以从循环体中跳出循环,提前结束循环而接着执行循环结构下面的语句。它不能用在出循环,提前结束循环而接着执行循环结构下面的语句。它不能用在除了循环语句和除了循环语句和switch语句之外的任何其它语句中。语句之外的任何其它语句中。【例【例4-8】下面一段程序用于计算圆的面积,当计算到面积大于】下面一段程序用于计算圆的面积,当计算到面积大于100时,由时,由break语句跳出循环。语句跳出

20、循环。for(r=1;r100)break;printf(“%fn”,area);4.2.8 break和和continue语句语句 continue语句用在循环结构中,用于结束本次循环,跳过循环体语句用在循环结构中,用于结束本次循环,跳过循环体中中continue下面尚未执行的语句,直接进行下一次是否执行循环的判下面尚未执行的语句,直接进行下一次是否执行循环的判定。定。continue语句和语句和break语句的区别在于:语句的区别在于:continue语句只是结束语句只是结束本次循环而不是终止整个循环;本次循环而不是终止整个循环;break语句则是结束循环,不再进行条语句则是结束循环,不再

21、进行条件判断。件判断。【例【例4-9】输出输出100200间不能被间不能被3整除的数。整除的数。for(i=100;i=200;i+)if (i%3=0)continue;printf(“%d ”,i);在程序中,当在程序中,当i能被能被3整除时,执行整除时,执行continue语句,结束本次循环,语句,结束本次循环,跳过跳过printf()函数,只有能被()函数,只有能被3整除时才执行整除时才执行printf()函数。()函数。2continue语句语句Any question?Thanks!上机练习上机练习:1、各自建立工程,输入例、各自建立工程,输入例4-4,4-5,4-6源程序,链接,

22、编译,源程序,链接,编译,调试,用调试,用keil串行口窗口观察输出结果。串行口窗口观察输出结果。2、建立工程,将例、建立工程,将例4-2中的三个程序补充完整,链接,编译,中的三个程序补充完整,链接,编译,调试。用调试。用keil串行口窗口观察输出结果。要求:(串行口窗口观察输出结果。要求:(1)、输入)、输入x和和y,如果,如果x不等于不等于y,输出,输出x和和y的值,相等则不输出。反过的值,相等则不输出。反过来,改动此程序,实现如果来,改动此程序,实现如果x等于等于y,输出,输出x和和y的值。的值。(2)、)、输入输入x和和y,如,如x大于大于y成立,则把成立,则把x送给最大值变量送给最大

23、值变量max,如,如x大于大于y不成立,则把不成立,则把y送给最大值变量送给最大值变量max,输出,输出max。(3)、输入)、输入0100内的一个分数,输出相关的等级。内的一个分数,输出相关的等级。3、建立工程,将例、建立工程,将例4-3中的程序补充完整,链接,编译,调试,中的程序补充完整,链接,编译,调试,用用keil串行口窗口观察输出结果。要求:输入相应的等级,串行口窗口观察输出结果。要求:输入相应的等级,输出对应的分数段。输出对应的分数段。作业:作业:6、编程实现,输入、编程实现,输入1,显示,显示A,输入,输入2,显示,显示B,输入,输入3,显示,显示C,输入,输入4,显示,显示D,输入,输入5,显示,显示End,输入其他值,显示,输入其他值,显示error。7、输入、输入2个个int型数据,按由小到大顺序输出。型数据,按由小到大顺序输出。8、用三种循环结构的一种、用三种循环结构的一种(while语句语句,do while语句语句,for语句语句)编程实现输出编程实现输出1到到10的平方和的平方和。说明:说明:上机练习里面的作业部分,当次课不给指导,由同上机练习里面的作业部分,当次课不给指导,由同学自己完成。上机调试无误后下课前写在作业纸上学自己完成。上机调试无误后下课前写在作业纸上上交。上交。上机练习上机练习:

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

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

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁