第四章 C流程控制语句

上传人:633****35 文档编号:249369664 上传时间:2024-10-29 格式:PPTX 页数:27 大小:265.55KB
返回 下载 相关 举报
第四章 C流程控制语句_第1页
第1页 / 共27页
第四章 C流程控制语句_第2页
第2页 / 共27页
第四章 C流程控制语句_第3页
第3页 / 共27页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,第四章 C51流程控制语句,4.1 表达式语句及复合语句,4.1.1 表达式语句,在表达式的后边加一个分号“;”就构成了表达式语句,如:,a=b+;,x=8;,y=7;,+k;,可以一行放一个表达式形成表达式语句,也可以一行放多个表达式形成表达式语句,这时每个表达式后面都必须带“;”号,另外,还可以仅由个分号“;”占一行形成一个表达式语句,这种语句称为空语句。,空语句在程序设计中通常用于两种情况:,(1)在程序中为有关语句提供标号,用以标记程序执行的位置。例如采用下面的语句可以构成一个循环。,repeat:;,;,goto repeat;,(2)在用while语句构成的循环语句后面加一个分号,形成一个不执行其它操作的空循环体。这种结构通常用于对某位进行判断,当不满足条件则等待,满足条件则执行。,【例4-1】下面这段子程序用于读取8051单片机的串行口的数据,当没有接收到则等待,当接收到,接收数据后返回,返回值为接收的数据。,#include ,char getchar(),char c;,while(!RI);/当接收中断标志位RI为0则等待,当接收中断标志位,为1则结束等待,c=SBUF;,RI=0;,return(c);,4.1.2 复合语句,复合语句是由若干条语句组合而成的一种语句,在C51中,用一个大括号“”将若干条语句括在一起就形成了一个复合语句,复合语句最后不需要以分号“;”结束,但它内部的各条语句仍需以分号“;”结束。复合语句的一般形式为:,局部变量定义;,语句1;,语句2;,复合语句在执行时,其中的各条单语句按顺序依次执行,整个复合语句在语法上等价于一条单语句,因此在C51中可以将复合语句视为一条单语句。通常复合语句出现在函数中,实际上,函数的执行部分(即函数体)就是一个复合语句;复合语句中的单语句一般是可执行语句,此外还可以是变量的定义语句(说明变量的数据类型)。在复合语句内部语句所定义的变量,称为该复合语句中的局部变量,它仅在当前这个复合语句中有效。利用复合语句将多条单语句组合在起,以及在复合语句中进行局部变量定义是C51语言的一个重要特征。,4.2 C51程序基本结构与相关语句,4.2.1 C51的基本结构,一顺序结构,顺序结构是最基本、最简单的结构,在这种结构中,程序由低地址到高地址依次执行,图4-1给出顺序结构流程图,程序先执行A操作,然后再执行B操作。,A,B,图4-1顺序结构流程图,选择结构可使程序根据不同的情况,选择执行不同的分支,在选择结构中,程序先都对一个条件进行判断。当条件成立,即条件语句为“真”时,执行一个分支,当条件不成立时,即条件语句为“假”时,执行另一个分支。如图4-2,当条件S成立时,执行分支A,当条件P不成立时,执行分支B。,二选择结构,条件P,语句A,语句B,成立,不成,立,在C51中,实现选择结构的语句为if/else,if/else if语句。另外在C51中还支持多分支结构,多分支结构既可以通过if和else if语句嵌套实现,可用swith/case语句实现。,在程序处理过程中,有时需要某一段程序重复执行多次,这时就需要循环结构来实现,循环结构就是能够使程序段重复执行的结构。循环结构又分为两种:当(while)型循环结构和直到(do.while)型循环结构。,(1)当型循环结构,当型循环结构如图4-3,当条件P成立(为“真”)时,重复执行语句A,当条件不成立(为“假”)时才停止重复,执行后面的程序。,三循环结构,图4-3 当型循环结构,(2)直到型循环结构,直到型循环结构如图4-4,先执行语句A,再判断条件P,当条件成立(为“真”)时,再重复执行语句A,直到条件不成立(为“假”)时才停止重复,执行后面的程序。,条件P,语句A,成立,不成,立,图4-4 直到型循环结构,构成循环结构的语句主要有:while、do while、for、goto等。,4.2.2 if语句,if语句是C51中的一个基本条件选择语句,它通常有三种格式:,(1)if(表达式),语句;,(2)if(表达式),语句1;,else 语句2;,(3)if(表达式1)语句1;,else if(表达式2)语句2;,else if(表达式3)语句3;,else if(表达式n-1)语句n-1;,else 语句n;,【例4-2】if语句的用法。,(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)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.2.3 switch/case语句,if语句,通,通过嵌套,可,可以实现,多,多分支结,构,构,但结,构,构复杂。switch是C51中提,供,供的专门,处,处理多分,支,支结构的,多,多分支选,择,择语句。,它,它的格式,如,如下:,switch(,表,表达式),case,常,常量表,达,达式1:语句1,;,;break;,case,常,常量,表,表达式2,:,:语句2;break;,case,常,常量,表,表达式n,:,:语句n;break;,default:语句n+1;,说明如下,:,:,(1)switch后面括,号,号内的表,达,达式,可,以,以是整型,或,或字符型,表,表达式。,(2)当,该,该表达式,的,的值与某,一,一“case”后,面,面的常量,表,表达式的,值,值相等时,,,,就执行,该,该“case”后,面,面的语句,,,,然后遇,到,到break语句,退,退出switch,语,语句。若,表,表达式的,值,值与所有case,后,后的常量,表,表达式的,值,值都不相,同,同,则执,行,行default,后,后面的语,句,句,然后,退,退出switch,结,结构。,(3)每,一,一个case常量,表,表达式的,值,值必须不,同,同否则会,出,出现自相,矛,矛盾的现,象,象。,(4)case语,句,句和default语句的,出,出现次序,对,对执行过,程,程没有影,响,响。,(5)每,个,个case语句后,面,面可以有,“,“break”,,也,也可以没,有,有。有break,语,语句,执,行,行到break则,退,退出switch,结,结构,若,没,没有,则,会,会顺次执,行,行后面的,语,语句,直,到,到遇到break,或,或结束。,(6)每,一,一个case语句,后,后面可以,带,带一个语,句,句,也可,以,以带多个,语,语句,还,可,可以不带,。,。语句可,以,以用花括,号,号括起,,也,也可以不,括,括。,(7)多,个,个case可以共,用,用一组执,行,行语句。,【例4-3】switch/case语句,的,的用法。,对学生成,绩,绩划分为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),4.2.4 while,语,语句,while语句在C51中,用,用于实现,当,当型循环,结,结构,它,的,的格式如,下,下:,while(表达,式,式),语,句,句;/*循,环,环体*/,while语句后,面,面的表达,式,式是能否,循,循环的条,件,件,后面,的,的语句是,循,循环体。,当,当表达式,为,为非0(,真,真)时,,就,就重复执,行,行循环体,内,内的语句,;,;当表达,式,式为0(,假,假),则,中,中止while循,环,环,程序,将,将执行循,环,环结构之,外,外的下一,条,条语句。,它,它的特点,是,是:先判,断,断条件,,后,后执行循,环,环体。在,循,循环体中,对,对条件进,行,行改变,,然,然后再判,断,断条件,,如,如条件成,立,立,则再,执,执行循环,体,体,如条,件,件不成立,,,,则退出,循,循环。如,条,条件第一,次,次就不成,立,立,则循,环,环体一次,也,也不执行,。,。,【例4-4】,下,下面程序,是,是通过while,语,语句实现,计,计算并输,出,出1100的累,加,加和。,#include/包,含,含特殊功,能,能寄存器,库,库,#include/包,含,含I/O,函,函数库,voidmain(void)/主函数,inti,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=5050,语,语句,dowhile语,句,句在C51中,用,用于,实,实现,直,直到,型,型循,环,环结,构,构,,它,它的,格,格式,如,如下,:,:,do,语,语,句,句;/*循,环,环体*/,while(,表,表达,式,式),;,;,它的,特,特点,是,是:,先,先执,行,行循,环,环体,中,中的,语,语句,,,,后,判,判断,表,表达,式,式。,如,如表,达,达式,成,成立,(,(真,),),,则,则再,执,执行,循,循环,体,体,,然,然后,又,又判,断,断,,直,直到,有,有表,达,达式,不,不成,立,立(,假,假),时,时,,退,退出,循,循环,,,,执,行,行dowhile,结,结构,的,的下,一,一条,语,语句,。,。dowhile,语,语句,在,在执,行,行时,,,,循,环,环体,内,内的,语,语句,至,至少,会,会被,执,执行,一,一次,。,。,【例4-5】,通,通,过,过dowhile,语,语句,实,实现,计,计算,并,并输,出,出1100,的,的累,加,加和,。,。,#include/包,含,含特,殊,殊功,能,能寄,存,存器,库,库,#include/包,含,含I/O,函,函数,库,库,voidmain(void)/主,函,函数,inti,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
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业管理 > 营销创新


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

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


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