单片机基础与应用(C语言版)3.4 C51程序结构 课件(共81张PPT)

资源下载
  1. 二一教育资源

单片机基础与应用(C语言版)3.4 C51程序结构 课件(共81张PPT)

资源简介

(共81张PPT)
3.4 C51程序结构
《单片机基础与应用(C语言版)》
高等教育出版社
C51提供丰富的程序控制语句,按照顺序结构、选择结构和循环结构的结构化程序设计方式编程。
3.4.1 顺序程序与表达式
表达式语句:表达式加上分号
信号灯闪烁控制C语言程序
顺序程序结构:表从main()函数开始
Delay延迟函数:while(i--);
选择结构程序
条件判断
事件1
事件2
假(N)
真(Y)
选择结构程序
对给定的条件进行判断,并根据判断结果选择执行的程序,称为选择结构程序。
单分支选择
双分支选择
多分支选择
选择结构程序
条件判断
事件1
事件2
真(Y)
假(N)
双分支结构
选择结构程序
条件判断
事件1
单分支结构
真(Y)
假(N)
选择结构程序
多分支结构
if 语句
if 语句是C语言的选择程序结构控制语句。
if 语句可以完成单分支选择、双分支选择和多分支选择结构控制。
if 语句的功能模型
如果(满足某个条件)
就 { 执行某个动作 }
如果(今天是周一)
就 { 早晨1、2节上课 }
if 语句的语法
if (表达式)
{
语句组;
}
if 语句例程
if (m==0)
{
delay(1200);
if (k)
{
w=0x01;
}
}
“表达式”可以是任意表达式,只要表达式的值
非0 “真”
0 “假”
if 语句例程
if (m==0)
{
delay(1200);
if (k)
{
w=0x01;
}
}
“表达式”必须用( )括起来;
“语句组”必须用{ }括起来。
if 语句例程
if (m==0)
{
delay(1200);
if (k)
{
w=0x01;
}
}
花括号“{ }”里面的语句组如果只有一条语句,可以省略花括号。
If-else语句的语法
if (表达式)
{
语句组1;
}
else
{
语句组2;
}
if-else语句的执行过程
if (K==0)
{
w=0x01;
P1=~w;
}
else
P1=0x00;

否则——假
if
else
if


l
l
if (表达式1)
{ 语句组1; }
else if (表达式2)
{ 语句组2; }
……
else if (表达式n)
{ 语句组n; }
else
{ 语句组n+1; }
if
else
if


l
l
实例
已知:a=9, b=4,求P1的数值
if (a<3) {P1=0x01; b=10; }
else if (a>b)
{ P1=0x02; }
else P1=0x03;

不执行

执行
选择结构程序
多分支结构
If-else-if语句
switch语句
switch(表达式)
{
case 常量表达式1: 语句1;break;
case 常量表达式2: 语句2;break;
……
case 常量表达式n: 语句n;break;
default: 语句n+1;break;
}
switch语句的语法
switch(i)
{
case 1:P1=0x00; break;
case 2:P1=0x55; break;
case 3:P1=0x0f; break;
case 4:P1=0xf0; break;
default: break;
}
switch(表达式)
{
case 常量表达式1: 语句1;break;
case 常量表达式2: 语句2;break;
……
case 常量表达式n: 语句n;break;
default: 语句n+1;break;
}
switch语句的语法
switch(表达式)
{
case 常量表达式1: 语句1;break;
case 常量表达式2: 语句2;break;
……
case 常量表达式n: 语句n;break;
default: 语句n+1;break;
}
switch语句的语法
注意,这里是冒号“:”,并不是分号“;”
switch(表达式)
{
case 常量表达式1: 语句1;break;
case 常量表达式2: 语句2;break;
……
case 常量表达式n: 语句n;break;
default: 语句n+1;break;
}
switch语句的语法
每一个case后的常量表达式必须是不同的值以保证分支的唯一性。
switch(表达式)
{
case 常量表达式1: 语句1;break;
case 常量表达式2: 语句2;break;
……
case 常量表达式n: 语句n;break;
default: 语句n+1;break;
}
switch语句的语法
每一个case语句后都要跟一个break用来退出switch语句。
switch(表达式)
{
case 常量表达式1: 语句1;break;
case 常量表达式2: 语句2;break;
……
case 常量表达式n: 语句n;break;
default: 语句n+1;break;
}
switch语句的语法
default总是放在最后,这时default后不需要break语句。
default不是必须,如果没有default,当switch后面圆括号中表达式的值与所有case后面的常量表达式的值都不相等时,则不执行任何一个分支直接退出switch语句。
switch(表达式)
{
case 常量表达式1: 语句1;break;
case 常量表达式2: 语句2;break;
……
case 常量表达式n: 语句n;break;
default: 语句n+1;break;
}
switch语句的语法
在switch-case语句中,多个case
可以共用一条执行语句,如:
case 'A':
case 'B':
case 'c':
printf(">60\n"); break;
switch(表达式)
{
case 常量表达式1: 语句1;break;
case 常量表达式2: 语句2;break;
……
case 常量表达式n: 语句n;break;
default: 语句n+1;break;
}
switch语句的语法
如果在case后面包含多条执行语句时,不需要像if语句那样加大括号,
进入某个case后,会自动顺序执行本case后面的所有执行语句。.
练习
已知:a=9, b=4,求P1的数值
if (a<3) { i=2; b=10; }
else if (a>b) i=1;
else i=3;
switch(i) { case 1:P1=0x00; break;
case 2:P1=0x55; break;
case 3:P1=0x0f; break;
case 4:P1=0xf0; break;
default: break;}

不执行
3.2.3 循环语句
1+2+3+4+5+6+……+100=



……

……
重复了99次加法运算
循环结构程序
循环结构程序
实现一种有规律的重复的程序,称为循环结构程序。
i>100
Y
开始
i=1;s=0;
s=s+i;
i=i+1;
结束
N
1+2+3+4+5+6+……+100=
循环初值设置
重复执行的程序段——循环体
循环结束条件
循环结构程序
实现一种有规律的重复的程序,称为循环结构程序。
while
do while
for
while(表达式)
{
语句组;
}
while语句的语法
“当型”
循环
while语句的语法
i=0;s=0;
while (i<=100)
{
s=s+i;
i++;
}
while(表达式)
{
语句组;
}
1+2+3+4+5+6+……+100=
while语句的语法
i=0;s=0;
while (i<=100)
{
s=s+i;
i++;
}
while(表达式)
{
语句组;
}
1+2+3+4+5+6+……+100=
while语句的语法
i=0;s=0;
while (i<=100)
{
s=s+i;
i++;
}
1+2+3+4+5+6+……+100=
循环初值设置必须放在循环之外。
while语句的语法
i=0;s=0;
while (i<=100)
{
s=s+i;
i++;
}
1+2+3+4+5+6+……+100=
表达式可以是任意表达式,“非0”为真,“0”为假。
while语句的语法
i=0;s=0;
while (i<=100)
{
s=s+i;
i++;
}
1+2+3+4+5+6+……+100=
当表达式为常数时,形成无限循环,例如:
while(1){ ……}
因为单片机开始运行后是不能停下来的,所以嵌入式程序中都采用无限循环结构。
while语句的语法
i=0;s=0;
while (i<=100)
{
s=s+i;
i++;
}
1+2+3+4+5+6+……+100=
while(1);
称为停机语句,执行原地踏步操作。一般用于程序调试。
while语句的语法
i=0;s=0;
while (i<=100)
{
s=s+i;
i++;
}
1+2+3+4+5+6+……+100=
While()语句中,如果表达式的结果一开始就为“假”,则循环体一次也不执行。
while语句的语法
i=0;s=0;
while (i<=100)
{
s=s+i;
i++;
}
1+2+3+4+5+6+……+100=
循环体一般是一个复合语句,需用{}括起来。
while语句的语法
i=0;s=0;
while (i<=100)
{
s=s+i;
i++;
}
1+2+3+4+5+6+……+100=
循环体中应有使循环结束的语句。否则会出现不希望的无限循环–––“死”循环。
while语句的语法
i=0;s=0;
while (i<=100)
{
s=s+i;
i++;
}
1+2+3+4+5+6+……+100=
循环体中应有使循环结束的语句。否则会出现不希望的无限循环–––“死”循环。
循环结构程序
实现一种有规律的重复的程序,称为循环结构程序。
while
do while
for
do
{
语句组;
} while(表达式);
do-while语句的语法
“直到型”
循环
i>100
Y
开始
i=1;s=0;
s=s+i;
i=i+1;
结束
N
1+2+3+4+5+6+……+100=
i=0;s=0;
do
{ s=s+i;
i++;
} while (i<=100);
i=0;s=0;
do
{ s=s+i;
i++;
} while (i<=100);
do
{
语句组;
} while(表达式);
1+2+3+4+5+6+……+100=
do-while语句的语法
i=0;s=0;
do
{ s=s+i;
i++;
} while (i<=100);
do
{
语句组;
} while(表达式);
1+2+3+4+5+6+……+100=
do-while语句的语法
i=0;s=0;
do
{ s=s+i;
i++;
} while (i<=100);
1+2+3+4+5+6+……+100=
循环初值设置必须放在循环之外。
do-while语句的语法
i=0;s=0;
do
{ s=s+i;
i++;
} while (i<=100);
1+2+3+4+5+6+……+100=
表达式可以是任意表达式,“非0”为真,“0”为假。
do-while语句的语法
while语句的语法
i=0;s=0;
do
{ s=s+i;
i++;
} while (i<=100);
1+2+3+4+5+6+……+100=
如果表达式的结果一开始就为“假”,则循环体也要执行一次。
i=0;s=0;
do
{ s=s+i;
i++;
} while (i<=100);
1+2+3+4+5+6+……+100=
表达式后面一定要有分号“;”。
do-while语句的语法
i=0;s=0;
do
{ s=s+i;
i++;
} while (i<=100);
1+2+3+4+5+6+……+100=
循环体一般是一个复合语句,需用{}括起来。
do-while语句的语法
i=0;s=0;
do
{ s=s+i;
i++;
} while (i<=100);
1+2+3+4+5+6+……+100=
循环体中应有使循环结束的语句。否则会出现不希望的无限循环–––“死”循环。
do-while语句的语法
do-while语句的语法
i=0;s=0;
do
{ s=s+i;
i++;
} while (i<=100);
1+2+3+4+5+6+……+100=
循环体中应有使循环结束的语句。否则会出现不希望的无限循环–––“死”循环。
while与do-while语句比较
while语句
do while语句
先判断,后执行
先执行,后判断
循环体可能一次也不执行
循环体至少执行一次
循环结构程序
实现一种有规律的重复的程序,称为循环结构程序。
while
do while
for
for
语句
while
语句
1+2+3+4+5+6+……+100=
循环初值设置
重复执行的程序段——循环体
修改循环变量
循环结束条件判断
i=1;s=0;
while (i<=100)
{
s=s+i;
i++;
}
i<=100
Y
开始
i=1;s=0;
s=s+i;
i=i+1;
结束
N
1+2+3+4+5+6+……+100=
i=1;s=0;
while (i<=100)
{
s=s+i;
i++;
}
s=0;
for(i=1;i<=100;i++)
{
s=s+i;
}
1+2+3+4+5+6+……+100=
i=1;s=0;
while (i<=100)
{
s=s+i;
i++;
}
s=0;
for(i=1;i<=100;i++)
{
s=s+i;
}
for(表达式1;表达式2;表达式3)
{
语句组;
}
for语句的语法
表达式1:循环变量赋初值
i=1;
表达式2:循环条件判断i<=100;
表达式3:修改循环变量
i++;
s=0;
for(i=1;i<=100;i++)
{
s=s+i;
}
for(表达式1;表达式2;表达式3)
{
语句组;
}
for语句的语法
表达式2
Y
表达式1;
语句组
表达式3
N
1+2+3+4+5+6+……+100=
s=0;
for(i=1;i<=100;i++)
{
s=s+i;
}
for语句的语法
s=0; i=1;
for(;i<=100;i++)
{
s=s+i;
}
s=0; i=1;
for(;i<=100;)
{
s=s+i;
i++;
}
s=0;
for(i=1;;i++)
{
s=s+i;
if(i<=100)break;
}
for语句中的三个表达式都是可选项,可以省略,但必须保留“;”
1+2+3+4+5+6+……+100=
s=0;
for(i=1;i<=100;i++)
{
s=s+i;
}
for语句的语法
for(;;)
{
语句组;
}
for语句中的三个表达式都省略,但必须保留“;”,无限循环
while(1)
{
语句组;
}
1+2+3+4+5+6+……+100=
s=0;
for(i=1;i<=100;i++)
{
s=s+i;
}
for语句的语法
for(s=0, i=1;i<=100;i++)
{
s=s+i;
}
for语句表达式1也可以是设置循环变量初值的赋值表达式,也可以是与循环变量无关的其他表达式
循环的嵌套
一个循环(称为“外循环”)的循环体内包含另一个循环(称为“内循环”)——循环的嵌套
循环的嵌套
三种循环语句while、do-while、for可以互相嵌套。
循环的嵌套
while()
{
循环体;
}
while()
{ 循环体 }
do
{
循环体;
}while();
do
{循环体}while();
for(;;)
{
循环体;
}
for(;;)
{ 循环体 }
循环的嵌套
while()
{
循环体;
}
for(;;)
{ 循环体 }
do
{
循环体;
}while();
while()
{循环体}
for(;;)
{
循环体;
}
while()
{ 循环体 }
C语言的基本语句
表达式语句
If语句
Switch语句
while语句
Do while语句
For语句
break语句
continue语句
switch(表达式)
{
case 常量表达式1: 语句1;break;
case 常量表达式2: 语句2;break;
……
case 常量表达式n: 语句n;break;
default: 语句n+1;break;
}
break语句的用法1
s=0;
for(i=1;;i++)
{
s=s+i;
if(i<=100)break;
}
break语句的用法2
s=0;
for(i=1;;i++)
{
s=s+i;
if(i<=100)break;
}
break语句的用法2
在循环嵌套中, 一个break语句只能向外跳一层。
void main()
{
int i=0,sum;
sum=0;
for (i=1;i<=20;i++)
{
if (i%5==0) continue; //若i能整除5,即执行continue语句 sum=sum+i;
}
}
continue语句的用法
break语句和 continue语句
结束整个循环。
结束本次循环。
break
语句
continue
语句
感谢您的观看
Thanks for your attention.

展开更多......

收起↑

资源预览