《精编》C51流程控制语句培训教程

上传人:tang****xu3 文档编号:133174322 上传时间:2020-05-25 格式:PPT 页数:25 大小:398.50KB
返回 下载 相关 举报
《精编》C51流程控制语句培训教程_第1页
第1页 / 共25页
《精编》C51流程控制语句培训教程_第2页
第2页 / 共25页
《精编》C51流程控制语句培训教程_第3页
第3页 / 共25页
《精编》C51流程控制语句培训教程_第4页
第4页 / 共25页
《精编》C51流程控制语句培训教程_第5页
第5页 / 共25页
点击查看更多>>
资源描述

《《精编》C51流程控制语句培训教程》由会员分享,可在线阅读,更多相关《《精编》C51流程控制语句培训教程(25页珍藏版)》请在金锄头文库上搜索。

1、C51流程控制语句培训教程 4 1表达式语句及复合语句 4 1 1表达式语句 在表达式的后边加一个分号 就构成了表达式语句 如 a b x 8 y 7 k 可以一行放一个表达式形成表达式语句 也可以一行放多个表达式形成表达式语句 这时每个表达式后面都必须带 号 另外 还可以仅由 个分号 占一行形成一个表达式语句 这种语句称为空语句 空语句在程序设计中通常用于两种情况 1 在程序中为有关语句提供标号 用以标记程序执行的位置 例如采用下面的语句可以构成一个循环 repeat gotorepeat 2 在用while语句构成的循环语句后面加一个分号 形成一个不执行其它操作的空循环体 这种结构通常用于

2、对某位进行判断 当不满足条件则等待 满足条件则执行 例4 1 下面这段子程序用于读取8051单片机的串行口的数据 当没有接收到则等待 当接收到 接收数据后返回 返回值为接收的数据 includechargetchar charc while RI 当接收中断标志位RI为0则等待 当接收中断标志位为1则结束等待c SBUF RI 0 return c 4 1 2复合语句 复合语句是由若干条语句组合而成的一种语句 在C51中 用一个大括号 将若干条语句括在一起就形成了一个复合语句 复合语句最后不需要以分号 结束 但它内部的各条语句仍需以分号 结束 复合语句的一般形式为 局部变量定义 语句1 语句2

3、 复合语句在执行时 其中的各条单语句按顺序依次执行 整个复合语句在语法上等价于一条单语句 因此在C51中可以将复合语句视为一条单语句 通常复合语句出现在函数中 实际上 函数的执行部分 即函数体 就是一个复合语句 复合语句中的单语句一般是可执行语句 此外还可以是变量的定义语句 说明变量的数据类型 在复合语句内部语句所定义的变量 称为该复合语句中的局部变量 它仅在当前这个复合语句中有效 利用复合语句将多条单语句组合在 起 以及在复合语句中进行局部变量定义是C51语言的一个重要特征 4 2C51程序基本结构与相关语句 4 2 1C51的基本结构 一 顺序结构 顺序结构是最基本 最简单的结构 在这种结

4、构中 程序由低地址到高地址依次执行 图4 1给出顺序结构流程图 程序先执行A操作 然后再执行B操作 图4 1顺序结构流程图 选择结构可使程序根据不同的情况 选择执行不同的分支 在选择结构中 程序先都对一个条件进行判断 当条件成立 即条件语句为 真 时 执行一个分支 当条件不成立时 即条件语句为 假 时 执行另一个分支 如图4 2 当条件S成立时 执行分支A 当条件P不成立时 执行分支B 二 选择结构 在C51中 实现选择结构的语句为if else if elseif语句 另外在C51中还支持多分支结构 多分支结构既可以通过if和elseif语句嵌套实现 可用swith case语句实现 在程序

5、处理过程中 有时需要某一段程序重复执行多次 这时就需要循环结构来实现 循环结构就是能够使程序段重复执行的结构 循环结构又分为两种 当 while 型循环结构和直到 do while 型循环结构 1 当型循环结构当型循环结构如图4 3 当条件P成立 为 真 时 重复执行语句A 当条件不成立 为 假 时才停止重复 执行后面的程序 三 循环结构 图4 3当型循环结构 2 直到型循环结构直到型循环结构如图4 4 先执行语句A 再判断条件P 当条件成立 为 真 时 再重复执行语句A 直到条件不成立 为 假 时才停止重复 执行后面的程序 图4 4直到型循环结构 构成循环结构的语句主要有 while dow

6、hile for goto等 4 2 2if语句if语句是C51中的一个基本条件选择语句 它通常有三种格式 1 if 表达式 语句 2 if 表达式 语句1 else 语句2 3 if 表达式1 语句1 elseif 表达式2 语句2 elseif 表达式3 语句3 elseif 表达式n 1 语句n 1 else 语句n 例4 2 if语句的用法 1 if x y printf x d y d n x y 执行上面语句时 如果x不等于y 则输出x的值和y的值 2 if x y max x elsemax y 执行上面语句时 如x大于y成立 则把x送给最大值变量max 如x大于y不成立 则把y

7、送给最大值变量max 使max变量得到x y中的大数 3 if score 90 printf YourresultisanA n elseif score 80 printf YourresultisanB n elseif score 70 printf YourresultisanC n elseif score 60 printf YourresultisanD n elseprintf YourresultisanE n 执行上面语句后 能够根据分数score分别打出A B C D E五个等级 4 2 3switch case语句 if语句通过嵌套可以实现多分支结构 但结构复杂 sw

8、itch是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常量表达

9、式的值必须不同否则会出现自相矛盾的现象 4 case语句和default语句的出现次序对执行过程没有影响 5 每个case语句后面可以有 break 也可以没有 有break语句 执行到break则退出switch结构 若没有 则会顺次执行后面的语句 直到遇到break或结束 6 每一个case语句后面可以带一个语句 也可以带多个语句 还可以不带 语句可以用花括号括起 也可以不括 7 多个case可以共用一组执行语句 例4 3 switch case语句的用法 对学生成绩划分为A D 对应不同的百分制分数 要求根据不同的等级打印出它的对应百分数 可以通过下面的switch case语句实现 s

10、witch grade case A printf 90 100 n break case B printf 80 90 n break case C printf 70 80 n break case D printf 60 70 n break case E printf 60 n break default printf error n 4 2 4while语句 while语句在C51中用于实现当型循环结构 它的格式如下 while 表达式 语句 循环体 while语句后面的表达式是能否循环的条件 后面的语句是循环体 当表达式为非0 真 时 就重复执行循环体内的语句 当表达式为0 假 则

11、中止while循环 程序将执行循环结构之外的下一条语句 它的特点是 先判断条件 后执行循环体 在循环体中对条件进行改变 然后再判断条件 如条件成立 则再执行循环体 如条件不成立 则退出循环 如条件第一次就不成立 则循环体一次也不执行 例4 4 下面程序是通过while语句实现计算并输出1 100的累加和 include 包含特殊功能寄存器库 include 包含I O函数库voidmain void 主函数 inti s 0 定义整型变量x和yi 1 SCON 0 x52 串口初始化TMOD 0 x20 TH1 0 xF3 TR1 1 while i 100 累加1 100之和在s中 s s

12、i i printf 1 2 3 100 d n s while 1 程序执行的结果 1 2 3 100 5050 4 2 5dowhile语句 dowhile语句在C51中用于实现直到型循环结构 它的格式如下 do 语句 循环体 while 表达式 它的特点是 先执行循环体中的语句 后判断表达式 如表达式成立 真 则再执行循环体 然后又判断 直到有表达式不成立 假 时 退出循环 执行dowhile结构的下一条语句 dowhile语句在执行时 循环体内的语句至少会被执行一次 例4 5 通过dowhile语句实现计算并输出1 100的累加和 include 包含特殊功能寄存器库 include

13、包含I O函数库voidmain void 主函数 inti s 0 定义整型变量x和yi 1 SCON 0 x52 串口初始化TMOD 0 x20 TH1 0 xF3 TR1 1 do 累加1 100之和在s中 s s i i while i 100 printf 1 2 3 100 d n s while 1 程序执行的结果 1 2 3 100 5050 在C51语言中 for语句是使用最灵活 用得最多的循环控制语句 同时也最为复杂 它可以用于循环次数已经确定的情况 也可以用于循环次数不确定的情况 它完全可以代替while语句 功能最强大 它的格式如下 for 表达式1 表达式2 表达式3

14、 语句 循环体 for语句后面带三个表达式 它的执行过程如下 1 先求解表达式1的值 2 求解表达式2的值 如表达式2的值为真 则执行循环休中的语句 然后执行下一步 3 的操作 如表达式2的值为假 则结束for循环 转到最后一步 3 若表达式2的值为真 则执行完循环体中的语句后 求解表达式3 然后转到第四步 4 转到 2 继续执行 5 退出for循环 执行下面的一条语句 在for循环中 一般表达式1为初值表达式 用于给循环变量赋初值 表达式2为条件表达式 对循环变量进行判断 表达式3为循环变量更新表达式 用于对循环变量的值进行更新 使循环变量能不满足条件而退出循环 4 2 6for语句 例4

15、6 用for语句实现计算并输出1 100的累加和 include 包含特殊功能寄存器库 include 包含I O函数库voidmain void 主函数 inti s 0 定义整型变量x和ySCON 0 x52 串口初始化TMOD 0 x20 TH1 0 xF3 TR1 1 for i 1 i 100 i s s i 累加1 100之和在s中printf 1 2 3 100 d n s while 1 程序执行的结果 1 2 3 100 5050 在一个循环的循环体中允许又包含一个完整的循环结构 这种结构称为循环的嵌套 外面的循环称为外循环 里面的循环称为内循环 如果在内循环的循环体内又包含

16、循环结构 就构成了多重循环 在C51中 允许三种循环结构相互嵌套 例4 7 用嵌套结构构造一个延时程序 voiddelay unsignedintx unsignedcharj while x for j 0 j 125 j 这里 用内循环构造一个基准的延时 调用时通过参数设置外循环的次数 这样就可以形成各种延时关系 4 2 7循环的嵌套 break和continue语句通常用于循环结构中 用来跳出循环结构 但是二者又有所不同 下面分别介绍 1 break语句前面已介绍过用break语句可以跳出switch结构 使程序继续执行switch结构后面的一个语句 使用break语句还可以从循环体中跳出循环 提前结束循环而接着执行循环结构下面的语句 它不能用在除了循环语句和switch语句之外的任何其它语句中 例4 8 下面一段程序用于计算圆的面积 当计算到面积大于100时 由break语句跳出循环 for r 1 r100 break printf f n area 4 2 8break和continue语句 continue语句用在循环结构中 用于结束本次循环 跳过循环体中continue

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

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号