软件081程序设计基础第8讲教案由刀豆文库小编整理,希望给你工作、学习、生活带来方便,猜你可能喜欢“第8讲软件维护”。
计算机科学技术学院教案
答疑时间: 每周四晚自习 答疑地点:2311教室 第 8 次
课 题: 第5章 选择结构程序设计 5.1 关系表达式 5.2逻辑表达式 5.3 if语句
一、if语句的三种形式
主要教学内容: 关系运算符和关系表达式、逻辑运算符的种类、优先级和 结合性,逻辑表达式的求值,if语句的3种格式、语义。
教学目标: 掌握关系、逻辑运算符及其优先级和结合性,关系、逻辑 表达式及其求值规则;掌握if语句的格式、语义和用法。
if的格式、语义和选择结构设计方法。重 点: 逻辑运算符的求值,难 点: 逻辑表达式的求值规律,if语句的语义。
教学过程设计: 首先讲解关系表达式、逻辑表达式,以实例讲解逻辑表达 式的求值规律,特别是短路时的执行过程,是难点,采用
多举几个例子的方法讲解,以突破难点;并以判闰年为例,讲解如何使用逻辑表达式表示复杂条件。之后,主要介绍
if语句的3种形式和语义,以流程图直观地讲解语义,并 从格式上说明使用if语句的几点注意事项,然后从编程的 角度讲解2个数的排序方法,进而提出3个数如何排,引 导学生思考来设计算法,并用N-S图为工具,讲解算法的设计过程,之后再根据N-S图编写出程序。在此基础上,提出4个数如何排序,以引导学生思考,启发思路;再提 出,100个数如何排序,„„。
教学手段: 采用黑板教学、在讲解时,采用实例加直观图形的手段。作 业: 看书,P111 5.3,P112 5.9。计算机科学技术学院教案 教学内容: 如下:
第5章 选择结构程序设计 5.1 关系运算符和关系表达式
一、关系运算符
> >= = =!= 例:c > a + b => c >(a + b)a = = b > c => a = =(b > c)a = b a =(b
二、关系表达式
1.定义 — 用关系运算符将两个表达式连接起来的式子。
如:a > b,a + b b + c,‟a‟ > b,(a > b)
a > b —— 1 a > b = = c —— 1 b + c b —— d的值为1,表达式 = 1 f = a > b > c —— a > b为1,1 > c为0,f为0,表达式 = 0 优先级相同(7)优先级相同(6)自左至右,左结合性 计算机科学技术学院教案
5.2 逻辑运算符和逻辑表达式
一、优先级和结合性
1.三种逻辑运算符 && — 逻辑与(AND)|| — 逻辑或(OR)双目!— 逻辑非(NOT)— 单目 如:a&&b,a||b,!a 真值表:P93 表5-1 2.优先级!→&&→!
例:a > b && x > y =>(a > b)&&(x > y)a = = b || x = = y =>(a = = b)||(x = = y)
!a || a > b =>(!a)||(a>b)
3.结合性 1)&& 和 | | — 自左至右; 2)!— 自右至左。!a
二、逻辑表达式
—— 用逻辑运算符将关系表达式或逻辑量连接起来的式子。1.取值: 真 — 1 假 — 0 例:①a =-3,非0 — 真 0 — 假 计算机科学技术学院教案 则!a — 0 ②a = 3,b =-5,a&&b — 1 a || b — 1!a || b — 1 ③4&&0 || 2 =>0 || 2 — 1 例:5 > 3 && 8
„d‟ — 1 99 100 即:非0即为真,0为假。
∴以非0、0代表参加运算量的值,0或1代表逻辑运算的结果,得P94表5-2的真值表。3.逻辑运算最优策略 — 短路(1)a&&b&&c(3)a && b || c 1(真)0(假)0(假)1(真)4)a || b && c(计算机科学技术学院教案
即:&&:只有a ≠ 0时,才继续右边的运算; ||: 只有 a = 0时,才继续右边的运算。设:a=0,b=0,c=0;
则:a+ + && + +b || c+ +计算后,a、b、c及表达式的值; a+ + && b+ + || c+ +计算后,a、b、c及表达式的值。4.表示复杂条件
如:判闰年: ①能被4整除,但不能被100、整除; ②能被400整除。(year % 4 = = 0 && year % 100!= 0)|| year % 400 = = 0 判非闰年:上式括起来前加!。或:
(year % 4!= 0)||(year % 100 = = 0)&& year % 400!= 0)计算机科学技术学院教案 5.3 if语句
作用 — 判定所给定的条件是否满足,根据判定的结果(真或假)决定执行给出的两种操作之一。5.3.1 if语句的三种形式一、三种形式 1.if(表达式)语句 如:if(x > y)printf(“%d”,x); 执行过程:=> 2.if(表达式)语句1 else 语句2 如:if(x>y)printf(“%d”,x);else printf(“%d”,y);执行过程:=> 3.if(表达式1)语句1 else if(表达式2)语句2 „ „ „ „ „ else if(表达式n)语句n else语句n+1 例:if(score >= 90)grade = „A‟;else if(score >=80)grade = „B‟;else if(score >=70)grade = „C‟;else if(score >=60)grade = „D‟;else grade = „E‟;
二、说明
1.if语句的条件一般为逻辑表达式
整型 实型
但作为条件的表达式 — 任意“数值”类型
字符型 指针型 „„ T 表达式F
T 语句1 语句2语句3 例如:if(a= =b && x>=y)printf(“a=b,x>=y”);计算机科学技术学院教案 如:if(– 3)printf(“O.K.”);
if(„a‟)printf(“%d”,‟a‟);
2.第2、3种形式,每个else前有一个“;”,整个语句结束处有一分号。如:
if(x > 0)if子句 内嵌语句 一个语句 “%f ” , x); else printf(“%f ” , –x);
内嵌语句 else子句3.如内嵌语句为多个语句,必用{ }括起,且}后不加分号“;”。如:if(a + b > c && b + c > a && c + a > b){ s = 0.5 *(a + b + c)/ 2 ;
area = sqrt(s *(s – a)*(s – b)*(s – c)); printf(“ area = %6.2f n ” , area); } else printf(“it is not a trilateraln”); 例5.1 输入两个实数,由小到大输出。解:程序如下: #include void main(){ float a , b , t ;
scanf(“ %f%f ” , &a , &b);
if(a > b){ t = a ;a = b ; b = t ; } printf(“ %5.2f , %5.2f n ” , a , b); } 结果:3.6ㄩ– 3.2↙ –3.20 ,ㄩ3.60 计算机科学技术学院教案
例5.2 输入3个数,按由小到大排序后输出 解:算法分析如下: 输入a,b,c 若a>b,则若a>c,则若b>c,则
输出a,b,c 程序如下: #include void main(){ int a,b,c,t;
scanf(“ %d,%d,%d”,&a,&b,&c);if(a > b){ t = a;a = b;b = t;} if(a > c){ t = a;a = c;c = t;} if(b > c){ t = b;b = c;c = t;} printf(“%d,%d,%dn”,a,b,c);} 1,3,7 输入a,b,c t = a a = b b = t t = a a = c
c = t t = b b = c c = t 输出a,b,c