第2章结构化程序设计基础和C语言控制结构课件.ppt
《第2章结构化程序设计基础和C语言控制结构课件.ppt》由会员分享,可在线阅读,更多相关《第2章结构化程序设计基础和C语言控制结构课件.ppt(89页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、n nC C程序控制结构中的条件表示程序控制结构中的条件表示程序控制结构中的条件表示程序控制结构中的条件表示n n分支程序结构分支程序结构分支程序结构分支程序结构n n循环程序结构循环程序结构循环程序结构循环程序结构n nC C语言中其他简单控制结构语言中其他简单控制结构语言中其他简单控制结构语言中其他简单控制结构n nC C语言控制结构应用举例语言控制结构应用举例语言控制结构应用举例语言控制结构应用举例第第第第2 2章结构化程序设计基础和章结构化程序设计基础和章结构化程序设计基础和章结构化程序设计基础和C C语言的控制结构语言的控制结构语言的控制结构语言的控制结构 结结构构化化程程序序设设计
2、计是是进进行行程程序序设设计计的的方方法法和和原原则则。按按照照结结构构化化程程序序设设计计的的基基本本观观点点,任任何何程程序序都都可可以以通通过过三三种种基基本程序结构的组合实现。这三种基本结构是:本程序结构的组合实现。这三种基本结构是:n 顺序结构顺序结构:按语句出现的顺序依次执行的程序结构。n 选选择择结结构构:根据给定的条件是否成立,以决定程序流程转向的程序结构。n 循循环环结结构构:在某种条件成立的情况下,反复执行某一公共程序段,直到条件不成立时,终止循环的程序结构。结构化程序的优点:结构化程序的优点:具有结构清晰、可读性好、易于修改。具有结构清晰、可读性好、易于修改。结构化程序设
3、计概述结构化程序设计概述n nC C程序控制结构中的条件表示程序控制结构中的条件表示程序控制结构中的条件表示程序控制结构中的条件表示n n分支程序结构分支程序结构分支程序结构分支程序结构n n循环程序结构循环程序结构循环程序结构循环程序结构n nC C语言中其他简单控制结构语言中其他简单控制结构语言中其他简单控制结构语言中其他简单控制结构n nC C语言控制结构应用举例语言控制结构应用举例语言控制结构应用举例语言控制结构应用举例第第第第2 2章结构化程序设计基础和章结构化程序设计基础和章结构化程序设计基础和章结构化程序设计基础和C C语言的控制结构语言的控制结构语言的控制结构语言的控制结构 对
4、于分支结构和循环结构都涉及到两个方面对于分支结构和循环结构都涉及到两个方面的基本问题:的基本问题:1 1)如何表示控制结构中的条件;)如何表示控制结构中的条件;2 2)对于控制结构中的条件如何判断成立与否;)对于控制结构中的条件如何判断成立与否;程序设计语言中,用程序设计语言中,用关系运算关系运算和和逻辑运算逻辑运算来实现对程序控制结构中条件的描述和处理。来实现对程序控制结构中条件的描述和处理。2.1 C程序控制结构中的条件表示程序控制结构中的条件表示2.1.1 2.1.1 关系运算符和关系表达式关系运算符和关系表达式关系运算符和关系表达式关系运算符和关系表达式 关系运算符用于比较两个运算对象
5、,用关系运算符将两个关系运算符用于比较两个运算对象,用关系运算符将两个表达式连接起来的式子称为关系表达式。表达式连接起来的式子称为关系表达式。关系运算符及其优先级关系运算符及其优先级n =(同级)(同级)n =!=!=(同级)(同级)n关系运算符的优先级低于算术运算符。关系运算符的优先级低于算术运算符。n关系运算符的结合性为左结合性。关系运算符的结合性为左结合性。例如:例如:ca+b ca+b 等价于等价于 c(a+b)c=55=5 /*/*结果为结果为1*/1*/10=10=1010/*/*结果为结果为1*/1*/5 5!=5=5 /*/*结果为结果为0*/0*/53 53 /*/*结果为结
6、果为1*/1*/35 35 /*/*结果为结果为0*/0*/2.1 C程序控制结构中的条件表示程序控制结构中的条件表示 该程序运行执行语句该程序运行执行语句c=5-1=a+2=a+2=a+2=a+2=和和=结合,即先计算表达式结合,即先计算表达式5-5-1=a+21=a+2得到结果得到结果0 0,然后计算表达式,然后计算表达式0=b-210c a+bc 且且 a+cb a+cb 且且 b+cab+ca)。)。计算三计算三角形的面积的公式为角形的面积的公式为:2.2.2复合语句及其在程序中的使用复合语句及其在程序中的使用 上面程序中,上面程序中,ifif结构的语句部分是复合语句:结构的语句部分是
7、复合语句:s=(a+b+c)/2;s=(a+b+c)/2;area=area=sqrt(ssqrt(s*(s-a)*(s-b)*(s-c);*(s-a)*(s-b)*(s-c);printf(%fn,areaprintf(%fn,area););在在C C程序的设计过程中,需要使用复合语句的地方必须使用复合语句程序的设计过程中,需要使用复合语句的地方必须使用复合语句的形式,否则程序在语法上可能检查不出任何错误,但程序运行的结果的形式,否则程序在语法上可能检查不出任何错误,但程序运行的结果与程序设计者的期望会相去甚远。例如,如果将例与程序设计者的期望会相去甚远。例如,如果将例2.52.5相关程序
8、段描述为相关程序段描述为如下形式:如下形式:if(a+bc&a+cb&b+ca)/*if(a+bc&a+cb&b+ca)/*满足三角形条件时求其面积满足三角形条件时求其面积*/s=(a+b+c)/2;s=(a+b+c)/2;area=area=sqrt(ssqrt(s*(s-a)*(s-b)*(s-c);*(s-a)*(s-b)*(s-c);printf(%fn,areaprintf(%fn,area););2.2.2复合语句及其在程序中的使用复合语句及其在程序中的使用 n双分支结构的形式:双分支结构的形式:if(expression)sentence1;else sentence2;2.2.
9、3 if_else2.2.3 if_else语句与程序的双分支结构语句与程序的双分支结构注意注意:作为条件的表达式可以是任何可以求出作为条件的表达式可以是任何可以求出0 0值或非值或非0 0值的表达式。值的表达式。ifif结构或结构或elseelse结构后语句部分都可以是结构后语句部分都可以是C C语言的任何合法语句。语言的任何合法语句。2.2.3 ifelse语句与程序的双分支结构语句与程序的双分支结构 exps1s2ynn n 语句的执行过程:语句的执行过程:语句的执行过程:语句的执行过程:先判断表达式的值,若表达式的值为真(表达式先判断表达式的值,若表达式的值为真(表达式先判断表达式的值
10、,若表达式的值为真(表达式先判断表达式的值,若表达式的值为真(表达式的值不为的值不为的值不为的值不为0 0 0 0),则执行语句),则执行语句),则执行语句),则执行语句1 1 1 1,然后执行,然后执行,然后执行,然后执行ifififif结构的后续语结构的后续语结构的后续语结构的后续语句;否则,执行语句句;否则,执行语句句;否则,执行语句句;否则,执行语句2 2 2 2,然后执行,然后执行,然后执行,然后执行ifififif结构的后续语句。结构的后续语句。结构的后续语句。结构的后续语句。2.2.3 ifelse语句与程序的双分支结构语句与程序的双分支结构 例例2-62-6 求任意输入的求任意
11、输入的3 3个整个整数中的最大数。数中的最大数。2.2.3 ifelse语句与程序的双分支结构语句与程序的双分支结构 2.2.4 2.2.4 条件运算符与条件表达式条件运算符与条件表达式 C C语言中,若语言中,若ififelseelse语句结构中的语句部分满足语句结构中的语句部分满足下列两个条件:下列两个条件:无论表示条件的表达式取何值(真或假),语句部分无论表示条件的表达式取何值(真或假),语句部分都是一句简单的赋值语句。都是一句简单的赋值语句。两条赋值语句都是为同一个变量赋值。两条赋值语句都是为同一个变量赋值。则,可以使用则,可以使用C C语言中提供的条件运算符代替这种语言中提供的条件运
12、算符代替这种ifelseifelse结构。结构。2.2.4 条件运算符与条件表达式条件运算符与条件表达式 条件运算符是条件运算符是C C语言中惟一的一个三元运算符,使用条语言中惟一的一个三元运算符,使用条件运算符构成的表达式称为条件表达式。件运算符构成的表达式称为条件表达式。exp1?exp2:exp3exp1?exp2:exp31)条件表达式一般形式如下:条件表达式一般形式如下:2)条件表达式的执行过程条件表达式的执行过程:首先计算表达式首先计算表达式exp1exp1的值,若的值,若exp1exp1的值为非的值为非0 0(真),则(真),则计算出表达式计算出表达式exp2exp2的值作为整个
13、条件表达式的值;若的值作为整个条件表达式的值;若exp1exp1的的值为值为0 0(假),则计算出表达式(假),则计算出表达式exp3exp3的值作为整个条件表达式的值作为整个条件表达式的值。的值。2.2.4 条件运算符与条件表达式条件运算符与条件表达式 条件运算符的优先级别高于赋值运算符,但条件运算符的优先级别高于赋值运算符,但低于关系运算符和算术运算符。低于关系运算符和算术运算符。条件运算符的结合方向为右结合性,例如有条件运算符的结合方向为右结合性,例如有如下形式的条件表达式:如下形式的条件表达式:ab?a:cd?c:dab?a:cd?c:d可以看出,在数据对象可以看出,在数据对象cdcd
14、(关系表达式)的两边具关系表达式)的两边具有同级的条件运算符(有同级的条件运算符(?:?:),由于条件运算符的结合),由于条件运算符的结合性为右结合,数据对象性为右结合,数据对象cdcd先与其右边的的条件运算先与其右边的的条件运算符结合,即先计算符结合,即先计算cd?c:dcd?c:d,所以整个条件表达式的所以整个条件表达式的计算过程与表达式计算过程与表达式ab?a:(cd?c:d)ab?a:(cd?c:d)的计算过程相同。的计算过程相同。2.2.4 条件运算符与条件表达式条件运算符与条件表达式 例例2-72-7 从键盘上输入一个英文字母,若其是大写字母则转从键盘上输入一个英文字母,若其是大写
15、字母则转换为小写字母输出;否则转换为大写字母输出。换为小写字母输出;否则转换为大写字母输出。在上面程序中,表达式在上面程序中,表达式chch=A A&ch&ch=A A&ch&ch=A&ch=Z?ch+32:ch-32;2.2.4 条件运算符与条件表达式条件运算符与条件表达式 2.2.5 if2.2.5 if语句的嵌套与程序的多分支结构语句的嵌套与程序的多分支结构 ifif结构或者结构或者elseelse结构的语句部分又是另外一个结构的语句部分又是另外一个ifif结结构,称为构,称为ifif语句的嵌套。语句的嵌套。在在C C程序设计中,程序设计中,ifif语句的嵌套结构用于解决在语句的嵌套结构
16、用于解决在若干若干种种相关情况中选择一种进行处理的问题。相关情况中选择一种进行处理的问题。例如,在一个二分例如,在一个二分支支ifif语句的两个语语句的两个语句部分分别嵌入了句部分分别嵌入了一个二分支一个二分支ifif语句语句的形式为:的形式为:if(exp1)if(exp2)sentence1;elsesentence2;else if(exp3)sentence3;elsesentence4;2.2.5 if语句的嵌套与程序的多分支结构语句的嵌套与程序的多分支结构例例2-82-8 公司按照公司按照销售人员收到的销售人员收到的订单金额数量评订单金额数量评定等级,订单总定等级,订单总金额超过一
17、万的金额超过一万的为为A A等,等,5000999950009999为为B B等,等,2500499925004999为为C C等,等,25002500以下为以下为D D等。等。编制程序对输入编制程序对输入的订单总金额数的订单总金额数判定等级。判定等级。2.2.5 if语句的嵌套与程序的多分支结构语句的嵌套与程序的多分支结构 当被嵌套的当被嵌套的ifif结构均被嵌套在结构均被嵌套在elseelse的语句部分时,的语句部分时,形成了一种称为形成了一种称为else_ifelse_if的多分支选择结构,这是的多分支选择结构,这是if_elseif_else多重嵌套的变形。其一般形式为:多重嵌套的变形
18、。其一般形式为:if(exp1)sentence1;else if(exp2)sentence2;else if(exp3)sentence3;else if(expN)sentenceN;else sentenceN+1;2.2.5 if语句的嵌套与程序的多分支结构语句的嵌套与程序的多分支结构注意:注意:在这种特殊的在这种特殊的elseelseifif结构中,表示条件的表达式结构中,表示条件的表达式是相互排斥的,执行该结构时控制流程从是相互排斥的,执行该结构时控制流程从exp1exp1开始判断,开始判断,一旦有一个表达式的值为非一旦有一个表达式的值为非0 0(真)时,就执行与之匹(真)时,就
19、执行与之匹配的语句,然后退出整个选择结构;如果所有表示条件配的语句,然后退出整个选择结构;如果所有表示条件的表达式值均为的表达式值均为0 0(假),则在执行语句(假),则在执行语句sentenceN+1sentenceN+1后后退出整个选择结构;如果当所有的条件均为假时不需要退出整个选择结构;如果当所有的条件均为假时不需要进行任何操作,则最后的一个进行任何操作,则最后的一个elseelse和语句和语句sentenceN+1sentenceN+1可以缺省。嵌套的可以缺省。嵌套的elseelseifif结构执行流程如图结构执行流程如图2.62.6所示。所示。2.2.5 if语句的嵌套与程序的多分支
20、结构语句的嵌套与程序的多分支结构例例2-92-9 编写程序求如下所示多分支方程的解。编写程序求如下所示多分支方程的解。在程序中,变量在程序中,变量x x的取值区间为:(的取值区间为:(DBL_MINDBL_MIN,1 1)、)、11,1010)、)、1010,DBL_MAXDBL_MAX),),其中其中DBL_MINDBL_MIN和和DBL_MAXDBL_MAX分别表示双精度实型数据所能取得的最小值分别表示双精度实型数据所能取得的最小值和最大值。和最大值。2.2.5 if语句的嵌套与程序的多分支结构语句的嵌套与程序的多分支结构 在包含了在包含了ifif语句嵌套结构的程序中,语句嵌套结构的程序中
21、,elseelse子句与子句与ifif的的配对原则是非常重要的,按不同的方法配对则得到不同的配对原则是非常重要的,按不同的方法配对则得到不同的程序结构。程序结构。C C语言中规定:语言中规定:程序中的程序中的elseelse子句与在它前面距子句与在它前面距它最近的且尚未匹配的它最近的且尚未匹配的ifif配对。配对。无论将程序书写为何种形无论将程序书写为何种形式,系统总是按照上面的规定来解释程序的结构。式,系统总是按照上面的规定来解释程序的结构。请看如下两个用于比较的程序段:请看如下两个用于比较的程序段:2.2.5 if语句的嵌套与程序的多分支结构语句的嵌套与程序的多分支结构例例2.102.10
22、和例和例2.112.11描述了两种情况下程序的执行情况。其中:描述了两种情况下程序的执行情况。其中:例例2.102.10程序执行的结果为:程序执行的结果为:a=-1,b=10a=-1,b=10,例例2.112.11程序执行的结果为:程序执行的结果为:a=-1,b=11a=-1,b=11。例例2-102-10 else else与与ifif配对原则示例。配对原则示例。例例2-112-11 else else与与ifif配对原则示例(使用复合语句改变程序结构)配对原则示例(使用复合语句改变程序结构)2.2.5 if语句的嵌套与程序的多分支结构语句的嵌套与程序的多分支结构2.2.6 switch2.
23、2.6 switch语句与程序的多分支结构语句与程序的多分支结构 C C语言中可以使用语言中可以使用switchswitch语句结构实现对多分支选择结语句结构实现对多分支选择结构情况的直接处理。构情况的直接处理。1 1)switchswitch语句结构的一般形式如下:语句结构的一般形式如下:switch(expession)case constand1:sentences1;break;case constand2:sentences2;break;case constandN:sentencesN;break;default:sentencesN+12.2.6 switch语句与程序的多分支
24、结构语句与程序的多分支结构2 2)执行过程:)执行过程:首先,首先,对作为条件的表达式(对作为条件的表达式(expressionexpression)求值;求值;然后,然后,在语句结构的花括号内在语句结构的花括号内从上至下从上至下查找所有的查找所有的casecase分支,分支,当找到与条件表达式值相匹配的当找到与条件表达式值相匹配的casecase时,将其作为控制流程时,将其作为控制流程执行的入口,并执行的入口,并从此处开始执行相应的语句段,直到遇到从此处开始执行相应的语句段,直到遇到breakbreak语句或者是语句或者是switchswitch语句结构的右花括号语句结构的右花括号“”为止。
25、为止。2.2.6 switch语句与程序的多分支结构语句与程序的多分支结构2.2.6 switch语句与程序的多分支结构语句与程序的多分支结构switch(number)case 1:statement1;case 2:statement2;case 3:statement3;default:statement4;statement5;?2作为条件的表达式作为条件的表达式expressionexpression的值必须是有序型的,即只的值必须是有序型的,即只能是能是整型、字符型、枚举型整型、字符型、枚举型三者之一。三者之一。语句段语句段sentencessentences可以是单条语句,也可以
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 结构 程序设计 基础 语言 控制 课件
限制150内