第一篇:《算法与程序设计》选修教案
第一课
初识算法与程序设计
一、教学目标
1、知识与技能(1)理解算法的概念,培养学生自我探索信息,高效获取信息的能力;
(2)能初步利用算法解决简单的问题,培养学生的理论联系实际能力和动手操作能力。
2、情感、态度、价值观 学生在学习过程中,通过亲身经历体验获得对此算法的感性认识,培养学生自我获取信息、分析评价信息、、表达呈现信息的能力,进一步提高其信息素养。
二、教学重点难点 重点:算法概念的理解 难点:如何科学合理的选择和设计算法。
三、教学策略与手段 以趣味性问题设置情境,激发学生探索解决问题的兴趣,与学生进行互动探讨,通过Flash演示材料,比较直观地把抽象的问题简单化,使学生的思考逐步深入,从而总结出算法的概念,学会如何设计和选择算法,培养学生自主探究学习的能力。
四、教学过程(1课时)
(一)我们来共同寻找下面一些生活中比较现实的问题的解决方法。【问题一】天下真的有“不要钱的午餐”吗? 某一餐馆门口海报上写着“不要钱的午餐”,规则如下:在三个月内,来宾必须凑够五个人,五人每次来就餐必须按照不同的顺序坐,直到把所有可能的顺序都坐一遍,以后来吃饭就可永远免费”。于是有人想,这太容易了,每人每次坐不同的位置,吃五次不就行了?于是他就叫上自己的朋友参加这项活动,可是,吃了十次之后,还没有吃上免费午餐,这是怎么回事呢? 学生们感觉非常有意思,很快以小组为单位进行热烈的讨论并得出了破解问题的步骤:①第一个座位5个人都有坐的机会②第二个座位只有4个人中的任一个有坐的机会(一个人不能同时坐两个座位)③第三个座位只有3个人中的任一个有坐的机会④第四个座位只有2个人中的任一个有坐的机会⑤第五个座位只有1个人有坐的机会⑥计算:5×4×3×2×1=120⑦得出结论:需要吃120次才有可能吃上免费午餐。
【问题二】有三个和尚和三个妖怪过河,只有一条能装下两个人的船,在河的任何一方或者船上,如果妖怪的人数大于和尚的人数,那么和尚就会有被吃掉的危险。你能不能找出一种安全的渡河方法呢?请 1
写一写你的渡河方案。学生:学生讨论回答。〖展示步骤〗 ①两个妖怪先过河,一个妖怪回来; ②再两个妖怪过河,一个妖怪回来; ③两个和尚过河,一个妖怪和一个和尚回来; ④两个和尚过河,一个妖怪回来; ⑤两个妖怪过河,一个妖怪回来; ⑥两个妖怪过河。【Flash动画展示】通过讨论和动画展示,我们可以知道,计算机解决问题和人解决问题一样需要有清晰的解题步骤。算法就是解决问题的程序或步骤。
(二)【课件展示】算法的概念:
1、广义的算法是指完成某项工作的方法和步骤,在我们日常生活中也经常使用算法,只是没意识到罢了。如:洗衣机的使用说明书是操作洗衣机的算法,菜谱是做菜的算法等等。
2、在数学中,现代意义的算法是指可以用计算机来解决的某一类问题的程序和步骤,这些程序或步骤必须是明确和有效的,而且能够在有限步之内完成。【小试身手】按照这样的理解,我们可以设计出很多由具体数学问题解决一类数学问题的算法.下面看一个例子:(要求学生自己考虑并写出具体的算法)鸡兔同笼问题。一个笼子里有鸡和兔,现在只知道里面一共有17个头,48只脚,鸡和兔各有多少只?试设计一个求解的算法。【设计意图】求解鸡兔的问题简单直观,却包含着深刻的算法思想。应用解二元一次方程组的方法来求解鸡兔同笼问题。第一步:设有小鸡x只,小兔y只,则有 第二步:将方程组中的第一个方程两边乘-2加到第二个方程中去,得到,得到y=7; 第三步:将y=7代入(1)得x=10。【变一变】在笼中有鸡、兔若干,已知有头a个,有脚b只,求各有多少只鸡和兔。【师生合作】老师带领学生共同书写规范的算法的具体步骤,最后引出算法使用的范围:能解决一类问题,并且能重复使用。
(三)【课件展示】算法的基本特征 ①有穷性 ②确定性 ③不唯一性 ④有效性(逻辑性)2
1、有穷性:一个算法应该包含有限个操作步骤,而不能是无限的。
2、确定性:算法的每个步骤都应该是明确无误的,不能含义模糊,使执行者无所适从。
3、有零个或者多个输入,有一个或者多个输出
4、有效性:算法中的每一步都应该能有效地执行,执行算法最后应该能得到确定的结果。【教学总结】
1、本节课通过一些生活中看似简单问题的解决方法和步骤,使学生比较轻松的接受了生活算法的概念,进一步理解了计算机算法的概念。
2、课堂教学的效益取决于学生对所学知识理解了多少,能否用所学知识来解决一些实际问题。本节课的设计突出讲与练的结合,培养学生的动手能力,并且引出学生对下一节课的内容的思考,比较顺利的完成了本节课的教学任务。
3、如何优化算法,找到算法的形式和用算法解决问题的效益的最佳结合点,还尚需探讨。3
第二课 用计算机解决问题
一、教学目标(1)让学生了解算法、穷举法、程序设计语言、编写程序和调试程序等概念。(2)让学生知道对现实问题的自然语言的描述,特别是类似程序设计语言的自然语言描述。(3)让学生理解分析问题、设计算法、编写程序、调试程序这一用计算机解决问题的基本步骤,认识其在算法与程序设计中的作用。
二、重点难点 重点用计算解决问题的过程中的分析问题、设计算法、和上机调试程序等步骤。用计算机解决问题的过程中的分析问题、设计算法也是本节的难点。
三、教学过程(2课时)
(一)引入 教师:“在科技发达的今天,我们到处都可以看到计算机的踪影,感受到计算机给学习、生活带来的方便。然而,在惊叹计算机的神奇和享受的欢乐的时候,你是否了解计算解决问题的基本过程?有没有思考过其中的奥妙呢?下面我们先看一个古典的问题:”
学生观看的电视剧《汉刘邦》片断,内容大致如下: “韩信是我国西汉初著名的军事家,刘邦得天下,军事上全依靠他。韩信点兵,多多益善,不仅如此,还能经常以少胜多,以弱胜强。在与楚军决战时韩信指挥诸侯联军,在垓下十面埋伏,击败楚军,楚霸王项羽因此自杀。” 片断结束时屏幕出现“韩信点兵”问题:“相传汉高祖刘邦问大将军韩信统御兵士多少,韩信答说,每3人一列余1人、5人一列余2人、7人一列余4人、13人一列余6人„„。刘邦茫然而不知其数。你呢?”
(二)问题 教师:“下面我们先助刘邦解决一个简单的问题。” “韩信点兵”问题1:求整除3余
1、整除5余
2、整除7余4的最小自然数。
(三)探究 把全班分成16个学习小组,每个小组的同学一起探究、讨论问题。利用已学过的数学知识找出题目已知什么求什么、明确已知和未知之间的关系和写出求解问题的解题步骤。并填写《计算机解决问题的过程》教学活动表中的“探究问题记录表”。如下:
探究问题记录表
分析问题(找出已知和未知、列出写出解题步骤 结果 已知和未知之间的关系)学生讨论,教师在这过程中到各学习小组中,引导个别学习小组分析问题、写出解题步骤。教师提问2~3个同学,从中逐渐引导出类似如下的分析问题和解题步骤,并给出算法的概念。
分析问题(找出已知和未知、列出写出解题步骤 已知和未知之间的关系)
1、令X为1。
2、如果X整除3余1,X整除5余2,设所求的数为X,则X应满足: X整除7余4,这就是题目要求的数,X整除3余1 则记下这个X。X整除5余2
3、令X为X+1(为算下一个作准备)。X整除7余4
4、如果算出,则结束;否则跳转2。
5、写出答案。教师解释第3步“另X为X+1”并指出它与数学中的区别,并从上面的解题步骤中总结出穷举的算法。教师:“刚才有些同学把题目解出来了,答案是67,韩信作为大将军,统率士兵当然不止67人,下面我们来解决一个数据量稍大的问题。” 展示题目: “韩信点兵”问题2:求整除3余
1、整除5余
2、整除7余
4、整除13余
6、整除17余8的最小自然数。学生分析上述问题并写出算法,不用计算。学生有了第1题的经验,很快会写出和第一题类似的算法。如下:
分析问题(找出已知和未知、列出写出解题步骤 已知和未知之间的关系)设所求的数为X,则X应满足:
1、令X为1。X整除3余1
2、如果X整除3余1,X整除5余2
X整除5余2,X整除7余4 X整除7余4,5
X整除13余6 X整除13余6,X整除17余8 X整除17余8,则记下这个X。
3、令X为X+1。
4、如果算出,则结束;否则跳转2。
5、写出答案。教师:“上面的结果超过1万,人工计算要很长时间,在科技发达的今天,你想到什么?”(用计算机解题)
(四)用计算机解决问题 教师:“计算机怎么样解决问题?用计算机解决问题,同样要经过分析问题、设计算法两步骤。”在讲授过程中展示人工解题中分析问题和设计算法这两个步骤。用计算机解题,是不是输入上面的算法?上面用自然语言描述的算法,计算机不懂,必须翻译成计算机的语言,这就是程序设计语言。” 本例用Visual Basic语言编写的程序请看如下: Private Sub Command1_Click()Dim X As Integer, Y As Integer X = 1: Y = 0 Do If X Mod 3 = 1 Then If X Mod 5 = 2 Then If X Mod 7 = 4 Then If X Mod 13 = 6 Then If X Mod 17 = 8 Then Y = X End If End If End If End If X = X + 1 Loop Until Y > 0 Print “韩信统御士兵数:”;Y End Sub 教师:“程序编好以后,通过键盘输入计算机,并运行程序查看结果这个过程叫调试程序。” 6
(五)观摩 根据前面编制的程序,启动Visual Basic程序设计环境,输入程序代码,进行调试,最后得到运行的结果。要求同组内先完成的同学帮助还未完成的同学。帮助的时候不能代劳,只能动口不动手。
(六)交流 教师:“前面我们学习了用计算机解决问题的过程,它和人工解有什么关系呢?同一学习小组的同学一起探讨人工求解问题和用计算机求解问题的异同,并把讨论结果记录在《计算机解决问题的过程》教学活动表的“讨论记录”表中。如下: 关于求解问题的方式讨论记录
求解问题的方式 相同点 不同点 人工求解问题 用计算机求解问题 教师提问2~3个小组的讨论结果,并引导出大致如下的形式结果: 求解问题的方式 相同点 不同点 对题目进行解答、运算速度人工求解问题 慢、不需要计算机等 分析问题、设计算法、得出结果、验算结果等 编写程序、调试程序、运算用计算机求解问题 速度快等 7
第三课 算法与算法的描述
一、教学目标
1、知识与技能(1)了解算法的定义及其表达方法;(2)认知流程图的六种基本符号;(3)理解计算机解决问题的一般过程。
2、方法与过程(1)理解用不同的表达方法描述算法的优缺点;(2)掌握用流程图描述简单的算法。
3、情感态度和价值观 以生活中的实例引入算法,激发学生的学习兴趣,培养学生的主动探究能力。
二、重点难点
(一)教学重点
1、算法的定义;
2、算法的三种表达方法;
3、流程图的六种基本符号;
4、用流程图描述简单的算法。
(二)教学难点
5、算法的描述(三种);
6、用流程图描述算法。
三、教学过程(2课时)教学内容 预期目标 新课内容:
一、对算法的初步了解 1.一个简单的物理问题:求物体在恒力作用下的加速度。根据在物理课中学过的知识,要解决这个问题有多种方法: 方法一: a)测量出物体的质量m、拉力F和滑动摩擦力f b)将测量所得的数据输入计算机 c)根据牛顿第二定律F-f=m*a,计算出加速度a
d)输出所得的结果 方法二: a)测量出物体从静止开始移动的距离s、时间t b)将测量所得的数据输入计算机 引入物理学中的例子,激发 c)利用公式:s=a*t*t/2计算出加速度a 学生的学习兴趣,有助于学 d)输出所得的结果 生理解算法的概念 2.算法的定义 这种为解决某一问题而设计的确定的有限的步骤称为算法。
二、算法的描述 要把解决问题的步骤表达出来,有多种方法可以表达算法。引导出算法的概念
1.用自然语言表达 用自然语言表达算法,就是把算法的各个步骤,依次用人们熟悉介绍三种算法的表达方式,的自然语言表示出来。并对它们进行比较,分析优优点:容易理解 缺点。缺点:书写较烦、不确定性、对复杂的问题难以表达准确、不能被计算机识别和执行
给出流程图的基本符号,2.用图形符号表达 对其功能和使用情况加以用图形符号表达算法必须要有一组规定统一、含义确定的专用符说明,以便今后在具体运用号。中的正确使用。常用的“流程图”所用的基本符号 图形符号 符号名称 说明 流线 起始、终表示算法的开起始框:一流出线 止框 始或结束 终止框:一流入线 输入、输框中标明输只有一流入线和一出框 入、输出的内流出线
容 处理框 框中标明进行只有一流入线和一
什么处理 流出线 判定框 框中标明判定一流入线两流出线 条件并在框外(T和F
标明判定后的)但同时只能一流
两种结果的流出线起作用
向 流线 表示从某一框 给出流程图的作法,通过详到另一框的流细的解释说明使学生初步向 掌握流程图的使用和基本 连接圈 表示算法流向一条流线 画法。出口或入口连 接点 优点:直观、形象 缺点:不能被计算机识别和执行 例6-1-1:“物体在恒力作用下的加速度”的算法用下图表达。
开始
M=m F1=F F2=f a=(F1-F2)/M 输出a
结束 3.用程序实现算法 用计算机能理解和执行的程序设计语言把算法表示出来,然后把了解计算机解决问题的一程序输入到计算机并执行,计算机才能按照预定的算法去解决问般过程,为今后用编程解决 10
题。实际问题打下基础。不同类型的计算机能够识别的指令和语言不尽相同,即使对同一 种计算机语言,不同类型的计算机对该语言的解释程序也有差异。因此,用程序表示算法时,必须按照程序设计语言适用某类计算 机的具体规定来进行。例:用Pascal语言表示“从键盘输入一组数据并求该组数据的平均值”的程序如下:
Program ex_aver
Var I:integer;x,av:real;
Begin
Av:=0;I:=0;
Do while not eof()Begin
Readln(x);av:=av+x;
I:=I+1;
End
av:=av/I;Writenln(“The average value is :”,av);End
三、用计算机解决问题的一般过程 使用计算机解决一个问题,一般包括四个过程 1.需求分析 “需求分析”是指对要解决的问题进行详细的分析,弄清楚问题的要求,包括需要输入什么数据,要得到什么结果,最后应输出什么。“需求分析”就是确定要计算机“做什么”。2.设计算法 弄清楚要计算机“做什么”后,就要设计计算法,明确要计算机“怎么做” 11
解决一个问题,可能有多种算法。例如,数学题常常有“一题多解”。这就是说,解决一个问题的算法可能不止一种。这是,应该通过分析、比较、挑选一种最优的算法。3.编写程序 计算机只能接受并执行计算机程序设计语言编写的程序。当我们为解决一个问题确定了算法后,还必须将该算法用计算机程序设计语言编写程序。这个过程成为“编码”或“编程”。4.上机调试与维护 编写完成的程序,不一定完全符合实际问题的要求,还必须在计算机上运行这个程序,排除程序中可能出现的错误,才能得到结果。这个过程称为“上机调试”。即使是经过调试的程序,在使用一段时间后,仍然会被发现错误或不足之处。这就需要对程序做进一步的修改,使之更加完善。这个过程称为“维护”。在实际解决问题时,上述四个步骤可能会根据不同的问题有所侧重。
第四课
程序与程序设计语言
一、教学目标
1、知识与技能 使学生知道什么是源代码,并理解算法、程序设计、程序设计语言之间的关系,了解程序设计语言的发展及种类。
2、过程与方法 使学生初步体验编程乐趣,了解如何编辑程序、编译程序和连接程序。
3、情感态度与价值观 让学生进一步领会算法和程序设计在解决问题中的地位,体会编写出程序的魅力,从而培养学生学习编程的兴趣。
二、重点难点(1)重点:了解代码所包含的算法思想;(2)难点:计算机是如何编辑程序、编译程序和连接程序的。
三、教学过程(2课时)正课讲解
(一)尝试用VB编写程序
1、么是VB? ——VB是一种基本BASIC语言的可视化程序开发工具。
2、编写程序 ⑴从桌面上启动VB,弹出“新建工程”对话框,从“新建”页面中选“标准EXE”,然后“打开“按钮,建立”标准EXE工程。
注:为了避免打开时总是出现“新建工程”对话框,在首次启动时,勾选“不再显示这个对话框”。
⑵单击工具箱“CommandButton”的按钮,在Form1窗体中拖出一个“Command1”按钮。Command1是命令按钮,它有6个属性、2个事件和4个方法。属性
Caption Default 标题
决定窗体的默认命令按钮
Style Enabled 控件的外观
决定对象是否响应用户生成事件
Visible Picture 决定对象是否可见
显示的图形 13
事件 方法 Click Drag Refresh 单击 拖动 刷新 Move KeyPress SetFocus 移动 字符键被单设置焦点,将当前焦击 点强制设置到文本框对象上
⑶选中此按钮,从属性窗口中将Caption改为“韩信点兵”。⑷给按钮添加代码,在Private Sub Command1_Click()和 End Sub之间添加代码:
Dim N As Integer ‘声明N为整型 N=1 ‘赋初始值 Do(N mod 3=2)and(N mod 5=3)and(N mod 7=2)Then ‘满足条件打印N,不满足继续循环 Print N Exit do End if N=N+1 Loop ⑸从“运行”菜单中“单击”启动命令,运行程序。运行后,单击“韩信点兵”按钮。注:运行时,不能修改程序代码。实践题:从“调试”菜单中点击“逐语句”命令(F8),然后按F8键试着单步运行程序,观察代码是如何运行的,程序执行注释部分吗?在程序运行的过程中,用鼠标指向变量N,看看它的值有什么变化,为什么会这样变?
(二)算法、程序设计与程序设计语言之间的关系 ⑴算法 提出问题:什么是算法?算法有哪些特征? ⑵程序设计——寻求解决问题的方法,并将其实现步骤写成计算机可执行的程序的过程。
⑶程序设计语言——泛指一切用于书写计算机程序的语言。
算法是程序设计的前提,它包含方法和步骤; 程序是实现算法中的思想的过程; 程序设计语言把算法转化为计算机认识的语言。14
(三)认识程序设计语言
1、发展过程 机器语言:由一串“0”和“1”构成二进制代码。汇编语言:是一种符号化(英文助记符)的机器语言。高级语言:如Basic、C/C++、Fortran、Pascal、Cobol、Java等。
2、分类(按转换方式不同分类)
编译型语言
解释型语言
编写的源程序需要用编译程序先翻译成机器语言的源程序输入计算机后,运行源程序,相应的解释程序目标程序,然后再由连接装配程序进行连接装配,生会逐条分析源程序中的语句,每解释一句由计算机执成可执行程序,这样才能被计算机执行。行一句。C/C++、VB、Pascal、Cobol Qbasic、Lisp
3、编辑程序、编译程序和连接程序 ⑴编辑程序 包含内容:一是将源程序逐个字符输入到计算机内存,二是修改源程序,三将修改好的源程序保存在磁盘文件中。⑵编译程序:将已编辑好的源程序(已存储在磁盘文件中)翻译成二进制的目标代码。二进制代码在UNIX下后缀为“.o”的文件,在DOS下是后缀为“.obj”文件。⑶连接:将各模块的二进制目标代码与系统标准模块经连接处理后,得到具有有绝对地址的可执行文件,它是计算机直接执行的文件。在UNIX下它以“.out”为后缀,在MS-DOS以下“.exe”为后缀。
执行过程: 15
第五课 vb语言及程序开发环境
一、教学目标
1、知识与技能 掌握VB定义的常用的基本数据类型,常量与变量的定义方法,运算符、函数和表达式的描述。熟悉VB程序设计语言的开发环境,能调试简单的VB程序。
2、方法与过程
本节涉及到基础知识较多,所以要一个一个问题解决,从一个简单的求圆的面积的程序入手,从中分析VB程序一般包括的四部分,基本数据类型、常量与变量,运算符、函数和表达式,而且结合练习来加强对这些新知识的巩固。通过介绍VB程序的开发环境中的菜单、常用工具和常用窗口等,再通过上机操作运行一个程序,让学生更容易上手。
3、情感态度和价值观 这一节是学习VB程序的重要的入门课,授课时要注意结合学生的思路,逐个问题解决,不可一蹴而就。
二、重点难点
1、教学重点(1)VB常用的的基本数据类型,常量与变量,运算符和表达式(2)VB程序的开发环境
2、教学难点 把本节的内容加以运用
三、教学过程(3课时)导入: 以下是一个“求半径为r的圆的面积”的程序,请你注意观察程序的组成结构及其功能,并思考如下的问题:(1)程序有多少行,每一行的作用是什么?(2)如果按语句的作用区分,这个程序包含几个部分?
Private sub command1_click()
‘定义名为command1_click()的事件过程 Const pi as single=3.14 ‘说明程序中pi是常量∏ Dim r as single,s as single
‘定义半径r和面积s为单精度实型 r=inputbox(“r=”,”请输入半径”)
‘输入r的值
s=pi*r*r ‘把表达式pi*r*r的值赋给s print “圆的面积s=”;s ‘把s的值输出到当前的窗体上 16
End sub ‘过程结束 考察上述程序,我们容易看到:程序共有代码7行,每一行都是VB的一个语句,VB的程序就是由这样的一组语句组成。每一个语句都是按照一定的规则书写的。总结上述分析,我们可以得到VB程序的一般包括如下部分:(1)数据类型说明部分(2)数据的输入部分(3)数据的处理部分(4)数据的输出部分
一、基本数据类型 描述客观事物的数、字符以及所有能输入到计算机中,并被计算机程序加工处理的集合称为数据。数据既是计算机程序处理的对象,也是运算产生的结果。为了更好地处理各种数据,VB定义了多种数据的类型。基本数据类型是系统预先定义的数据类型,表2-1中列出了VB定义的常用的基本数据类型。例如在上述的程序中,既有单精度实型数的数据(如3.14等),也有字符类型的数据,如“输入半 17
径”、“圆的面积S=”。
二、常量与变量(1)常量 常量是指在程序运行过程中始终保持不变的常量、字符串等。例如在上述的程序中,3.14、“r=”、“输入半径”等都是常量。在程序设计中,以于一些经常使用的常量,可以用常量说明语句来定义。这样可以提高程序的可读性和可维护性。常量说明语句的格式是: Const 常量名 As 类型 = 表达式 在上述程序中,第2行就是一个常量说明语句,说明程序中需要使用的常量。(2)变量 在程序处理数据时,对于输入的数据、参加运算的数据、运行结果等临时数据,通常把它们暂时存储在计算机的内存中。变量就是命名的内存单元位置。在VB中,变量名必须是由英文字母开头,后面则可以由字母、数字或其它符号组成;变量的名称最好与它所表示的内容意义相同的英文单词来确定。(3)变量说明 使用变量前,一般应先说明变量名及其类型,以使系统为其分配存储单元,变量说明语句格式如下:
Dim 变量
As
类型 如Dim r as single,定义半径r为单精度实型
三、运算符、函数和表达式
(1)运算符 运算符是对数据进行加工的过程。描述各种不同运算的符号称为运算符,参与运算的数据称为操作数。在VB中,常用的运算符有算术运算符、字符串运算符和逻辑运算符等。①算术运算符有: +14 Age = Age + 1 Tree = Tree + Age Print “到”;Age;Loop Until Tree >= 100
“岁时种到”;Tree;“棵树!” End Sub 2.通过师生共同分析“陈婷植树”问题的程序,3.学生对老师所提问题展开分析问题、35
归纳总结VB语言的DO循环语句的格式、功能、设计算法、编写程序、调试程序等用计执行过程,以及书写的注意事项,归纳总结VB算机解决问题的探究活动。语言的DO循环特点。3.老师提出思考题:已知s=1×3×5×…×N,找4.学生在教师的指导下,阅读、分析、出一个最大整数N,使得S<50000。要求学生展归纳,完成实践任务。开分析问题、设计算法、编写程序、调试程序等
5、要求学生上机练习共同探讨P58的用计算机解决问题的探究活动。交流,得出使用DO循环的技巧和心得。
4、上机练习:P54实践(1)、(2)
5、对几种DO循环的比较分析:归纳总结出各自不同的特点的把握要素,使同学们能运用自如。设立一些由人力解决较困难的问题,要求学生运要求学生能设计出算法及编写出程序。拓展 用所学编程知识去解决,比如:判断一个大数是否为素数等问题。小结 VB语言的DO循环语句、格式、功能和执行过程,以及几种不同DO 循环的比较。教师在布置课本的练习:P59(5),指导学生根据本节所学的知识,分析问题,设计算法,练习编程求解问题。36
第九课 模块化程序设计
一、教学目标(1)理解自顶而下、逐步求精的程序设计方法;(2)掌握VB语言的过程与函数的定义和调用方法。(3)理解模块化程序设计的基本思想。
二、重点难点 教学重点: 让学生学会使用VB语言的过程与函数的定义和调用方法。教学难点: 理解模块化程序设计的基本思想,并运用于程序设计中。
三、教学过程(2课时)教学环教师活动 学生活动 节 从歌德巴赫猜想的故事入手,验证歌德巴赫 学生边阅读边倾听。猜想,激发学生学习的兴趣和热情,通过先看P61情意 的程序2-9A观查此程序有没有功能重复的地方,导入 如何才能省略书写……并且反复调用同一功能的程序代码呢?拉开本节教学的序幕。1.通过组织学生探究“验证歌德巴赫猜想”问1.学生对“验证歌德巴赫猜想”题,引导学生经历分析问题、设计算法、编写程问题展开分析问题、设计算法、序、调试程序等用计算机解决问题的过程;归纳编写程序、调试程序等用计算机总结自顶而下、逐步求精的程序设计方法; 解决问题的探究活动。2.通过师生共同分析“验证歌德巴赫猜想”的2.学生在教师的指导下,阅读、新课 另一个程序,归纳总结VB语言的过程与函数的分析、归纳,完成实践任务。讲解 定义和调用方法。3.学生对“求五边形的面积”3.通过师生共同分析“求五边形的面积”程序,问题展开分析问题、设计算法、归纳总结模块化程序设计的基本思想。编写程序、调试程序等用计算机 解决问题的探究活动。
4、要求学生求三个数的平均数。(用自定义函4.学生在教师的指导下,阅读、数及自定义子过程)分析、归纳,完成实践任务。37
1、求园的面积,已知半径为1、3、5、7、9、11。(调用函数方法)拓展
2、调用子程序,使第一行打印20个*,第二行打印10个*,第三行打印20个*。引导学生利用函数及子程序解决较复杂问题,体会利用函数及子程序的好处。1.自顶而下、逐步求精的程序设计方法; 小结 2.VB语言的过程与函数的定义和调用方法; 3.模块化程序设计的基本思想。
指导学生根据本节所学的知识,完成求任意四边形的面积问题,要求他们能分练习析问题,设计算法,编程求解问题。38
第十课 递归算法的实现
一、教学目标
1、知识与技能: 理解什么是递归算法,学生会用递归算法的思想分析问题 能够应用自定义函数方法实现递归算法的编程
2、过程与方法: 学生参与讨论,通过思考、动手操作,体验递归算法的方法
3、情感态度与价值: 结合数学中的实例,激发学生的数学建模的意识,培养学生多维度的思考问题和解决问题。『教学目标设计的合理、准确。这也是在意料之中的,一般情况下,成功的教学任务分析一定会带来成功的教学目标设计。』
二、重点难点 重点:理解什么是递归算法,学生用递归算法的思想分析问题; 应用自定义函数方法实现递归算法的编程 难点:应用自定义函数方法实现递归算法的编程 『大部分教师在确立教学重、难点时不会给出确立的依据,可能这些依据早就在教师的脑中明确了,也有可能是一笔糊涂账,只不过是教参上是这样写的就照搬过来而已。如果在写教学重、难点的同时能再给出确立重、难点的依据会令教案更具借鉴意义。本案例的作者虽然没有写依据,但由于前面成功的教学任务分析,也就自然确立了教学重、难点。这也是很好的。』
三、教学过程(2课时)进程 教师活动 学生活设计意图 动
使用情境教学创设课堂导入:
法 情境 今天很高兴,特此我给大家准备了一份礼品(精美包 在此活动过程装猴与兔艺术品),你们想知道里面有什么礼物吗?
中能让学生初学生:想„„ 师生共步从活动中体
师:好!我们班有一位同学知道里面有什么礼物!(在同活动验“问题的发上课之前事先告诉其中的一个同学)但是他不能就这样告“找答与收”从而走诉大家,有一个规则可以让我们知道里面装的是什么„„ 案” 进了递归的思规则是: 维模式,为进1.从第一排的第一个同学开始。一步学习递归2.每位同学只问他相邻的同学,每位同学最多只能被 算法埋下伏笔 问一次,而且一个同学不能再问第二人,当任何一个同学 知道了答案,要求立即告诉曾经问过他的那个同学(不能 告诉其他同学)以此类推。
3.一直到得出答案为结束。以游戏规则开展,我想让第一位同学告诉大家,精装的礼物是什么? 39
启发师:前面我们学习了自定义函数,知道函数是为了实讨论活分析问题 主体 现某种功能而编写的一段相对独立的程序,并且可以多次动过确定方案,培养的调用。程,总学生思维程序 结游戏化,为下面新 规则,学习递归算法算法描述: 了解活做好移植准备 function what(student)动规如果我知道答案,那么我就告诉你 律,并否则,我要问下一位同学再告诉你 将活动end function 过程进 行算法描述 学习展示题: 讨论、实例教学,选新知 比较、择“小猴吃桃”小猴吃桃: 有一天小猴子摘若干个桃子,当即吃了一半还觉得不
分析、这一题的目的过瘾,又多吃了一个。第二天接着吃剩下桃子中的一半,归纳 是为了简化教
仍觉得不过瘾又多吃了一个,以后小猴子都是吃尚存桃子材“裴波那契” 一半多一个。到第10天早上小猴子再去吃桃子的时候,数列的多函数
看到只剩下一个桃子。问小猴子第一天共摘下了多少个桃调用,回避问 子? 题分析的复杂 1.鼓励学生进行讨论,共同寻找答案或解决方法 性较大的特
2.师生共同分析题: 点,从而使得 以4位同学排成了行,(设从行的后面开始的第一位同重点难点得以 学知道第10的桃子数(1个),倒数第二位同学知道第9轻松的突破。
天的桃子数是„„)从教师提问排在前面第一位(第7天)的同学,你知道,你今天的桃子数有多少? 目的是讨论出,只有倒数第一位同学知道,其他有同 学都不知道,但是他只要知道他后一位同学的桃子数就可 以求出本人所具有的桃子数,(后同学的桃子数+1)*2就 是本人的桃子数。建立数学模型:
假设第n,n<10天的桃子数为tao(n)那么 推导数 tao=10 n=1 学建模 tao(n)=(tao(n+1)+1)*2 n<10 我们能不能这样设一个函数: 学生进培养学生养成算法描述: 行算法良好的编程习
function你有多少桃子?(第几天)描述 惯 如果我第10天,那么我就有一个桃子。否则,我的桃子数=(前一天的桃子数+1)*2 end function 40
示图协助学生
分析算算法实现过程法的实的始末思维,现过程 学生编程实现:
Function tao(ByVal days As Integer)As Integer
If days = 10 Then 培养学生的编 tao = 1 学生编程和调试程序 Else 程实现 能力,让学生 tao =(tao(days + 1)+ 1)* 2 获得成功的体 End If 检 End Function 41
自主我们再来看第二题:(学生阅读教材P68,让学生阅尊重学生的个构建 读教材的“裴波那契”,培养学生的自学能力、和知识迁阅读 体发展,让学移建构自我的知识体系)思考、生进行自主探裴波那契(Fibonacci leonardo,约1170-1250)是意大分析、究学习,使用利著名数学家.在他的著作《算盘书》中许多有趣的问题,讨论,学主动、积极 最富成功的问题是著名的“兔子繁殖问题”: 如果每对兔的学习新知 子每月繁殖一对子兔,而子兔在出生后第二个月就有生殖识,培养他们 能力,试问第一月有一对小兔子第十二月时有多少对兔的自学能力。子? 1、1、2、3、5、8、13、21„„ 培养学生分析
假设第n个月的兔子数目为f(n),那么 问题、解决问 f(n)=F(n-1)+f(n-2)当n≥3,题能力,煅练 f(1)=f(2)=1 学生“数学建 讨论得出算法描述 模”建构主义 Function有多少对兔子(第几月)的学习观认 如果是第一月或第二月,那么就有一对兔子。为:学习不是 否则,(本月)兔子数=(本月-1)月的兔子数+(本月被动接收信-2)月的兔子数 息,而是主动
end Function 地建构意义,以自己原有的 Function tu(ByVal month As Integer)As Integer 知识经验为基 If month = 1 Or month = 2 Then 编程实础对外部信息 tu = 1 现。进行主动地选 Else 择、加工和处 tu = tu(month2)理,人而获得 End If 自己的意义过End Function 程。深化阅读教材的循环结构实现,比较讨论两种算法的区别学生讨培养学生分析知识 和特点 论 问题、归纳、梳理知识的能力,通过两种算法的对比,让学生深入体会递归算法的魅力。加深对本节课所学知识的理解。42
课堂我们今天所学习的算法是“递归算法”,我们谈谈什么 小结 是递归算法,递归算法有什么特点。师生讨论,共同小结: 1.递归算法是数值层层调用实现的,函数先由上向下调用,当达到最底层后,再将函数值层层向上返回。(递达成共下去,收回来,简称:递归)识 2.必须有个结束条件(有个该收回来的条件)3.可读性强 4.计算机资源耗费大,所以效率比较底(常驻内存的数据比较多)布置1.N!(用递归算法编程实现)巩固和发展本作业 2.求1+2+3+4+5„„N(用递归算法编程实现)节课的学习内3.用递推算法实现“猴子吃桃”问题求解 容。43
第二篇:算法与程序设计教案
第一课 初识算法与程序设计
一、教学目标
1、知识与技能
(1)理解算法的概念,培养学生自我探索信息,高效获取信息的能力;
(2)能初步利用算法解决简单的问题,培养学生的理论联系实际能力和动手操作能力。
2、情感、态度、价值观
学生在学习过程中,通过亲身经历体验获得对此算法的感性认识,培养学生自我获取信息、分析评价信息、、表达呈现信息的能力,进一步提高其信息素养。
二、教学重点难点
重点:算法概念的理解
难点:如何科学合理的选择和设计算法。
三、教学策略与手段
以趣味性问题设置情境,激发学生探索解决问题的兴趣,与学生进行互动探讨,通过Flash演示材料,比较直观地把抽象的问题简单化,使学生的思考逐步深入,从而总结出算法的概念,学会如何设计和选择算法,培养学生自主探究学习的能力。
四、教学过程(1课时)
(一)我们来共同寻找下面一些生活中比较现实的问题的解决方法。【问题一】天下真的有“不要钱的午餐”吗?
某一餐馆门口海报上写着“不要钱的午餐”,规则如下:在三个月内,来宾必须凑够五个人,五人每次来就餐必须按照不同的顺序坐,直到把所有可能的顺序都坐一遍,以后来吃饭就可永远免费”。于是有人想,这太容易了,每人每次坐不同的位置,吃五次不就行了?于是他就叫上自己的朋友参加这项活动,可是,吃了十次之后,还没有吃上免费午餐,这是怎么回事呢?
学生们感觉非常有意思,很快以小组为单位进行热烈的讨论并得出了破解问题的步骤:①第一个座位5个人都有坐的机会②第二个座位只有4个人中的任一个有坐的机会(一个人不能同时坐两个座位)③第三个座位只有3个人中的任一个有坐的机会④第四个座位只有2个人中的任一个有坐的机会⑤第五个座位只有1个人有坐的机会⑥计算:5×4×3×2×1=120⑦得出结论:需要吃120次才有可能吃上免费午餐。
【问题二】有三个和尚和三个妖怪过河,只有一条能装下两个人的船,在河的任何一方或者船上,如果妖怪的人数大于和尚的人数,那么和尚就会有被吃掉的危险。你能不能找出一种安全的渡河方法呢?请写一写你的渡河方案。学生:学生讨论回答。〖展示步骤〗
①两个妖怪先过河,一个妖怪回来; ②再两个妖怪过河,一个妖怪回来; ③两个和尚过河,一个妖怪和一个和尚回来; ④两个和尚过河,一个妖怪回来; ⑤两个妖怪过河,一个妖怪回来; ⑥两个妖怪过河。
【Flash动画展示】通过讨论和动画展示,我们可以知道,计算机解决问题和人解决问题一样需要有清晰的解题步骤。算法就是解决问题的程序或步骤。
(二)【课件展示】算法的概念:
1、广义的算法是指完成某项工作的方法和步骤,在我们日常生活中也经常使用算法,只是没意识到罢了。如:洗衣机的使用说明书是操作洗衣机的算法,菜谱是做菜的算法等等。
2、在数学中,现代意义的算法是指可以用计算机来解决的某一类问题的程序和步骤,这些程序或步骤必须是明确和有效的,而且能够在有限步之内完成。
【小试身手】按照这样的理解,我们可以设计出很多由具体数学问题解决一类数学问题的算
法.下面看一个例子:(要求学生自己考虑并写出具体的算法)
鸡兔同笼问题。一个笼子里有鸡和兔,现在只知道里面一共有17个头,48只脚,鸡和兔各有多少只?试设计一个求解的算法。
【设计意图】求解鸡兔的问题简单直观,却包含着深刻的算法思想。应用解二元一次方程组的方法来求解鸡兔同笼问题。
第一步:设有小鸡x只,小兔y只,则有
第二步:将方程组中的第一个方程两边乘-2加到第二个方程中去,得到,得到y=7; 第三步:将y=7代入(1)得x=10。
【变一变】在笼中有鸡、兔若干,已知有头a个,有脚b只,求各有多少只鸡和兔。
【师生合作】老师带领学生共同书写规范的算法的具体步骤,最后引出算法使用的范围:能解决一类问题,并且能重复使用。
(三)【课件展示】算法的基本特征
①有穷性 ②确定性 ③不唯一性 ④有效性(逻辑性)
1、有穷性:一个算法应该包含有限个操作步骤,而不能是无限的。
2、确定性:算法的每个步骤都应该是明确无误的,不能含义模糊,使执行者无所适从。
3、有零个或者多个输入,有一个或者多个输出
4、有效性:算法中的每一步都应该能有效地执行,执行算法最后应该能得到确定的结果。
【教学总结】
1、本节课通过一些生活中看似简单问题的解决方法和步骤,使学生比较轻松的接受了生活算法的概念,进一步理解了计算机算法的概念。
2、课堂教学的效益取决于学生对所学知识理解了多少,能否用所学知识来解决一些实际问题。本节课的设计突出讲与练的结合,培养学生的动手能力,并且引出学生对下一节课的内容的思考,比较顺利的完成了本节课的教学任务。
3、如何优化算法,找到算法的形式和用算法解决问题的效益的最佳结合点,还尚需探讨。
第三篇:算法与程序设计
《算法与程序设计》教学中实施研究性学习探步
作者:赵濮民
摘要:研究性学习是教育科研领域中一个崭新的课题。信息技术教学作为以培养创新精神、研究能力和实践能力为目标取向的必修课程,它强调让学生通过研究性学习,提出问题,收集材料,对研究性课题进行探索、分析、研究,最后基于问题解决模式,在实践操作中培养学生科学的态度和价值观以及创新精神、创新思维、创造能力,并学会解决生活中与信息技术学习有关的实际问题。职业学校的学生,不仅应具有独立接受知识的能力,更应具有独立探索知识的能力,由“研究性学习”补充原有的“接受式学习”,使学习方式更趋完善,只有当这两种学习方式结合起来,优势互补,才能使基础教育适应时代对人才培养的要求。
关键词:程序设计;研究性学习;求真;求全;求变;求新;优势互补
《算法与程序设计》是职业学校信息技术教学中的一个重点,也是难点。传统的程序设计教学以老师讲授型为主,由于算法与程序设计的内容逻辑性强,普遍认为在程序设计教学中难以实施研究性学习。
研究性学习是以“培养学生具有永不满足、追求卓越的态度,培养学生发现问题、提出问题、从而解决问题的能力”为基本目标,以学生从学习中获得作品设计与制作方法的困惑为方向,以在提出问题和解决问题的全过程中学习到算法与程序设计为学习方法的课程。经过反复研究,我们认为研究性学习可以应用于程序设计教学中。实施研究性学习的关键是要确定一个目标,要鼓励学生主动地发现问题,并且通过探究或实践活动去试图解决问题。在课题研究的过程中采用分组交流讨论、查阅资料、协作探究、归纳总结等方式,一步步引领学生深刻掌握算法与程序设计的精髓。
一、通过研究性学习,重构算法知识体系,要求真 研究性学习是学生在老师的指导下,结合真实生活,选定主题,然后搜集相关材料,对材料进行归纳、加工处理、分析、总结,得到相应结论的学习活动。在《算法与程序设计》教学中,根据教学内容,经过反复研究,确定了研究主题《搜索算法的应用研究》和《动态规划算法的解题应用研究》,并根据学生的自愿报名成立了两个研究小组。然后各小组根据自己研究的算法,重新整理相应的知识,对知识进行认知、归纳、总结。如《搜索算法的应用研究》小组,对搜索算法从以下几方面进行整理:
1、搜索算法的算法思想、分类;
2、深度优先搜索的算法思想与算法结构;
3、广度优先搜索的算法思想与算法结构;
4、深度优先搜索的优先策略;
5、广度优先搜索的优化策略;
6、深度优先搜索与广度优先搜索的异同。学生通过对搜索算法知识进行整理、分类、小结,加深了对搜索算法的理性理解与感性认知。
二、通过研究性学习,同学之间取长补短,要求全
每个学生都有所长,也有所短,研究性学习一个重要的特点就是:分工合作,共同讨论,共同提高,使参与的学生全面发展。我们的“搜索算法的应用研究”小组共有五个成员,根椐学生的特点、特长,对他们进行分工,每位学生研究上述其中一个问题,然后整个小组一起讨论,每位学生介绍自己的研究情况、研究成果,然后其他同学进行补充,发表自己的见解,这样每个同学都使自己的研究内容得到补充,同时也学习到了其他同学研究方面的知识,可以取长补短,共同提高,得到全面发展。
三、通过研究性学习,总结算法的应用规律,要求变
研究性学习的目的,是要求学生搜集与主题有关的资料,归纳整理相关资料,根据相关材料和知识,对主题进行研究,提出自己的观点或结论。我们在程序设计教学中进行算法专题研究也是这样,除要求学生归纳、整理专题算法知识外,还要总结出算法的应用规律、应用算法解题的步骤和算法的框架,能根据实际情况,随机应变。如在“动态规划的应用研究”中,学生总结出:动规划是解符合“无后效性原则”的最优问题的一种算法思想;用动态规划解题的一般步骤是:(1)判断题目是否为求最优问题,是否符合“无后效性原则”;(2)确定如果划分阶段;(3)确定每个阶段有几种状态;(4)找出状态转移方程和边界条件;(5)用算法语言实现算法过程。又如在“搜索算法的应用研究”中,研究小组的同学总结出:(1)广度优先搜索算法通常应用于解最少步数问题,而深度优先搜索算法则通常用来解所有路径问题;(2)深度优先搜索和广度优先搜索都是搜索算法,前者时间复杂度较大,而后者则占用的内存较大;(3)深度优先搜索在实现时用递归或用堆栈来实现,而广度优先搜索是用队列来实现,实现两种算法所用的数据结构不同;(4)深度优先搜索和广度优先搜索都是搜索算法,但两者的算法结构有较大的不同。学生通过自己对算法应用规律的总结,对算法的应用得到升华,进一步提高算法的应用能力和程序设计能力。
四、通过研究性学习,提高分析、归纳和综合能力,要求新
对算法的专题研究,不仅要对算法理论进行总结,算法应用的研究也是很重要的一方面,通过算法的解题应用,既提高了学生分析问题的能力,也加深了学生对算法的理解,提高了学生的算法应用能力,进而得到对学生创新能力的培养。另外,我们在算法研究过程中,要求学生透切理解算法内容,用算法语言准确描述算法,通过这种途径,进一步加深学生对算法的理解,同时也提高了学生的算法表达能力和归纳、总结的能力。
通过对算法进行专题研究,可以进一步加深学生对算法知识的理解,也可以提高学生的算法应用能力和程序设计能力。实践告诉我们:在整个研究过程中要注意以下几个问题:
1、课题不宜太大。研究课题的确定是研究性学习实施过程中重要的一环,课题选择恰当与否,直接关系到整个课题研究的成败。在程序设计教学中进行研究性学习活动,选题要遵循下面的原则:(1)课题的范围不宜太大;(2)有一定的应用价值;(3)结合学生的实际。一个好的开始是成功的一半,在研究性学习活动中也是如此。
2、要理论研究与算法应用相结合。对算法的专题研究,算法应用是重点。在算法知识归纳总结的基础上,重点应研究算法应用的一般规律、算法结构、应用算法解题的一般步骤等。不应该只是对算法理论的空洞论述,否则效果不好、意义也不大。
3、充分发挥教师的引导作用、学生的主体作用。在算法研究活动中,应充分发挥教师的引导和指导作用,既不能放任自由,也不能包办代替,要充分发挥学生的主体作用。当学生遇到问题和困难时,老师应当引导和启发学生,让学生去探索和研究,而不是直接告诉学生答案,老师始终是学生的引导者,学生是真正的参与者,使学生通过算法研究,加深对算法的理解,提高算法应用能力和程序设计能力。
职业学校的学生,不仅应具有独立接受知识的能力,更应具有独立探索知识的能力,由“研究性学习”补充原有的“接受式学习”,使学习方式更趋完善,只有当这两种学习方式结合起来,优势互补,才能使基础教育适应时代对人才培养的要求。
第四篇:教案算法与程序设计思想
算法与程序设计思想
【课标要求】
(一)利用计算机解决问题的基本过程
(1)结合实例,经历分析问题、确定算法、编程求解等用计算机解决问题的基本过程,认识算法和程序设计在其中的地位和作用。
(2)经历用自然语言、流程图或伪代码等方法描述算法的过程。
(4)了解程序设计语言、编辑程序、编译程序、连接程序以及程序开发环境等基本知识。
【学情分析】
高一年级的学生已具备了一定的观察、思考、分析和解决问题能力,也已有了顺序结构、分支结构、循环结构等知识的储备。因此,对于如何将解决问题的思路画成流程图已有一定的基础,但可能还不很熟练,尤其对刚学过的循环结构,教师在课堂上要注意引导。『此处说“已有了顺序结构、分支结构、循环结构等知识的储备”,应该是指在必修部分对“计算机解决实际问题的基本过程”已有所体验与了解,或是指已学习过数学中相关模块的知识,这是本案例教学得以实施的必不可少的前提条件。』
【教学目标】
1.知识与技能:
建立求一批数据中最大值的算法设计思想,并将算法的设计思想用流程图表示出来。2.过程与方法:
利用现实生活中比较身高的活动,以及对武术比赛中“打擂台”流程的逐步梳理,让学生学会从此类生活实际中提炼出求最大值的思想方法,即算法思想。培养学生分析问题、解决问题的能力,让学生学会在面对问题时能梳理出解决问题的清晰思路,进而设计出解决某个特定问题的有限步骤,从而理解计算机是如何解决、处理某种问题的。
『在过程上,通过现实生活中的实例来引导学生总结“求最大值”的算法思想。过程的实现关键在于实例引用是否贴切,是否有利于学生向抽象结论的构建。本案例的实例选择是符合这一要求的。在方法上,注重培养学生分析、解决问题的一般能力,再次体验与理解应用计算机解决问题的基本过程,为后面更一步的学习打下基础,积累信心。』
3.情感态度与价值观:
让学生全身心地投入到教学活动中,积极与同伴合作交流,进行探索活动。培养学生良好的思维品质,发展他们的创新思维,并养成积极的学习态度和良好的学习习惯。
创设情境,以激发学生的学习兴趣。努力营造一个可以接纳的、支持性的、宽容的课堂学习环境,让学生置身于民主和愉悦的课堂氛围中放飞思维、潜心研究、快乐创造。
『本案例对“情感、态度与价值观”目标的设计,更多的是试图建立一个活跃、民主、快乐的学习环境。良好的学习环境是学生乐学好学、教师提高课堂效率的重要条件。如果真能实现这样一个环境,营造出理想状态中的学习氛围,无疑会使学生在学到“知识与技能”的同时收获到更多的东西——合作、分享、成就。而且如果能够结合教学内容来描述目标,则会使目标显得更具体,更有针对性。』
【重点难点】
教学重点:建立求一批数据中最大值的算法设计思想,并将此算法设计思想用流程图表示出来。
教学难点:上述重点问题同样是本课教学的难点。另外,如何把人解决问题的思路、步骤用计算机语言描述出来也是本课的难点之一。
『建议,此处可添加关于教学重、难点的确立依据,以及解决教学难点的关键方法方面的描述。同一段知识内容的教学重、难点对于同类教师基本上是一致的,不同的是对教学重、难点的认识与处理方法。应该说,对教学重、难点认识的越深刻就越有可能找到更好的处理方法。』
【教学思路】
利用现实生活中比较一组学生身高这一事件,引导学生去发现求最大值的一种方法。如何设计求一批数据中最大值的算法?我认为让学生自己去经历整个探究过程,要比直接把现成的算法告诉学生有意义得多。它能迅速、有效地帮助学生建立程序设计思想。在完成这个任务的过程中,教师的循循善诱起到了非常关键的作用。找出一批数据中的最大者,从表面上来看是一个很简单的问题。在比较数的过程中,人因为动用了眼睛,比较大小的思维过程一闪而过,所以能很快求出一批数据中的最大值。而计算机与人不同,它对这些数据看不见、摸不着,怎么来完成这一任务呢?其实,计算机解决问题的关键,就是要把人解决问题的思维过程用计算机语言描述出来,即为大脑思维的每一步“拍照”。这是计算机程序设计教学的一个重点,也是一个难点,需要教师在教学过程中逐步引导和训练学生,使学生逐渐学会分析问题,寻求解决问题的方法和步骤。本案例运用生活中“打擂台”的实例引导学生分析求最大值的方法,通过对这一现象的分析,逐步引出求最大值的算法设计思想。
『作者在此处点出了解决教学难点的方法,即采用“逐步引导和训练”的方法。其意图就是希望学生经历整个过程,从而锻炼、提升探究能力,领悟、理解其中的思想,实现授人以渔的目的。』
【教学过程】
1.情境创设___________如何建立支架的? 师(提问): 今天在第一排就座的有10 多位同学,谁是我们第一排在座各位中的最高者呢? 师(引导): 大家思考,通常这个任务我们是怎样去完成的? 教师根据学生对问题的回答进行分析。引导学生往古时候比武时常常采用的“打擂台”的方式上想,提示学生可参考电视上经常播放的“挑战主持人”节目。师生: 打擂的过程可以描述为:
(1)确定一个擂主(讨论第一个擂主是如何确定的);
(2)挑战者上台;
(3)擂主和挑战者比较;
(4)挑战者胜的话,挑战者做擂主,否则擂主卫冕;
(5)重复执行(2)~(4)步骤,直到最后一个挑战者。
师: 在打擂的过程中,我们看到(2)~(4)步骤是要重复做的,所以我们该怎么办呢? 生: 需要循环结构来实现。师: 这几个步骤序列重复到什么时候结束呢?由学生讨论结束的办法,很显然,需要在最后加上一个能判断什么时候结束的判断框。
根据讨论的步骤,最后师生共同得出打擂台的算法和流程图(如图1)。
『作者的引导可以总结为:比身高(学生的回答可能多种多样,也可能偏离预设方向)——比武、“打擂台”(将学生发散出去的思考往预设方向上牵引)——“挑战主持人”节目(进一步将学生的思考引到其头脑中已有的认识上,前提是学生要看过该节目)——用自然语言的方式整理出比赛的规则(即算法的自然语言描述)——得到表示算法的流程图。应该说,这样的引导方式完全可以达到作者的预设目标。』 2.求一般情况下的最大值的算法 师(引导): 如果我们面对的是一堆数据,现在希望我们求出这一堆数据中的最大值该怎么办?通过教师和学生的共同分析,把问题进一步细化为:
(1)从第一个数据开始看起;
(2)把第一个数据的值在变量中记下来;
(3)再取一个数据;
(4)比较这个数据与变量中记下的数据的值;
(5)如果这个数据的值比记下的数据的值大,则去掉变量中原来那个数据,记下新数据的值;
(6)重复执行(2)~(4),继续比较,直到最后一个数据。
也就是说,计算机的变量始终记着当前比较过数据中的最大者(我们不妨用X 表示它),当取完最后一个数据时,X 中留下的也就是最大值了。求最大值的算法设计思想用下图表示。
『教学在上一环节的基础上再做进一步的深入,即扩大数据的比较范围,讨论一般的情况。由于学生已经经历了上一环节的思考过程,因此,再次思考一般性问题的解决方案就变得容易多了,这又是另一维度的“逐步引导和训练”,即具体到一般的过渡。这是作者对教学策略设计的准确实现。』 注意:
a.再次让学生讨论变量的意义,弄清赋值语句的意义。b.一些物理量用变量表达的意义。如X 表示最大值,X 表示输入的一个值,且每次循环时都用同一个变量X。
c.为了控制循环结束,必须加入一个控制循环次数的计数器I,当I 达到一定的次数后,循环工作结束。
『除了对教学目标宏观上的关注与设计之外,也注意到了教学内容细节上的把握。作者在此处提出的三点注意都是编程语言细节上的问题,应该说,这“三点注意”是作者多年或是本案例实践过后总结的教学经验,当然也可能是教师在教学设计时预先设想的教学问题。这些要“注意的点”正是教学实践或设计中的精华所在,也是值得我们借鉴与学习的内容之一。』
3. 回顾小结
师生共同总结算法设计的过程,就是将大脑思维的每一步都记录下来,并且用计算机能达到的功能来实现人解决问题的思路。
『最后带领学生总结本节课的中心思想,即回答“算法设计的过程是怎样的?”这一问题。使整节课有了一个明确的结论。』
第五篇:算法与程序设计思想
《算法与程序设计思想》教学案例1
一、教学目标 1.知识与技能:
求一批数据中最大值的算法设计思想,并将算法的设计思想用流程图表示出来。2.过程与方法:
利用现实生活中比较身高的活动,以及对武术比赛中“打擂台”流程的逐步梳理,让学生学会从此类生活实际中提炼出求最大值的思想方法,即算法思想。
培养学生分析问题、解决问题的能力,让学生学会在面对问题时能梳理出解决问题的清晰思路,进而设计出解决某个特定问题的有限步骤,从而理解计算机是如何解决、处理某种问题的。
3.情感、态度与价值观:
让学生全身心地投入到教学活动中,积极与同伴合作交流,进行探索活动。培养学生良好的思维品质,发展他们的创新思维,并养成积极的学习态度和良好的学习习惯。
创设情境,以激发学生的学习兴趣。努力营造一个可以接纳的、支持性的、宽容的课堂学习环境,让学生置身于民主和愉悦的课堂氛围中放飞思维、潜心研究、快乐创造。
二、教学重点、难点 教学重点:建立求一批数据中最大值的算法设计思想,并将此算法设计思想用流程图表示出来。
教学难点:上述重点问题同样是本课教学的难点。另外,如何把人解决问题的思路、步骤用计算机语言描述出来也是本课的难点之一。
三、教学对象分析
高一年级的学生。他们已具备了一定的观察、思考、分析和解决问题能力,也已有了顺序结构、分支结构、循环结构等知识的储备。因此,对于如何将解决问题的思路画成流程图,学生已有一定的基础,但可能还不很熟练,尤其对刚学过的循环结构,教师在课堂上要注意引导。
四、教学策略及教法设计
利用现实生活中比较一组学生身高这一事件,引导学生去发现求最大值的一种方法。如何设计求一批数据中最大值的算法?我认为让学生自己去经历整个探究过程,要比直接把现成的算法告诉学生有意义得多。它能迅速、有效地帮助学生建立程序设计思想。在完成这个任务的过程中,教师的循循善诱起到了非常关键的作用。找出一批数据中的最大者,从表面上来看是一个很简单的问题。在比较数的过程中,人因为动用了眼睛,比较大小的思维过程一闪而过,所以能很快求出一批数据中的最大值。而计算机与人不同,它对这些数据看不见、摸不着,怎么来完成这一任务呢?其实,计算机解决问题的关键,就是要把人解决问题的思维过程用计算机语言描述出来,即为大脑思维的每一步“拍照”。这是计算机程序设计教学的一个重点,也是一个难点,需要教师在教学过程中逐步引导和训练学生,使学生逐渐学会分析问题,寻求解决问题的方法和步骤。本案例运用生活中“打擂台”的实例引导学生分析求最大值的方法,通过对这一现象的分析,逐步引出求最大值的算法设计思想。1 孙朝霞.从生活中探究和建立程序设计思想——《算法与程序设计思想》教学案例.中小学信息技术教育,2005(12)
五、教学过程 1.情境创设 师(提问): 今天在第一排就座的有10 多位同学,谁是我们第一排在座各位中的最高者呢?
师(引导): 大家思考,通常这个任务我们是怎样去完成的? 教师根据学生对问题的回答进行分析。引导学生往古时候比武时常常采用的“打擂台”的方式上想,提示学生可参考电视上经常播放的“挑战主持人”节目。
师生: 打擂的过程可以描述为:
(1)确定一个擂主(讨论第一个擂主是如何确定的);(2)挑战者上台;
(3)擂主和挑战者比较;
(4)挑战者胜的话,挑战者做擂主,否则擂主卫冕;(5)重复执行(2)~(4)步骤,直到最后一个挑战者。
师: 在打擂的过程中,我们看到(2)~(4)步骤是要重复做的,所以我们该怎么办呢?
生: 需要循环结构来实现。
师: 这几个步骤序列重复到什么时候结束呢?由学生讨论结束的办法,很显然,需要在最后加上一个能判断什么时候结束的判断框。
根据讨论的步骤,最后师生共同得出打擂台的算法和流程图(如图1)。
2.求一般情况下的最大值的算法 师(引导): 如果我们面对的是一堆数据,现在希望我们求出这一堆数据中的最大值该怎么办?通过教师和学生的共同分析,把问题进一步细化为:
(1)从第一个数据开始看起;
(2)把第一个数据的值在变量中记下来;(3)再取一个数据;
(4)比较这个数据与变量中记下的数据的值;
(5)如果这个数据的值比记下的数据的值大,则去掉变量中原来那个数据,记下新数据的值;
(6)重复执行(2)~(4),继续比较,直到最后一个数据。也就是说,计算机的变量始终记着当前比较过数据中的最大者(我们不妨用X 表示它),当取完最后一个数据时,X 中留下的也就是最大值了。
求最大值的算法设计思想用图2 表示。
注意:
a.再次让学生讨论变量的意义,弄清赋值语句的意义。
b.一些物理量用变量表达的意义。如X 表示最大值,X 表示输入的一个值,且每次循环时都用同一个变量X。
c.为了控制循环结束,必须加入一个控制循环次数的计数器I,当I 达到一定的次数后,循环工作结束。
3. 回顾小结
师生共同总结算法设计的过程,就是将大脑思维的每一步都记录下来,并且用计算机能达到的功能来实现人解决问题的思路。