1、第 13-14 课时分支结构 教学内容分析教学内容分析 分支结构的执行是依据一定的条件选择执行路径, 而不是严格按照语句出现的物理顺序。 分支结构让程序能够适应更加复杂的环境,解决更加困难的问题,同时也使得程序设计变得 更有趣味。 主题 1 介绍了关系表达式和逻辑表达式,以及 if 语句的单分支结构。通过对关系运算符 和逻辑运算符的组合应用,能够让选择结构的程序有更强大的数据处理能力。 主题2进一步介绍了if双分支结构, 并且给出了两个较为复杂的分支结构程序设计案例, 展示了双分支结构的语法和程序执行流程。为了通过编程解决更复杂的问题,我们需要在 if 语句中间加入更为复杂的逻辑判断。 本课所
2、涉及的关系运算与逻辑运算是构成程序中条件判断的重要手段, 学好这部分知识, 对于接下来学习循环结构程序设计有着莫大的帮助。 教学对象分析教学对象分析 小学阶段已经学过 Scratch 编程,C 语言的分支结构在 Scratch 编程语言中也有对应的 逻辑积木块,所以对于学生来说,理解分支构并不是一件很困难的事情。 学生在学过顺序结构程序设计之后,对 C 语言的基本语法和组织方式有了一定的了解, 同时也学会了利用 scanf 函数和 printf 函进行基本的输入输出操作。应该来说,在此基础 上,学生已经具备了进一步探索更为复杂的程序设计结构的能力。 面对复杂的实际问题,如何构造合理正确的判断条
3、件,既考验学生的逻辑思维能力又考 验教师的教学水平。建议教师对这部分教学的难度要引起充分的重视,给予学生分的练习机 会,给学生试错的机会,让学生理解逻辑算的过程和结果,以及它对 if 句的执行所带来的影 响。 教学目标教学目标 1.理解关系运算符及其用法。 2.理解逻辑运算符及其用法。 3.了解 if 语句的格式和执行过程。 4.能够根据实际需要编写简单的分支结构程序。 教学重点和难点教学重点和难点 1.教学重点。 (1)关系运算符。 (2)if 语句的格式和执行过程。 2.教学难点 (1)逻辑运算符。 (2)利用 if 语句编程解决实际问题。 教学方法教学方法 1.讲授法:教师通过对 if
4、语句语法结构的分析和讲解,帮助学生快速认识到该语句在分支结 构程序设计中的用法,以及常见的错误样例。 2.任务驱动教学:通过编程实践任务,引导学生逐步了解和掌握双分支结构程序设计,并尝 试着运用复杂的逻辑运算进行分支结构的逻辑判定。 教学准备教学准备 1.教学环境。 多媒体网络教室。 2.教学资源。 C 语言源代码样例。 教学过程教学过程 第 13 课时 一、引入新课(5 分钟) 1.提问: 请思考这个程序的功能:输入两个整数,然后按照从小到大的顺序把它们输出。 利用我们之前所学的顺序结构程序设计知识,可以解决这个问题吗?我们遇到了什么困难? 2.提问:面对这种局面,我们应该采用怎样的策略?
5、3.提问:在数学上有类似的做法吗? 二、讲解新课(15 分钟) 1.讲解:在 C 语言中我们也有类似的做法,只不过 C 语言的表示方法更接近英文。 2.参照教材第 75 页关于 if 语句的结构和执行流程的内容,请学生用小学学过的 Scratch 编 程语言描述一下这个程序。对比一下 C 语言的 if 语句和 Scratch 的分支积木,它们有哪些 共同点和相似之处。 3.布置课堂任务一:编写 C 语言代码,输入两个整数,并将它们按照从小到大的顺序输出。 4.教师随堂辅导点评学生编写的程序。 注意:为了完成同样的程序功能,代码可能存在不同的写法。 5.展示学生的程序,并进行点评。 要注意点评这
6、些程序写法上可能存在的不同,但它们都有一个共同之处,就是都要用到 if 语 句。 6.讲解:在使用 if 语句的时候,我们发现括弧中进行了两个数的比大小运算,这种运算在 C 语言中被称之为关系运算,它和数学概念上的比大小是一致的。唯一不同的是它的描述符号 和数学上有一些差别,请同学们参考课本第 74 页表 6-1,比对相应的关系运算符,记住它们 的写法,特别是不等于号和等于号。 7.讨论一下,如果没有 if 语句,能完成上述编程任务吗? 三、拓展提升(20 分钟) 1.布置课堂任务二:完成教材第 77 页的计算打车费程序。 提醒学生注意思考:这里打车费的计算方式和之前将两个数按顺序输出的计算方
7、式有何相似 之处? 2、点评学生的典型代码。 要注意辨析打车费计算过程中车费和里程数的数据类型。由于里程数可能存在小数,所以车 费的计算结果可也是小数,因此要把相关的变量定义为浮点类型。 另外在输出车费总额的时候要往意仅保留小数点后两位。 3. 给出实践刨新任务,也就是课堂任务三:要求改进计算打车费的代码,当乘车时间超过晚 上 10 点加收 20%的夜间补贴。 提醒学生编写完程序之后,要进行充分的测试,既要测试夜间打车的情况,也要测试非夜间 打车的情况。 四、复习小结(5 分钟) 总结,在展示学生典型代码,进行点评的时候,小结本节课的教学要点,也就是 if 语句的逻 辑结构和执行流型。 需要指
8、出的是, 几乎所有的 if 语句都需要在其中进行相应的关系运算。 熟练掌握大于、 小于、 大于等于、小于等于、不等于和等于这 6 种关系运算符,对于用好 if 语句具有举足轻重的作 用。 第 14 课时 一、复习知识(5 分钟) 展示上一节课的出租车计价程序,并提问:按里程收费的计价方案,以 3 千米为界,那么可 以把所有的里程数分为几类? 二、讲解新课(15 分钟) 1.引导学生思考:其实这两种分类暗示着一种非此即彼的逻辑判断结果。 在 C 语言中我们可以用一种特定的分支语句来表达这种逻辑关系,if.else.。 2.展示教学案例,将之前的出租车计价程序改成双分支绪构(if.else.)。
9、在改写的过程中,引导学生参考教材第 80 页图 6-3,理解双分支结构的执行过程。 3.布置课任务一,利用双分支结构判断体检者血压是否正常。 4.随堂辅导,并点评学生的代码。 注意点评学生可能出现的典型错误,比如花括号不匹配。 注意提示学生写代码的时候要注意缩进,以便阅读和理解。 三、拓展提升(20 分钟) 1.展示分支结构的两种代码(判断体检者血压是香正常)。 第 1 种;在判断中只使用一个比较语句。 第 2 种:在判断中使用多个比较语句,并利用逻辑运算符将它们进行连接。 2.讲解:在 if 语句中只使用一个比较语句,代码看起来比较冗繁。如果我们把这道题的判定 条件进行相应的归类,我们会发现
10、血压是否正常取决于多个因素;只有当收缩压和舒张压都 处于正常范围内,才认为体检者的血压是正常的。这种逻辑判断形式在日常生活中非常常见, C 语言中的逻辑运算符能帮助我们用更贴近生活的描述形式表达我们所需的逻辑。 3.参考教材第 74 页逻辑表达式的内容,向学生讲解逻辑运算。 4.提问:回到检测血压的这个问题,我们应该如何使用逻辑表达式表达体检者的收缩压和舒 张压都在正常范围之内呢? 注意:这个问题的答案是不唯一的,教材中仅给出了一种解答。 教师应当注意多展示一些表达形式,拓展学生的思路。 同时,也要注意发现并点评些典型错误,请学生互助改错。 5.布置课堂任务二:利用逻辑运算符,简化分支结构的判
11、定,调整测量血压的代码。 6.讨论:比对前后程序的复杂程度,你认为逻辑表达式在分支结构中扮演了怎样的角色?它 的好处在哪里? 7.布置课堂任务三:输入三个正整数,判断这三个正整数是否能够构成三角形。 请注意:教材上并没有约定输入的数是正整数,为了简化课堂教学,我们在此约定只输入正 整数。 8. 展示和点评学生的典型代码,进一步巩固双分支结构程序设计的技巧。 重点是要在点评中展示和分析各种不同的逻辑运算符组合所产生的效果。 9. 对于学有余力的学生,教师可以进一步提高要求,请他们修正代码,使得程序能够检测出 用户输入的负数值,给出错误提示信息。 四、课堂小结(5 分钟) 总结:本节课我们花了大量的时间分析了两个复杂的例子,为的是阐述双分支结构程序设计 的技巧,以及逻辑运算符在表达复杂逻辑条件判定时的有益作用。 这些构成判定条件的关系运算符和逻辑运算符,以及它们之间相互组合的技巧,不仅在眼下 我们学习的分支结构中大有用处,而且在接下来要学习的循环语句中也至关重要,事实上他 们是计算机具有智能,能够进行选择和判定动作的基础。 教学反思教学反思