解析算法及程序实现教学设计
一、设计思想
根据《新课标》的要求,本课“解析算法”的学习目的是使学生进一步体验算法设计思想。为了让学生更易理解其算法的思想:用解析法找出数学表达式,用它来描述问题的原始数据与结果之间的关系。本堂课的设计思路:通过一元二次方程求解实例引入主题——认知主题——实践体验主题——扩展与提高这几个阶段层层深入的递进式方法使学生充分掌握解析算法。从而使学生形成解析算法的科学逻辑结构。 二、教材分析
本课的课程标准内容:
结合实例,经历分析问题、确定算法、编程求解等用计算机解决问题的基本过程,认识算法和程序设计在其中的地位和作用。掌握使用解析算法设计程序解决问题的方法 基本要求:1.初步掌握解析算法。2.初步掌握解析算法的程序实现。
教材中很多例子,但是考虑到课时,具体采用了“计算1900年开始的任意一天是星期几”的问题。 三、学情分析
学生对程序的3种基本模式已有一个了解的基础,对于简单的程序段也有一定的认知意识。并且已学习了枚举算法,这对本节课的教学产生积极的作用。但学生还是会觉得算法设计比较难掌握,困难之处在于,如何将题目的设计思想转化为流程图,根据流程图写出相应的代码并通过自己编制程序上机实践来体验。因此在课堂分析过程中,学生应当从听课认识——分析理解——实践探究这些过程中全面掌握解析算法的设计思想,并能用此算法来解决日常生活问题及与其他学科有所关联的一些简单问题。 四、教学目标
知识与技能:理解解析算法的概念和特点,通过分析了解解析算法的解题结构,初步掌握对解析算法的程序实现。
过程与方法:通过具体问题分析,归纳解析算法的基本思想和方法,确定解题步骤。让学生理解如何用3步法来解决实际问题 (提出问题——分析问题——解决问题);
情感态度与价值观:通过小组合作,增进学生间的学习交流,培养合作能力,激发学生学习能动性;感受解析算法的魅力,养成始终坚持、不断积累才能获得成功的意志品质。 五、重点与难点
重点:通过计算1900年开始的任意一天是星期几,让学生理解解析算法的思想,初步
培养学生如何运用3步法来解决实际问题; 难点:用解析法找出数学表达式 六、教学策略与手段
1.教学线索:通过一元二次方程求解提出问题---解析问题-----归纳解析算法特征--- ---具体实践解决问题。
2.学习线索:分解问题---归纳问题---实践提升,在三个阶段的不断推进中明确解析算法,总结规律 七、课前准备
1.上课环境:多媒体电脑房;
2.上课工具:幻灯片(解析算法.ppt课件);辅助教学软件; 八、教学过程
(一)、创设情景,引入问题 (引入主题) 幻灯片展示:求解一元二次方程?
教师:各位同学,对于一元二次方程方程的求解我们是非常熟悉的。下面我们大家
就自己来完成对它的求解。
学生:学生很快完成一元二次方程的解题,而且全部正确。 教师:我们这么快完成对它的求解,我们是如何来解题的呢?
学生1:对于一元二次方程的求解,我是通过b?4ac来对它进行分析的,如果(b?4ac)>0,有2个不同的实数解,(b?4ac)=0,有2个相同的实数解;(b?4ac)
2222?b?b2?4ac<0 ,无实数解。然后根据数学公式x=来完成求解。
2a教师:很好,我们解决一元二次方程的解就是找到了相应的数学公式(表达式),我们把这类问题的解决方法称为:解析算法。
教师:现在谁能告诉我解析算法的要点是什么吗?
学生2:解析算法的要点:运用恰当的数学公式(表达式),用它来描述问题的原始数据与结果之间的关系。 (认知主题) (二)、学习新课(体验主题)
幻灯片展示:计算1900年开始的任意一天是星期几? 教师:首先,我们一起来分析一下:(与学生互相讨论的过程)
在日常生活中,我们忘记了某天是星期几,一般会从一个已知星期几的某天开始算, 计
算出两个日期相差的天数,然后用相差的天数除以7取出余数,就可以推算出星期几了。 但是我们在计算天数时会发现由于可能会经历平年(365天)、闰年(366天),每年的不同月份天数也不相同,这样计算量是很大的,计算也十分困难。 学生:老师,那有没有更快捷、准确的方法呢??
教师:当然有呀,德国数学家克里斯蒂安·蔡勒(Christian Zeller, 1822~1899)在1886年推导出了一个解决此问题的著名的蔡勒公式,w=[c/4]-2*c+y+[y/4]+[13*(m+1)/5]+d-1
其中,c是年份的前2位,y是年份的后两位,m是月份,d是日数,[]表示取整。如果月份是1月或2月,那么要按上一年的13月或14月来算。 学生:哦,原来这也有公式可寻呀。(课堂气氛一下子就活跃起来了)
教师:我们已经通过提出的问题,分析了问题,也找到了解决问题的方法,下面请一位同学
上台来完成算法流程图填空?(要求:流程图填空,我事先在课件中画好流程图,红色的字体为挖掉的空。见下图)
w=[c/4]-2*c+y+[y/4]+[13*(m+1)/5]+d-1
学生:w=[c/4]-2*c+y+[y/4]+[13*(m+1)/5]+d-1 w←w mod 7
教师:很好,那现在如何把流程图转化成程序代码让计算机实现呢?下面,我们就一起来完善下列的程序代码: Private Sub Command1_Click()
Dim year As Integer, month, day, w, c, y, m, d, ok As Integer
结束 输出结果星期几 w←w mod 7 计算c,y,m,d 输入年月日 开始 year = Val(Text1.Text) month = Val(Text2.Text) day = Val(Text3.Text)
If month = 1 Or month = 2 Then year = year - 1 month = month + 12 End If
c =__________ '取年份的前两位 y = year Mod 100 '取年份的后两位 m = month d = day
w =________________ '蔡勒公式
w = (w + 700) Mod 7 + 1 '求除以7的余数,w加上700保证余数一定是整数 Text4.Text = WeekdayName(w) End Sub
函数WeekdayName( )可将值转换成星期形式: 值 返回值
学生活动:课上到这个时候,学生都想自己尝试让计算机来解决问题,教师可以按一下要求让学生实践巩固解析算法。
1、①新建工程,创建窗体。界面设计可参照下图,属性设置参照表10-1。
1 星期日 2 星期一 3 星期二 4 星期三 5 星期四 6 星期五 7 星期六
表10-1 窗体中主要控件属性设置
对 象 Form1 Label1 Label2 Label3 Label4 Label5 Textl Text2 Text3 Text4 Command1 Caption Caption Caption Caption Caption Caption Text Text Text Text Caption 属性名称 属性值 星期几计算 输入日期 年 月 日 输出结果: (空白) (空白) (空白) (空白) 开始计算 2、计算按钮的代码窗口中输入刚才已完善的程序代码 3、调试运行程序,测试数据参考如下:
测试数据 第一组 第二组 第三组 第四组 第五组
教师活动:教师走动,察看学生完成情况,及时帮助学生所碰到的问题。
活动目的:让学生通过此体验,加深流程图的理解,充分正确理解解析算法的思想。 学生:老师,我的第四组数据测试怎么出错了呀。
学生:老师,第四组数据2月份没有29天呀。这日期不正确呀。 教师:是呀,那我们如何增加代码来判断日期是否有效 [扩展与提高]
教师:判断日期是否有效我们可以采用VB的日期函数来实现。请同学们查阅相关资料来完成此功能。(提示:可采用Isdate或者Cdate函数)
1905年1月1日 1988年8月8日 2006年9月10日 2006年2月29日 运行结果 星期日 星期一 星期日