收藏 分销(赏)

第7章-ATmega-C-语言设计.ppt

上传人:精**** 文档编号:10296276 上传时间:2025-05-19 格式:PPT 页数:45 大小:835.04KB
下载 相关 举报
第7章-ATmega-C-语言设计.ppt_第1页
第1页 / 共45页
第7章-ATmega-C-语言设计.ppt_第2页
第2页 / 共45页
点击查看更多>>
资源描述
第7章 ATmega C语言实用程序控制流,ATmega 单片机原理及应用,C语言教程,第7章 ATmega C语言实用程序控制流,内容提要,C语言的程序控制流程可以分为3种基本结构,即顺序结构、选择结构和循环结构。通过这3种基本的程序结构可以构成各种复杂的程序。本章将主要介绍这些基本程序结构的语句实现,包括if语句、switch语句、while语句和for语句的语法格式和语意内容,以及各语句在程序控制中的应用,并为后面章节的学习打好基础。,7.1 C语言的结构化程序设计,C语言是一种结构化的编程语言。从程序流程的角度来看,结构化的程序包含3种基本结构,即顺序结构、选择结构和循环结构。这3种基本的程序结构又可以相互组合、嵌套,从而构成各种复杂程序。,1、顺序结构,顺序结构是一种最基本的程序结构。在这种控制结构中,程序按照程序的存放地址由低向高顺序执行。如图7.1所示,程序先执行语句1,再执行语句2,两者按顺序关系执行。,图7.1 顺序结构流程,例7.1 己知长方体的长为l,宽为w,高为h,求其体积。,源程序为:,main(),int l,w,h,volume;/定义变量,printf(Please input three numbers!n);/输入变量,scanf(%d%d%d,volume=l*w*h;,printf(l=%d,w=%d,h=%d,volume=%dn,l,w,h,volume);/输出l、w、h、v,2、选择结构,选择结构使计算机具有了决策和选择的能力。,选择语句用于对计算机的某个事件处理提供多条通道,从而使计算机具有选择控制能力。,3、循环结构,循环结构用于重复执行一组有规律的指令集合,它可分为无条件循环和条件循环两种。,对于条件循环结构,程序在给定条件成立时会反复执行某条语句,直至条件不再成立为止。,C语言提供了for、while等多种循环语句,它们可以相互组成各种不同形式的循环结构。,C语言中的循环结构又可以分为当型循环结构和直到型循环结构。,在当型循环结构中,程序首先判断循环条件,如果为“真”,则程序重复执行循环体中的语句;如果为“假”,则退出循环。,在直到型循环结构中,程序首先执行的是循环体中的语句,然后再判断循环条件,如果条件为“真”,则再重复执行语句,否则就退出循环。,7.2 选择语句,选择语句用来判断给定的条件是否满足要求,并根据判断的结果选择程序的执行分支,它构成了计算机的判断决策基础,是模块化程序的重要组成部分。,7.2.1 if 语句,1、ifelse分支,if else语句的基本结构形式为:,if(表达式),语句1:/当表达式为“真”时,else,语句2:/当表达式为“假”时,例7.3 输入一个数,如果为2,则输出“YES”;否则输出“NO”。,main(),int a;,printf(Please input one interger!n);,scanf(%d,&a);,if(a=2),printf(YESn);,else,printf(NOn);,2、if分支,if分支是ifelse语句的简单形式,当ifelse语句缺省else部分时,就形成了if结构的分支,其基本结构形式为:,if(表达式),语句;/当表达式为“真时,例7.4 输入两个整数,输出其较小值。,main(),int a,b;,printf(Please input two integers!n);,scanf(%d,%d,&a,&b);,if(ab),a=b;,printf(%d,a);,3.else if分支,else if是多分支处理结构。该结构的基本形式为:,if(表达式1)语句1;,else if(表达式2)语句2;,else if(表达式3)语句3;,else if(表达式n-1)语句n-1;,else 语句n;,例7.5将百分制成绩转换成优、良、中、及格和不及格5个等级。,main(),int score;/定义变量,printf(please input a scroe!n);/输入成绩,scanf(%d,&score);,if(0=score&score60)/判断输入的成绩,printf(Rank=%c,E);/输出成绩等级,else if(60=score&score70),printf(Rank=%c,D);,else if(70=score&score80),printf(Rank=%c,C);,else if(80=score&score90),printf(Rank=%c,B);,else,printf(Rank=%c,A);,说明:使用if结构还必须注意以下几点:,1、在if语句中的表达式一般是逻辑表达式或关系表达式,但也可以是其他表达,甚至也可以是一个变量。,2、在if语句中,判断执行分支的条件表达式必须用括号括起来,不加分号;而语句之后则必须加分号。,3、在3种形式的if语句中,分支语句为单个语句。如果要想在分支中执行多个语句,则必须用大括号括起来组成一个复合语句。,7.2.2 switch,分支,虽然else if 可实现“多选一”,但这种实现方法的效率较低,代码量也较大。为此,C语言提供了另一种专用于多分支选择的switch语句,它的一般形式,switch(表达式),case常量表达式1:语句1;,case常量表达式2:语句2;,case常量表达式n:语句n;,default:语句nl;,例7.6 用switch调用不同的输出。,switch(a),case 1 printf(“china”);break;,case 2:printf(“is”);break;,case 3:printf(“a”);break;,case 4:printf(“great”);break;,case 5:printf(country);break;,case 6:printf(“!”);break;,default:printf(OK);,说明:使用switch结构还必须注意以下几点:,1、switch后的执行部分,必须用大括号括起来。,2、在同一个switch结构中,不能有相同的case常量表达式出现。,3、在case后的多个语句,可以不用大括号括起来。,4、为实程序执行一个分支,可采用break语句来跳出switch结构的方式实现。,7.2.3 选择语句的嵌套,当一个选择语句中又包含了一个或多个选择语句时,就构成了选择语句的嵌套形式。if语句和switch语句都允许嵌套,它们的嵌套格式也基本相同。,选择嵌套的一般形式如下:,if(表达式1),if(表达式2):,语句1;,else,语句2;,else,if(表达式3),语句3;,else,语句4;,由于if语句中的else部分是选用的,若嵌套内的语句不带else,那么这将会出现else与if匹配的问题。为解决这个问题,C语言中规定,else总是与它最近的if配对。,例7.7 输入3个数,输出最大值,main(),int a,b,c;,printf(Please input two integers!n);,scanf(%d,%d,&a,&b);,if(ab),if(bc),c=a;,else,c=b;,7.3 循环语句,特点:在给定判定条件为“真”时,程序反复执行某一条或某一组语句,直到判定条件为“假”。,循环结构中的循环语句一般由循环体和循环判定条件两步分组成,其中被重复执行的那部分语句被称为循环体,而循环条件则用于判断是否重复执行循环体部分。,C语言中有3条语句可实现循环功能,它们是:,1、while语句,2、do while语句,3、for语句,7.3.1 while语句,while语句的一般形式为:,while(表达式),语句;,语句中的表达式为循环判定,它是while循环是否继续的条件;语句为循环体,它是执行重复操作的语句。,图7.7 while语句流程,例7.8 求1到100的和。,main(),int n=1,sum=0;,while(n=100),sum=sum+n;,n+;,使用while语句应注意以下几点:,1、while循环结构的循环判定条件在循环体之前,因此在执行循环操作之前必须先进行循环判定条件的测试,如果条件不成立,则循环体内的操作一次也不能执行。,2、while语句中的表达式一般是关系表达或逻辑表达式,但也可以是其他表达式,甚至可以是变量或常量。只要表达式的值为“真”,while语句就会循环执行。,3、循环体如包括有一个以上的语句,则必须使用大括号括起来,构成一个复合语句。,4、while循环中,应用使循环趋于结束的语句,否则将构成死循环。,do while循环与while循环的不同之处在于:while循环先测试循环判定条件,而do while循环则先执行循环体中的语句,然后再测试循环判定条件。如果条件为“真”,则继续执行循环体;如果条件为“假”,则终止循环。因此,不管循环条件是真是假,do while循环至少都会执行一次循环。do while语句的一般形式为:,do,语句;,while(表达式);,main(),int n=1,,,sum=0,;,do,sum=sum+n,;,n+;,while(i=100);,do while循环语句把循环判定条件的测试放在了循环的结尾处,这样就使得循环至少也能够循环一次,因此常用于执行至少一次循环的情况下。,例7.9求1到100的和。,for循环语句由3个部分构成。,其中第一个部分为初始化表达式,它用于在开始执行for循环时进行循环变量的初始化;,第二部分是循环判断表达式,它可以提供循环的终止条件;,第三部分是尺度增量表达式,用于在循环之后执行某种操作。,如果for语句的第一部分和第三部分被省略了,那么for语句就退化成了while语句;,如果用于测试循环条件的第二部分被省略,那么循环就一直进行,这种方式下必须借用其他手段(如break语句或return语句)终止循环。,for循环语句的一般形式为:,for(表达式1;表达式2;表达式3),语句;,语句的执行过程为:,(1)先初始化表达式1。,(2)测试循环判定表达式2,若表达式为“真”,则程序执行for语句循环中的循环体;若表达式为“假”,则终止循环。,(3)求解表达式3,返回第2步继续判断循环表达式。,(4)结束循环。,例7.10 求1到100的和。,main(),int n,sum;,sum=0;,for(n=0;n=100;n+),sum=sum+n;,printf(sum=%dn,sum);,说明:C语言中的for语句具有如下几个必须注意的地方:,1、for语句中的3个表达式都可以省略,但其中的分号不能省。,2、表达式1和表达式3可以是一个简单的表达式,也可以是一个逗号表达式。,3、如果要使for语句中的循环体不止一个语句,必须用大括号把多个语句括起来形成一个复合语句。,当一个循环结构中又包含一个或多个循环结构时,就构成了循环嵌套。C语言中的3种循环结构都允许循环嵌套,并且不同的循环语句之间也可以相互嵌套。,例7.11下面是一个循环嵌套程序的例子,看看执行后的结果是什么。,main(),int a=1,b=1,c=1;,while(a10),do,for(;c10;c+),printf(%d%d%dn,a,b,c);,b+;,while(b10);,a+;,7.3.5 break语句和continue语句,在循环语句执行过程中,有时需要在循环判定条件仍为“真”的时候直接从循环体中退出来,这时就需要用到break语句和continue语句。,break语句适用于3种循环语句,break语句执行后,程序会立即从最内层的循环语句跳出。continue语句和break语句相似,continue语句一旦执行,程序就立即开始下一次循环。,1、break语句,break语句通常用在循环语句中,它可使程序跳出循环,而执行循环后的语句。在循环结构中break语句一般与if语句联用,当条件满足时便跳出循环。其流程如图7.10所示。,break语句也可用于分支语句中,当switch结构中插入break语句时,程序会跳出switch结构,执行分支语句以后的程序。,2、continue语句,continue语句为循环继续语句,它的作用是将流程转到下一轮循环的入口,强行执行下一次循环。continue语句只能用于for,while和do.while这3个循环结构中,而不能用在switch的分支结构中。continue语句大都和if语句联用,用来在某些特殊情况下,使本轮循环停止执行而进入下一轮循环。其执行流程如图7.11所示。,例7.13,处理数组a中的非负元素。,main(),int a10,i;,for(i=0;i10;i+),if(ai0),continue;,ai=ai+10;,printf(%dn,ai);,这个例子中,程序通过continue语句跳过了数组中小于0的元素。与break语句不同,continue语句执行后循环并没有终止,它只是跳转到了下一轮循环的入口,继续进行处理。,本章小结,本章主要介绍了比较常用的几种程序语句,如if语句、switch语句、while语句和for语句的语法格式和语意内容,以及各语句在程序控制中的应用。,1.C语言的程序控制流程分为3种基本结构,即顺序结构、选择结构和循环结构。,2.顺序结构是一种最基本的程序结构。在这种控制结构中,程序按照程序的存放地址由低向高顺序执行。,3.在选择控制结构中,程序先是对某个条件语句进行判断,如果条件为“真”,则执行语句1;如果条件为“假”,则执行语句2,语句1和语句2最后汇集到一起并从一个程序出口中退出。,4.循环结构用于重复执行一组有规律的指令集合。,5.选择语句用来判断给定的条件是否满足要求,并根据判断的结果选择程序的执行分支。,6.循环结构就是在给定判定条件为“真”时,程序反复执行某一条或某一组语句,直到判定条件为“假”。,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服