第三章C编程语句.ppt
《第三章C编程语句.ppt》由会员分享,可在线阅读,更多相关《第三章C编程语句.ppt(96页珍藏版)》请在三一文库上搜索。
1、面向对象程序设计(一),吕俊白,第三章 C+编程语句,重点: 关系表达式,逻辑表达式; if语句、switch语句、各种循环语句。,3.1程序的控制结构,ANSI( American National Standards Institute美国国家标准化协会)规定的一些常用流程图符号:,3.1程序的控制结构,程序设计中的三种基本结构: 顺序结构 选择结构 循环结构,1顺序结构,n条语句自上而下排列,并按排列的顺序自上往下逐条执行: 结构图:(P:16),根据指定条件的当前值在两条或多条程序路径中选择一条执行。 结构图:(P:16),在C+中,通常用if语句或switch语句来实现选择结构。,3
2、.循环结构(P:16),在C+中,用于实现循环结构的语句有: for语句、while语句、do while语句。,3.2 C+的语句概述,1C+的控制语句,3.2 C+的语句概述,2空语句: ; 空语句是一种特殊形式的语句,它什么都不做。 一般用在if语句的分支中,表示该分支为空。 3复合语句 (又称为块语句) 是指括在一对花括号 里的语句序列。 一般用于构成if语句的分支或循环语句的循环体。,3.3关系表达式与逻辑表达式,3.3.1关系运算符与关系表达式(P:114) 一、关系运算符 C+提供了六种关系运算,相应的运算符为: 大于() 小于(=) 小于等于(=) 比较(=) 不等于(!=),
3、优先级相同(高),优先级相同(低),注意:关系运算符的优先级低于算术运算符,但高于赋值运算符。 (P:105),二、关系表达式,关系表达式的一般形式为: 运算对象关系运算符运算对象 例如:(1) 3.1415926*r*r100 (2) sex=f 都是关系表达式。具体操作:在计算两个运算分量的值后,对它们进行比较操作,若符合运算符指出的关系,其结果为1(true),否则为0(false)。 作用:描述关系运算。 运算对象:数值型数据、字符型数据、枚举型数据等。 关系运算其运算结果为: 1(true真)或0(false假)。,二、关系表达式,在编程时,关系表达式常用于描述简单的条件。 例如:数
4、学(math)成绩在60分以上 关系表达式: math=60,3.3.2逻辑运算符与逻辑表达式,例如:数学(math)、语文(chinese)、英语(english)三门课均在60分以上如何描述? 一、 逻辑运算符(P:114) C+语言提供了三种逻辑运算符: 逻辑非:! 逻辑与:& 逻辑或:|,高 低,3.3.2逻辑运算符与逻辑表达式,二、逻辑表达式与逻辑运算 逻辑表达式 逻辑表达式的格式: 逻辑运算符!运算对象 运算对象逻辑运算符&或|运算对象 作用:描述逻辑运算。 运算对象:逻辑数据(0或1)或关系表达式。,2.逻辑运算法则,!:逻辑非,其运算法则如下: !0 1 !1 0 &:逻辑与,
5、其运算法则如下:(P:117表4-2) 0 & 0 0 0 & 1 0 1 & 0 0 1 & 1 1 &:只有当两个运算对象均为1时,表达式值才为1.,2.逻辑运算法则,|:逻辑或,其运算法则如下: (P:117表4-2) 0 | 0 0 0 | 1 1 1 | 0 1 1 | 1 1 |:只有当两个运算对象均为0时,表达式值才为0.,逻辑运算其运算结果与关系运算相同为: 1(true真)或0(false假)。 例如:数学(math)、语文(chinese)、英语(english)三门课均在60分以上 math=60 & chinese=60 & english=60,3.短路表达式(P:1
6、17),(1)如果多个表达式用 & 连接,则一个表达式的值为假,将使整个连接而成的表达式的值为假。 例如:设n=3,m=6 执行 n4 & m+80 | humi50 C+利用这个特点来产生高效的代码。,3.4 if语句 (P:27),1. if 语句的语法 if 语句的一般形式: if (expression) statement1; else statement2; /用 括起的为可选项 uexpression:通常是关系表达式或逻辑表达式,偶而也可以用算术表达式,或其它表达式。 ustatement:可以是C+的任何语句。,3.4 if语句,以上一般形式涵盖了if语句的下面两种形式: (
7、1) if (exp) statement; (2) if (exp) statement1; else statement2; 形式(1)不包含else子句,可以看成是形式(2)的特例。,3.4 if语句,2.if语句的作用 在程序中,if语句用于构造选择结构,实现程序分支的选择与执行。 3.if语句的语义 if语句的语义可用流程图描述如下: (P:28图2-1),3.4 if语句,例1:如果a比b大则交换变量a,b中的内容。 if (ab) temp=a; a=b; b=temp ; 问题:为什么要使用temp?,如果if条件后面的语句不止一条,则要用花括号写成语句块。,3.4 if语句,
8、例2:从a,b两个数中挑选值最大者。 if (ab) max = a; else max = b;,例3:我们以60分作为考试的合格线,如果数学(math)、语文(chinese)、英语(english)三门课考试成绩均在60分以上,则输出”考试合格”,否则输出”考试不合格”。,/exam_condiction.cpp #include using namespace std; void main() float math,chinese,english; coutmathchineseenglish; if (math=60 ,5. if语句的嵌套(P:29),if语句的嵌套是指在一个 if
9、语句中又出现另一 if语句。 if语句出现在statement1中称为前嵌套; if语句出现在statement2中称为后嵌套。,(1) 后嵌套多重if语句,例5:男性并且年龄45岁以下视为合格人选,女性并且年龄40岁以下视为合格人选。 程序段: if (sex=m 特点:if与else仍旧可以唯一地配对。,(2) 前嵌套多重if语句及嵌套的歧义性问题,例6:把例5的挑选条件改为,男性且45岁以下,女性不限制年龄。试问以下程序正确否?,程序段2 : if (sex=m)错误 if (age =45) cout “合格男性!n“; else cout “合格女性!n“;,if if s11 el
10、se s2,if if s11 else s12,C+语言规定:每个else只与在它前面的距它最近的那个未配对的if配对。,(3)解决嵌套if语句的二义性,避免二义性的方法: 方法一:用花括号 来强制配对 在例6程序段2的第一个if语句中插入一对花括号。 if (sex=m) if (age =45) cout “合格男性!n“; else cout “合格女性!n“;,(3)解决嵌套if语句的二义性,方法二:把每层if语句的else子句都写全 if (sex=m) if (age =45) cout “合格男性!n“; else ; /利用空语句 else cout “合格女性!n“;,建议
11、:尽量少用前嵌套,多用后嵌套。,3.5条件操作符和条件表达式,1.条件表达式的语法: (条件)?表达式1:表达式2 操作符(? : )是C+中唯一的一个三元操作符。 2. 语义 计算给定条件的值; 若条件的值为真,则计算表达式1;否则计算表达2。 3.作用:描述条件判断。,例如:y = 0 (x=0) y = x0 ? 0:1 等价于下面的if语句: if (x0) y=0; else y=1;,注意: 条件运算符构成表达式,它是有值的。 而if else语句不能有值, 所以,if else语句不能替代条件运算符。 例如: 下面的代码不能由if else替代: cout (ab ? a:b)e
12、ndl; 由于条件操作符的优先级较低,所以整个条件表达式一般总要带上括号。,条件运算符可以嵌套 例如: xy ? “Greater than” : x=y ? “Equal to” : “Less than” 等价于: (xy) ? “Greater than” : (x=y) ? “Equal to” : “Less than”) 当x=y时,值为 “Equal to”; 当xy 时,值为 “Greater than”; 否则,值为 “Less than”。 即:操作符(?:)的结合性为右左先运算右边,在一个条件表达式中,如果后面两个表达式的值的类型相同,且均为左值,则该条件表达式的值为左值
13、。 例如: int x=5; long a,b; (x ? a : b)=1; /right! (x ? x : a)=2; /error! /任何被转换的变量都不是左值 (x=2 ? 1 : a)=3; /error! 1为非左值,例如: 下面的程序段中包含一个条件表达式,指出该程序段的功能。 char ch; cin ch; ch =(ch=A ,该程序段的功能是:输入一个字符存放到ch变量中,利用条件表达式判断该字符是大写还是小写,若是大写字符则转换成小写字符。,3.6 switch语句,if 语句是二分支选择语句; switch语句是多分支选择语句。 在解决实际问题时,我们常常需要用到
14、多分支选择。 例如:根据学生考试成绩的等级输出百分制分数段。 等级(grade) 百分制分数段 A 90 100 B 80 89 C 70 79 D 60 69 E 60,这是一个多分支选择的问题。从流程图中我们可以看出: 可用嵌套的if else语句来实现。,#include using namespace std; void main() char grade; cout grade; if(grade=A) cout“90100“endl; else if(grade=B) cout“8089“endl; else if(grade=C) cout“70-79“endl; else if
15、(grade=D) cout“6069“endl; else if(grade=E) cout“60“endl; else cout“Error!“endl; ,1.switch语句的一般形式:,switch (expression) case constant 1: statement sequence 1; case constant 2: statement sequence 2; case constant n: statement sequence n; default: statement sequence n+1; ,解释:,expression:表达式,也称为开关表达式。 注意
16、: 表达式只能是整型、字符型或枚举型表达式。 如果是其它类型的表达式将引起编译错误。 constant:常量表达式。 switch语句中包含n个常量表达式,与case一起作为n个分支的标号。 注意:case后面的常量表达式之类型必须与switch后面括号中表达式的类型匹配。,解释:,statement sequences:语句序列,可以由一个到多个语句组成。 当语句序列中出现另一switch语句时,称为switch的嵌套。 default:表示当开关表达式的取值不等于已列出的常量表达式的值时的一种特殊处理。default分支(第n+1个分支)也被称为“意外分支”,它可以缺省。 switch 语
17、句中最多包含n+1个语句组,对应n+1个可执行分支。,2. switch语句的作用,在程序中,switch语句用于实现多分支的选择与执行。,3. switch语句的语义,(1)计算开关表达式(expression)的值 ; (2)当表达式的值与某一case后面的常量表达式值相等时,就执行此 case后面的语句组; 如果语句组中带有break语句,则遇到break语句时,流程将跳转至switch语句的下一语句;否则,顺序执行该语句组以下的各个语句组,直至最后一个语句组。 若所有case中的常量表达式值都没有与表达式(expression)的值匹配,就执行 default后面的语句,若无defau
18、lt语句,则直接退出switch语句。 即:根据表达式(expression)的值选择对应的分支,并执行其后语句组。,4.注意:,同一个switch语句中的n个常量表达式的值必须互不相同。 case与default并不改变控制的流程,所以,在程序中case通常与break联用,以保证多路分支的正确实现。,程序段1: colors color;/设colors是一个已定义好的枚举类型 switch (color) case Red: cout “红色“ endl; case Blue: cout “兰色“ endl; case Green: cout “绿色“ endl; 如果color的值是B
19、lue, 则输出:兰色 绿色。,程序段2: colors color; /设colors是一个已定义好的枚举类型 switch (color) case Red: cout “红色“ endl; break; case Blue: cout “兰色“ endl; break; case Green: cout “绿色“ endl; 如果color的值是Blue, 则仅输出兰色。,例如:,4.注意:,在每个case分支都带有break的情况下,case的次序不影响执行结果。 分支的语句组如果包含多个语句,可不用加花括号 ,即无须表示成复合语句形式。 多个case可以共用一组执行语句。,当grad
20、e 的值为A,B,C,D时都输出”考试合格!”。 char grade; / switch(grade) case A: case B: case C: case D: cout”考试合格!n”; ,char grade; / switch(grade) case A,B,C,D: cout”考试合格!n”; /Error! ,例如:,注意:几种情况都执行同一操作时,不能简单地将其值用逗号隔开,在一个case中实现。,4.注意:,switch语句可以嵌套。 case与default标号是与包含它的最小的 switch相联系的。 例如: int i,j; switch(i) case 1: /
21、case 2: switch(j) case 1: / case 2: / / case 3: / / ,例如:对于上例,根据学生考试成绩的等级输出百分制分数段。,用switch语句编写程序如下: #include using namespace std; void main() char grade; cout grade; switch(grade) case A: cout“90-100“endl; break;,case B: cout“80-89“endl; break; case C: cout“70-79“endl; break; case D: cout“60-69“endl;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第三 编程 语句
![提示](https://www.31doc.com/images/bang_tan.gif)
链接地址:https://www.31doc.com/p-3438335.html