第三单元分支结构程序设计
课本知识总结:
第一课 学习掌握关系运算符,包含关系运算符的种类,优先级,正确书写关系表达式。
(1)关系运算符 包括>大于、<小于、>=大于等于、<=小于等于、==等于、!=不等于。特别注意符号的书写方式,==等于号和!=不等于号避免习惯错误。
由关系运算符链接起来的表达式称为关系表达式。关系表达式的结果是一个逻辑值“真”或“假”。“真”表示这个关系成立,“假”表示这个关系不成立。在C++中,通常用0表示假,用非0值(通常用1)表示真。
应用举例1==2 表达式结果0;1!=2 表达式结果1。
使用关系运算符需要注意以下问题:
<1>“等于”与“赋值”的区别 “==”表示关系运算“等于”,例a==5,表示判断变量a与5是否相等,结果为一个逻辑值,a的值保持不变。“=”表示“赋值”操作,例a=5,表示将常量5赋值给变量a。a的值变为5。
<2>实型数据(浮点数)的关系运算 整型数据的关系运算按照数值大小进行比较,字符型数据按照ASC值大小进行比较。但是,实型数据(浮点数)在计算机中是近似储存的,直接比较大小会出现问题。例 0.666666是否等于0.666667呢?这个结果不一定,若要求误差在0.001范围内,则相等;若要求在0.00000001范围内,则不想等。所以,在C++中,一般用两个数值的差与要求的精度进行比较,判断他们是否相等,或者判断一个是否等于0。
<3> 运算符的优先级 就是在表达式中,既有各种算术运算符,又有各种关系运算符时,按照什么先后顺序进行计算。在C++中,算术运算符、关系运算符、赋值运算符的计算顺序由高到低为:算术运算符、关系运算、赋值运算符。
第二课 逻辑运算符 (优先级,逻辑表达式)
逻辑运算符是用来表示一个0~100之间(包含0和100)的整数,或者x大于y且x大于z这样的关系,在C++中提供了&&(逻辑与)、||(逻辑或)和!(逻辑非)三种逻辑运算符。其中,&&和||是双目逻辑符,而!是单目运算符。由逻辑运算符连接起来的表达式,称为逻辑表达式,其运算结果也是一个逻辑值“真”或“假”。
运算规则:逻辑非 例A=0 !A=1;A=1 !A=0。逻辑与 例A=0 B=0 A&&B=0;A=1 B=0 A&&B=0注意:逻辑与在两个都成立时才成立,只要有一个不成立就不成立。逻辑或 例A=0 B=0 A||B=0;A=1 B=0 A||B=1。注意:逻辑或在两个都不成立时才不成立,只要有一个成立就成立。
使用逻辑运算符需要注意这样几个问题:
<1>逻辑运算符的优先级问题。
<2>逻辑运算符的写法 例:想表达0<a<100,必须用逻辑与表达为a>0&&a<100.
<3>整型数据也可以参与逻辑运算,根据其值是0或非0,分别当作逻辑值“假”或“真”进行处理。
<4>逻辑运算符是“短路计算”,在逻辑表达式的计算过程中,一旦能够确定整个表达式的值,就会立刻停止计算。例 对于“A&&B”,如果已经计算出表达式A为假,那么整个表达式的值肯定为假,于是表达式B就不需要再计算下去了。同理,对于“A||B”,如果已经计算出表达式A的值为真,那么整个表达式的值必定为真,于是表达式B也不必计算下去了。
第三课,if语句(分支问题)掌握if语句的两种格式,理解分支结构和复合语句,熟练应用if语句解决一些实际问题。
(1) if语句 两种格式
第一种:if(表达式)
语句1;
else
语句2;
表示如果“表达式”的值为真(条件成立),那么执行“语句1”,否则执行“语句2”。
第二种: if(表达式)
语句;
表示如果“表达式”的值为真(条件成立),那么执行“语句”;否则, 什么也不做(else及其后面省略)。
(2)复合语句
例:if(a>b){
c=a;
a=b;
b=c;
}
但是:条件语句只有一句
第四课 if语句的嵌套 理解if语句嵌套的含义,熟练应用if语句及其嵌套解决一些实际问题。注意:程序中只能写一条语句,多条时要加{}而只有一条是不用。
在分支结构中,经常会遇到这样的情况,如果条件一成立,就去做a事情,否则去做b事情,但是在做a事情(或者b事情时),还要根据条件二是否成立,决定是做a1(或者b1),这件事情,还是去做a2或者b2这件子事情。在程序设计中,把这种情况称为分支结构的“嵌套”,一般用来解决三种及以上的分支情况。
使用if语句的嵌套,要注意以下几点:
<1>分支结构可以嵌套很多层
在第一层的if子句里嵌套了一个if语句(第二层),也就是嵌套一层。有时,情况分类很多,也可以根据需要,在第一层的else子句里嵌套,还可以在第二层的if里继续嵌套第三层,在第三层的if里继续嵌套第四层……
<2>if 与else的配对关系 程序中的else子句总是与离他最近的前面一个if子句配对。
<3>编程要形成良好的代码风格,为了增强程序的可读性,if…else…语句及其嵌套都采用“缩进”对齐格式,让同层的if子句与else子句对齐。
第五课 条件表达式 学会书写和使用条件表达式解决一些实际问题。
条件表达式的一个格式为:<表达式1>?<表达式2>:<表达式3> 其运算规则为:首先计算表达式1的值,若表达式1的值为真(非0),则只计算表达式2的,并将其结果作为整个表达式的值;否则,只计算表达式3,并将其结果作为整个表达式的值。
第六课 switch语句(语句的格式和含义,用switch语句解决一些实际问题)。
一般格式为:switch(表达式){
case常量表达式1:语句组1;[break;]
case常量表达式2:语句组2;[break;]
…
case常量表达式n:语句组n;[break;]
[default:语句组n+1]
}
执行过程为:先计算表达式的值,然后从前往后依次与case子句中所列出的,各个常量表达式的值进行比较,若表达式的值与常量中的值相等,就开始进入相应的case后面的语句组执行,遇到后续的case也不再进行判断(默认匹配),直到遇到break语句或switch语句结束。default表示表达式与所有常量表达式的值都不匹配,那么就执行其后面的语句组,通常将default放在最后。如果表达式与各分支常量表达式的值都不匹配时,不需要执行任何语句,则default可以省略。
使用switch语句要注意以下几点:
<1>switch后面的表达式,取值只能是整型、字符型、布尔型或枚举型。case后面的常量表达式,其值类型要与switch后面表达式的类型一致。
<2>任意两个case 后的表达式值必须各不相同,否则将引起歧义。
<3>语句组可以是一条语句,也可以是一个复合语句。
<4>多个case语句可以共用一组程序。
第七课 分支结构应用举例
注意:1关于{ }的正确使用,通常在多条if语句时使用。
2数据类型的一致,特别是switch语句中。
3避免习惯性数学写法造成的错误。例 a==1与a=1的区别。
本单元学习总结:
第三单元分支结构重点在if语句和switch语句的使用,学习程序的分支运算,在一个程序中作出判断,分析多种情况。在编写时容易出现的错误有,习惯性错误,赋值号与判断是否相等,数值范围的表示必须用&&而不是简单的数学表示。另外还有if语句的嵌套混乱,多个语句嵌套时,if与else的对应。在分支结构程序设计实验时,常用if语句,而很少用switch,所以对if语句更加熟练,以后会尝试switch的使用。在理论课与实验课的结合下,还是比较明白课程的学习的。