《C语言程序设计》教案(4-6)
授课题目
选择控制结构与应用
3学时
目的与要求
重点与难点
目的1掌握三种运算符及表达式。
    (2通过基础知识的学习,理解C语言程序的基本组成结构的含义,初步理解如何进行程序的编写掌握。
要求:1)掌握if条件语句的三种基本形式,能够编写单分支、双分支和多分支选择控制的程序
(2)掌握switch多路选择语句,在解决问题时,能够正确选择switch和if语句。
(3)掌握选择语句的流程图算法描述方法
重点:if选择结构和switch选择结构。
难点:复合运算符及复杂表达式和多条件选择结构。
教学方法及手段
(1)课件:根据本节课程设计的内容及计划安,逐步展现知识点。
(2)板书:针对学生在学习和练习过程中出现的问题,进行补充讲解。调节课堂节奏,给学生思考的时间。
(3)教师程序编写:让学生观摩程序的写、运行及产生结果的过程,与知识点一一对应,加深理解。
(4)学生用手机C语言模拟器编写程序:题目与例题类似,但小有变化,让学生在理解的基础上进行程序编写,为今后的程序设计打下基础,减少程序设计中的错误。
(5)问答:就一些知识点的变化与学生进行问答互动。
(6)就(4)和(5)中同学们的表现给出部分平时分,为了鼓励同学们的参与积极性,参与者加1分,答对者加2-3分。
教学内容   
1.课程内容的引入
对第一章的内容进行总结,提出第一章的程序编写中缺少按照不同的条件选择执行不同的代码机制,而在实际应用中很多情况下,需要依据不同的条件,执行不同的运算过处理器,如博弈类游戏的设计等。为此,
(1)需要学习更多的运算符
(2)学习选择结构的代码设计
2.复合赋值运算符的含义本节课程讲解的内容
第二章 选择控制结构与应用
说明本章重点与难点
2.1选择结构的基本运算符(0.5学时)
教学内容
讲解关系运算符、逻辑运算符的程序设计要点:
(1) 关系运算符及关系表达式(6个)。
(2) 逻辑运算符及逻辑表达式(3个)。
(3) 短路原则。
(4) 让学生编写小程序,输出两类运算表达式的值。
讲解思路
(1) 学习运算符的要点有三个:优先级、操作数个数和结合性(第1章讲解算术运算符和赋值运算符时首提)。关系运算符和逻辑运算符的学习也需要把握住这三个要点。
(2) 表达式的名称和运算结果是由优先级最低的运算符决定的。
(3) 关系或逻辑表达式的值只有两个:真(非零)和假(零)。
(4) 分析复杂表达式时,应先优先级别最高的运算符,同时,注意()”的优先级别很高,它往往可以改变表达式的运算次序。通过分析复杂表达的运算逻辑,推导出短路原则。
(5) 编写一个输出复杂表达式的值及每个参与变量的值的程序。预估程序结果,然后与实验结果对比,从而深入理解短路原则及表达式的运算规律。
【提问】什么样的表达式叫逻辑表达式/关系表达式?
【实践】编写小程序输出关系运算表达式和逻辑运算表达式的值
授课阶段总结
    本节学习运行算符的方法与第1章是一样的,要抓住三个要点。复杂表达式的分析与设计并不简单,需要抓住运算符的运算特点,分析表达式的运算逻辑,才能得到正确的结果。
在实例练中,通过观察变量在运行过程中的变化,去推断程序运算逻辑(如短路原则)。这是调试时常用手段(与debug一样),不但加深同学对知识的理解、巩固学生所学知识,还有助于培养学生的程序分析能力和反工程能力。
“程序主要用来阅读的,只是偶尔用于执行”,所以,建议学生尽量用简单的表达式,并学会化简复杂表达式的方法,如讲解思路(4)中所述。
2.2 if选择结构(1学时)
教学内容
(1) if结构
(2) if-else结构
(3) if-else-if结构
(4) if语句嵌套
(5) 表达式在if结构中使用的拓展
讲解思路
(1) if结构:用流程图说明if结构的设计思路,以两个数比较大小为例讲解if结构的用法。通过练习,到if中的语句块与单条语句的语法区别。
(2) if-else结构:用流程图说明if-else结构的设计思想,改写两个数比较大小的实例,让学生看两者的区别,并能总结出在此例中if-else的方便性。
(3) if-else-if结构:用流程图说明if-else-if结构的程序设计思路,强调最后一个else的作用。以学生成绩分等级为例讲解if-else-if的用法。
(4) if语句嵌套:if语句的嵌套规则,强调没有括号改为配对方式的情况下,else与if语句的配对原则
【提问】if语句中的条件表达式必须是关系或逻辑表达式吗?
(1) 表达式在if结构中使用的拓展:任意表达式都可以作为if语句的条件表达式。条件表达式的设计与应用(包括逻辑分析)
(2) 用实例说明条件运算符与if-else语句的异同
【实践】分别用if语句和if-else语句编写判断两个数大小的程序
授课阶段总结
本节的知识点不难理解,但有些小地方容易出错:
(1) 关系运算符中“==”会错写为赋值运算,可利用赋值运算符的运算规则避免出现逻辑上的错误(系统不会报语法错误),技巧为:如果在关系运算中存在数字,则可以把数字写在“==”的右侧,这样关系运算就不会报语法错误。
(2) if结构中多条语句时,容易忘加“{}”
(3) 误认为单独的变量不能做条件表达,其实,任意合法的表达式都可以做条件表达式
(4) 多级嵌套的条件表达式编写与设计容易出错,建议嵌套层次不要包含两层以上。
2.3 switch选择结构(0.5学时)
教学内容
(1) switch结构。
(2) 强制类型转换。
(3) switch结构应用实例。
(4) 比较switch选择结构与if-else-if选择结构。
讲解思路
(1) switch选择结构。首先讲解switch选择结构的表达形式及语法含义,然后,用流程图讲解它的执行次序及使用方法。特别注意两点:switch条件表达式只能进行判等运算;break对于switch执行的影响。
(2) switch结构应用实例。将(1)中的知识点运用的实例当中。
(3) 比较switch选择结构与if-else-if选择结构。对上述实例进行总结,从两者的运算机理到使用方法等6个方面比较它们使用方法和应用场合。
实践:编写学生成绩分等级的程序
授课阶段总结
switch语法比较复杂,而且要求比较严格。学习时,要记住它的语法格式及相关的程序设计要求。
从程序阅读角度来看,switch比if-else-if具有更好的结构且执行效率也高,但是switch执行条件比if-else-if要严格,它们之间相互替换使用时,通常switch需要更多的程序设计技巧。
2.4 应用实例(1学时)
教学内容
(1) 计算器程序设计。
(2) 强制类型转换。首先讲解数据类型之间的转换规则,然后讲解转换的方法及用途。
(3) 学生成绩档案管理成绩等级划分。
讲解思路
(1) 本小节主讲设计思想,所以每一个例题都必须有流程图来表达设计思想,通过讲解流程图帮学生梳理思路。然后,把对编程实现时用到技巧及难点进行讲解。
(2) 计算器程序设计难点及设计技巧是从用户角度考虑两方面的内容:友好的交互界面(增加用户体验感)和运算的健壮性
友好的交互界面:没有一种计算器在实际应用中是在用户输入操作数后,会把所有的计算都运算一遍(第1章我们编写的计算器是这样的)。同操作数一样,进行哪种运算由用户指定,为此,加入菜单,让用户从菜单上选择计算方式。
菜单用输出函数printf打印出来
选择计算方式用switch选择结构实现,每个case对应一个计算功能
健壮性:在进行除法运算时,当除数为0时,应提示用户输入错误。
用if选择结构来判除数是否为0,并提示用户输入错误。
【实践】编写与设计带菜单的计算器小程序
(3) switch选择结构if选择结构相互嵌套的形式对学生成绩管理程序的改进
强制类型转换这一改进需要用到强制数据类型转换。因为switch是判等的,要求switch表达式与case常量表达式必是字符型或整型,而成绩分档是一个浮点型集合划分的运算,所以需要将强制类型转换知识点
基于强制类型范围缩放数据处理技术,把一个范围表达浓缩到一个整型数字里,这样就能使用switch选择结构了。
【问题】ppt中的程序有哪些错误
【实践】基于强制类型范围缩放数据处理技术的成绩分档程序的设计与实现
授课阶段总结
本节内容以实践为主,以当前所学的知识点,学生可以组织起一个逻辑上相对完整的程序,所以本小节以程序设计思维的训练为重点内容。首先,引导学生设计一个可以进行人机交互的界面编写一个计算器的菜单,通过选择进行计算,把第一章的计算语句copy到适当的位置(增量开发)。然后,运用本章的知识点,设计具有一定的容错能力和设计技巧(强制类型转换与归一化处理)的学生成绩分档程序。两个例子都用到了本章所介绍的if和switch嵌套句型。
3.本次课程总结
(1)知识层面
关系运算符与表达式、逻辑运算符与表达式
if语句的三种语法形式
三目运算符(?)
switch选择结构--break语句
(2)方法层面
多分支选择结构的组织方式与设计方法:if-else-if和switch
对switch结构中有无break语句的使用与设计技巧
类型转换
数据缩放技巧
4.堂互动与实践
(1)编写小程序输出关系运算表达式和逻辑运算表达式的值
(2)分别用if语句和if-else语句编写判断两个数大小的程序
(3)编写与设计带菜单的计算器小程序
(4)用if-else和switch嵌套的程序技巧编写成绩分档程序
(5)采用改错的形式巩固if语句中的条件表达式中知识点
(6)基于强制类型范围缩放数据处理技术的成绩分档程序的设计与实现
5. 课堂记录

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。