C语言 if 语句教学设计
教学目标
-
知识与技能目标:
(图片来源网络,侵删)- 理解
if语句在程序中的作用和意义(实现条件判断)。 - 掌握
if语句的基本语法结构:if (表达式) { 语句; }。 - 掌握
if-else语句的语法结构及其“二选一”的逻辑。 - 掌握
if-else if-else多分支结构的语法及其“多选一”的逻辑。 - 能够运用
if语句解决简单的实际问题(如判断奇偶、比较大小、成绩评级等)。
- 理解
-
过程与方法目标:
- 通过生活实例引入,培养学生将实际问题转化为程序逻辑的能力。
- 通过代码演示和上机实践,掌握调试和运行程序的基本方法。
- 通过对比分析,理解不同
if结构(单分支、双分支、多分支)的适用场景。
-
情感态度与价值观目标:
- 激发学生对编程的兴趣,感受程序逻辑的严谨性和魅力。
- 培养学生分析问题、解决问题的逻辑思维能力。
- 建立良好的编程习惯,如代码缩进和注释。
教学重难点
-
教学重点:
if、if-else、if-else if-else三种结构的语法和应用。- 条件表达式的正确书写(特别是关系运算符和逻辑运算符的初步使用)。
-
教学难点:
(图片来源网络,侵删)- 理解
if语句的执行流程(程序如何根据条件决定执行哪部分代码)。 if-else if-else结构中,一旦某个条件满足,后续的else if和else分支将不再执行。- 条件表达式的逻辑,特别是多个条件组合时(如
&&和)。
- 理解
教学对象
- 已经学习过C语言基本数据类型(
int,float,char)、变量、常量、赋值语句和printf/scanf函数的初学者。
课时安排
- 1课时(约45-60分钟)
教学准备
- 教师: PPT课件、包含所有示例代码的C源文件、IDE(如Visual Studio Code, Dev-C++等)。
- 学生: 安装好C语言环境的计算机。
教学过程
第一环节:情景导入,激发兴趣 (5分钟)
-
提问互动:
- 教师提问:“同学们,想一想,我们日常生活中是不是经常要做决定?‘如果明天不下雨,我们就去公园;如果下雨,就在家看电影。’这句话里,核心的逻辑是什么?”
- 引导学生回答:“判断天气情况,然后根据不同的结果,做出不同的选择。”
-
引出主题:
- 教师总结:“非常棒!计算机程序同样需要这种智能的判断能力,根据不同的条件来执行不同的操作,在C语言中,我们使用
if语句来实现这种逻辑,我们就来学习如何让我们的程序‘会思考’。”
- 教师总结:“非常棒!计算机程序同样需要这种智能的判断能力,根据不同的条件来执行不同的操作,在C语言中,我们使用
第二环节:新课讲授,逐层深入 (25分钟)
if 语句 —— 单分支选择
-
语法讲解:
(图片来源网络,侵删)- 展示语法结构:
if (条件表达式) { // 当条件表达式为真时,执行这里的代码 语句; } - 核心要点:
if是关键字。- 里的条件表达式,其计算结果必须是“真”或“假”,在C语言中,非0为“真”,0为“假”。
- 里的代码块被称为“语句体”,如果只有一条语句,可以省略,但强烈建议初学者始终使用,以增加代码可读性并避免错误。
- 如果条件为“真”,则执行内的代码;如果为“假”,则直接跳过,执行
if语句后面的代码。
- 展示语法结构:
-
代码演示:
-
示例1:判断一个数是否为正数。
#include <stdio.h> int main() { int num; printf("请输入一个整数: "); scanf("%d", &num); if (num > 0) { // 条件:num是否大于0 printf("%d 是一个正数,\n", num); } printf("程序结束,\n"); // 无论是否为正数,这句都会执行 return 0; }
-
-
流程图分析:
- 画一个简单的流程图:
[开始]->[输入num]->[判断 num > 0?]--是-->[输出是正数]--否-->[跳过]->[输出程序结束]->[结束] - 通过流程图,直观地展示程序的执行路径。
- 画一个简单的流程图:
if-else 语句 —— 双分支选择
-
问题引入:
- 教师提问:“刚才的程序只能判断‘是正数’,那如果输入的是负数或0,我们想输出‘不是一个正数’,该怎么办呢?”
- 引出
else关键字:“else的意思是‘否则’,当if的条件不满足时,我们就执行else里的代码。”
-
语法讲解:
- 展示语法结构:
if (条件表达式) { // 条件为真时执行 语句1; } else { // 条件为假时执行 语句2; } - 核心要点:
else必须和if配对使用。if和else的语句块只会执行其中一个,构成一个“二选一”的逻辑。
- 展示语法结构:
-
代码演示:
-
示例2:改进判断奇偶的程序。
#include <stdio.h> int main() { int number; printf("请输入一个整数: "); scanf("%d", &number); if (number % 2 == 0) { // 使用取余运算符 % printf("%d 是一个偶数,\n", number); } else { printf("%d 是一个奇数,\n", number); } return 0; }
-
if-else if-else 语句 —— 多分支选择
-
问题引入:
- 教师提问:“如果我们想根据学生的分数来评定等级(90-100为A,80-89为B,70-79为C,60-69为D,60以下为F),用
if-else够用吗?” - 引出结论:“显然不够,我们需要多个判断条件,这时,我们就需要
if-else if-else结构。”
- 教师提问:“如果我们想根据学生的分数来评定等级(90-100为A,80-89为B,70-79为C,60-69为D,60以下为F),用
-
语法讲解:
- 展示语法结构:
if (条件1) { // 条件1为真时执行 语句1; } else if (条件2) { // 条件1为假,且条件2为真时执行 语句2; } else if (条件3) { // 条件1、2为假,且条件3为真时执行 语句3; } ... else { // 所有条件都为假时执行 语句n; } - 核心要点:
- 程序会从上到下依次判断各个条件。
- 一旦某个条件为“真”,就执行对应的语句块,然后整个
if-else if-else结构执行完毕,后面的所有else if和else都将被跳过。 else分支是可选的,作为所有条件都不满足时的“兜底”选项。
- 展示语法结构:
-
代码演示:
-
示例3:学生成绩评级。
#include <stdio.h> int main() { int score; printf("请输入你的分数 (0-100): "); scanf("%d", &score); if (score >= 90 && score <= 100) { printf("成绩等级: A\n"); } else if (score >= 80 && score < 90) { printf("成绩等级: B\n"); } else if (score >= 70 && score < 80) { printf("成绩等级: C\n"); } else if (score >= 60 && score < 70) { printf("成绩等级: D\n"); } else if (score >= 0 && score < 60) { printf("成绩等级: F\n"); } else { printf("输入的分数无效!\n"); } return 0; }
-
第三环节:课堂练习,巩固新知 (10分钟)
-
任务发布:
- 任务: 编写一个程序,实现一个简单的“猜数字”游戏。
- 要求:
- 程序中预先设定一个“幸运数字”(比如88)。
- 提示用户输入一个数字。
- 使用
if-else结构进行判断:- 如果用户输入的数字等于幸运数字,输出“恭喜你,猜对了!”。
- 如果用户输入的数字小于幸运数字,输出“你猜的数字太小了!”。
- 如果用户输入的数字大于幸运数字,输出“你猜的数字太大了!”。
-
学生实践与教师巡视:
- 学生开始编写代码,教师巡视,及时解答学生遇到的问题,特别是
scanf的用法、和的区别、逻辑运算符的连接等常见错误。
- 学生开始编写代码,教师巡视,及时解答学生遇到的问题,特别是
第四环节:总结与拓展 (5分钟)
-
课堂总结:
- 教师带领学生回顾本节课的核心内容:
if:单分支,满足条件就做一件事。if-else:双分支,满足条件做A,否则做B。if-else if-else:多分支,从上到下判断,选第一个满足的执行。
- 强调条件表达式的写法和的重要性。
- 教师带领学生回顾本节课的核心内容:
-
拓展思考:
- 问题1: “如果我想同时判断两个条件,比如年龄大于18岁并且是男性,才能当兵,应该怎么写?”
- 引出逻辑与运算符
&&:if (age > 18 && gender == 'M') { ... }
- 引出逻辑与运算符
- 问题2: “如果我想判断一个数是否在1到100之间,怎么写?”
- 引出逻辑或运算符 :
if (num >= 1 && num <= 100) { ... }(这里用&&更合适,但可以引出用于“或”的逻辑)。
- 引出逻辑或运算符 :
- 预告下节课内容:我们将继续学习循环结构,让程序能够重复执行某些操作。
- 问题1: “如果我想同时判断两个条件,比如年龄大于18岁并且是男性,才能当兵,应该怎么写?”
板书设计
C语言 if 语句 |
|
|---|---|
单分支 if |
双分支 if-else |
if (expr) |
if (expr) |
// 语句块A |
// 语句块A |
else |
|
// 语句块B |
|
多分支 if-else if-else |
核心思想 |
if (cond1) |
判断 -> 选择 -> 执行 |
else if (cond2) |
关键点 |
| * 条件为真/假 (0/非0) | |
else |
* 代码块 |
| * 从上到下依次判断 | |
* else if 只会进入一个 |
教学反思
- 本节课的设计是否成功地将生活逻辑与程序逻辑联系起来?
- 学生对三种
if结构的区分是否清晰?是否容易混淆? - 课堂练习的难度是否适中?大部分学生能否独立完成?
- 对于条件表达式(尤其是和的误用)这个难点,是否需要用更多的例子来强调?
- 下次授课时,可以增加一个“代码找错”环节,展示一些包含典型错误的代码,让学生来分析和修正,加深理解。
