8.选择结构 (if)
约 1951 字大约 7 分钟
2025-02-05
一、开场:程序的 “决策点”
标题:开启程序决策之门 - 探索 if 语句的奥秘
副标题:用条件判断赋予程序智慧
引入方式:展示一个简单的生活场景,比如在十字路口,驾驶员需要根据交通信号灯的颜色来决定是继续行驶、停车等待还是转弯。提问学生如果把这个场景用程序实现,该如何让程序做出决策,从而引出选择结构(if)的概念,就像生活中的决策一样,程序也能根据条件进行不同的操作。
配图:选择一张展示交通信号灯和车辆的图片,或者用流程图表示简单决策过程的图片,让学生对条件判断有直观的感受。
二、if 语句初相识
if 语句的概念
讲解 if 语句是一种选择结构,它允许程序根据给定的条件是否成立来决定执行不同的代码块。条件成立时执行某个代码块,不成立时可以选择执行另一个代码块(if - else 结构),或者什么都不做(简单 if 结构)。
举例说明,比如判断一个学生的成绩是否及格,如果成绩大于等于 60 分,输出 “及格”,否则输出 “不及格”,这就是 if 语句在实际中的简单应用。
if 语句的语法
简单 if 语句:
if (条件表达式) {
// 条件为真时执行的代码块
}
解释:当 “条件表达式” 的结果为真(非零值)时,执行花括号内的代码块;如果条件为假(零值),则跳过该代码块。
2. if - else 语句:
if (条件表达式) {
// 条件为真时执行的代码块
} else {
// 条件为假时执行的代码块
}
解释:当 “条件表达式” 为真时,执行 if 花括号内的代码块;当条件为假时,执行 else 花括号内的代码块。
代码示例 1:判断成绩是否及格
#include <iostream>
int main() {
int score;
std::cout << "请输入学生的成绩: ";
std::cin >> score;
if (score >= 60) {
std::cout << "及格" << std::endl;
} else {
std::cout << "不及格" << std::endl;
}
return 0;
}
逐行分析代码:
首先定义一个整型变量score
,用于存储学生的成绩。
使用std::cout
输出提示信息,让用户输入学生的成绩,然后用std::cin
读取用户输入并存入score
。
使用 if - else 语句判断score
是否大于等于 60,根据判断结果输出相应的信息。
强调条件表达式的重要性,以及花括号内代码块的执行逻辑,条件为真和为假时程序的不同走向。
三、复杂条件判断与嵌套 if 语句
复杂条件表达式
讲解条件表达式可以包含关系运算符(如>
、<
、==
等)、逻辑运算符(如&&
、||
、!
)以及算术表达式,通过组合这些运算符可以构建复杂的条件判断。
举例说明,比如判断一个数是否在 10 到 20 之间(包括 10 和 20),条件表达式可以写成(num >= 10) && (num <= 20)
,只有当num
同时满足大于等于 10 和小于等于 20 时,整个条件表达式才为真。
嵌套 if 语句
介绍嵌套 if 语句是指在一个 if 语句的代码块中又包含另一个 if 语句。
语法示例:
if (条件表达式1) {
if (条件表达式2) {
// 条件表达式1和条件表达式2都为真时执行的代码块
} else {
// 条件表达式1为真,条件表达式2为假时执行的代码块
}
} else {
// 条件表达式1为假时执行的代码块
}
解释:首先判断 “条件表达式 1”,如果为真,再判断 “条件表达式 2”,根据 “条件表达式 2” 的结果执行相应的代码块;如果 “条件表达式 1” 为假,直接执行最外层 else 的代码块。
代码示例 2:判断成绩等级
#include <iostream>
int main() {
int score;
std::cout << "请输入学生的成绩: ";
std::cin >> score;
if (score >= 0 && score <= 100) {
if (score >= 90) {
std::cout << "成绩等级为A" << std::endl;
} else if (score >= 80) {
std::cout << "成绩等级为B" << std::endl;
} else if (score >= 70) {
std::cout << "成绩等级为C" << std::endl;
} else if (score >= 60) {
std::cout << "成绩等级为D" << std::endl;
} else {
std::cout << "成绩等级为E" << std::endl;
}
} else {
std::cout << "输入的成绩无效" << std::endl;
}
return 0;
}
分析代码:
首先使用外层 if 语句判断输入的成绩是否在 0 到 100 之间,确保成绩的有效性。
在内层使用多个 if - else if 语句,根据成绩的不同范围判断并输出相应的等级。
强调嵌套 if 语句的执行流程,以及在复杂条件判断中如何合理使用嵌套结构来实现程序的逻辑。
四、实践与巩固
练习题目
让学生编写一个程序,判断一个年份是否为闰年。闰年的判断条件是:能被 4 整除但不能被 100 整除,或者能被 400 整除。要求使用 if 语句实现条件判断,并在代码中添加适当的注释。
给出一个简单的程序,其中包含一些 if 语句使用错误的情况,如条件表达式错误、花括号配对问题等,让学生找出错误并改正,同时添加注释说明修改的原因。
互动环节
开展小组讨论,让学生分组讨论练习题目,分享自己的思路和代码实现。每个小组推选一名代表进行发言,讲解小组的讨论结果和代码实现过程,其他小组可以进行提问和补充。
进行编程挑战游戏,教师给出一些简单的条件判断场景,如判断一个人的年龄是否属于某个年龄段、判断一个商品的价格是否符合促销条件等,让学生在规定时间内用 if 语句编写代码实现,最先完成且正确的学生获胜,获胜者可获得小奖品,如编程贴纸、小徽章等。
五、回顾与总结
总结
回顾 if 语句的概念、语法,包括简单 if 语句和 if - else 语句,以及复杂条件表达式和嵌套 if 语句的使用方法。
总结在编写条件判断程序时需要注意的事项,如条件表达式的正确性、花括号的配对、代码的缩进格式等,强调良好的编程习惯对程序可读性和可维护性的重要性。
拓展
鼓励学生课后尝试编写更复杂的条件判断程序,如根据不同的用户输入执行不同的功能模块,或者实现一个简单的菜单驱动程序,根据用户选择执行相应的操作。
推荐一些编程学习网站,如菜鸟教程、W3School 等,让学生可以在课后进一步学习和巩固 if 语句以及其他编程知识,提供更多的代码示例和练习题,帮助学生加深对选择结构的理解和应用。
六、结束寄语
感谢语
感谢同学们在本节课的积极参与和认真学习,通过本节课的学习,大家对选择结构(if)有了深入的理解和掌握。希望大家在今后的编程学习中,能够灵活运用 if 语句解决各种实际问题,不断提升自己的编程能力。