资源简介 (共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;}elseP1=0x00;真否则——假ifelseif语句llif (表达式1){ 语句组1; }else if (表达式2){ 语句组2; }……else if (表达式n){ 语句组n; }else{ 语句组n+1; }ifelseif语句ll实例已知: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;结束N1+2+3+4+5+6+……+100= 循环初值设置重复执行的程序段——循环体循环结束条件循环结构程序实现一种有规律的重复的程序,称为循环结构程序。whiledo whileforwhile(表达式){语句组;}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= 循环体中应有使循环结束的语句。否则会出现不希望的无限循环–––“死”循环。循环结构程序实现一种有规律的重复的程序,称为循环结构程序。whiledo whilefordo{语句组;} while(表达式);do-while语句的语法“直到型”循环i>100 Y开始i=1;s=0;s=s+i;i=i+1;结束N1+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语句先判断,后执行先执行,后判断循环体可能一次也不执行循环体至少执行一次循环结构程序实现一种有规律的重复的程序,称为循环结构程序。whiledo whileforfor语句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;结束N1+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语句的语法表达式2Y表达式1;语句组表达式3N1+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语句的用法1s=0;for(i=1;;i++){s=s+i;if(i<=100)break;}break语句的用法2s=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. 展开更多...... 收起↑ 资源预览