《算法与程序设计》选修教案.docx
《《算法与程序设计》选修教案.docx》由会员分享,可在线阅读,更多相关《《算法与程序设计》选修教案.docx(22页珍藏版)》请在冰豆网上搜索。
《算法与程序设计》选修教案
第一课初识算法与程序设计一、教学目标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个学习小组,每个小组的同学一起探究、讨论问题。
利用已学过的数学知识找出题目已知什么求什么、明确已知和未知之间的关系和写出求解问题的解题步骤。
并填写《计算机解决问题的过程》教学活动表中的“探究问题记录表”。
如下:
4
探究问题记录表分析问题(找出已知和未知、列出写出解题步骤结果已知和未知之间的关系)学生讨论,教师在这过程中到各学习小组中,引导个别学习小组分析问题、写出解题步骤。
教师提问2~3个同学,从中逐渐引导出类似如下的分析问题和解题步骤,并给出算法的概念。
分析问题(找出已知和未知、列出写出解题步骤已知和未知之间的关系)1、令X为1。
2、如果X整除3余1,X整除5余2,设所求的数为X,则X应满足:
X整除7余4,这就是题目要求的数,X整除3余1则记下这个X。
X整除5余23、令X为X+1(为算下一个作准备)。
X整除7余44、如果算出,则结束;否则跳转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余12、如果X整除3余1,X整除5余2X整除5余2,X整除7余4X整除7余4,5
X整除13余6X整除13余6,X整除17余8X整除17余8,则记下这个X。
3、令X为X+1。
4、如果算出,则结束;否则跳转2。
5、写出答案。
教师:
“上面的结果超过1万,人工计算要很长时间,在科技发达的今天,你想到什么?
”(用计算机解题)(四)用计算机解决问题教师:
“计算机怎么样解决问题?
用计算机解决问题,同样要经过分析问题、设计算法两步骤。
”在讲授过程中展示人工解题中分析问题和设计算法这两个步骤。
用计算机解题,是不是输入上面的算法?
上面用自然语言描述的算法,计算机不懂,必须翻译成计算机的语言,这就是程序设计语言。
”本例用VisualBasic语言编写的程序请看如下:
PrivateSubCommand1_Click()DimXAsInteger,YAsIntegerX=1:
Y=0DoIfXMod3=1ThenIfXMod5=2ThenIfXMod7=4ThenIfXMod13=6ThenIfXMod17=8ThenY=XEndIfEndIfEndIfEndIfX=X+1LoopUntilY>0Print"韩信统御士兵数:
";YEndSub教师:
“程序编好以后,通过键盘输入计算机,并运行程序查看结果这个过程叫调试程序。
”6
(五)观摩根据前面编制的程序,启动VisualBasic程序设计环境,输入程序代码,进行调试,最后得到运行的结果。
要求同组内先完成的同学帮助还未完成的同学。
帮助的时候不能代劳,只能动口不动手。
(六)交流教师:
“前面我们学习了用计算机解决问题的过程,它和人工解有什么关系呢?
同一学习小组的同学一起探讨人工求解问题和用计算机求解问题的异同,并把讨论结果记录在《计算机解决问题的过程》教学活动表的“讨论记录”表中。
如下:
关于求解问题的方式讨论记录求解问题的方式相同点不同点人工求解问题用计算机求解问题教师提问2~3个小组的讨论结果,并引导出大致如下的形式结果:
求解问题的方式相同点不同点对题目进行解答、运算速度人工求解问题慢、不需要计算机等分析问题、设计算法、得出结果、验算结果等编写程序、调试程序、运算用计算机求解问题速度快等7
第三课算法与算法的描述一、教学目标1、知识与技能
(1)了解算法的定义及其表达方法;
(2)认知流程图的六种基本符号;(3)理解计算机解决问题的一般过程。
2、方法与过程
(1)理解用不同的表达方法描述算法的优缺点;
(2)掌握用流程图描述简单的算法。
3、情感态度和价值观以生活中的实例引入算法,激发学生的学习兴趣,培养学生的主动探究能力。
二、重点难点
(一)教学重点1、算法的定义;2、算法的三种表达方法;3、流程图的六种基本符号;4、用流程图描述简单的算法。
(二)教学难点5、算法的描述(三种);6、用流程图描述算法。
三、教学过程(2课时)教学内容预期目标新课内容:
一、对算法的初步了解1.一个简单的物理问题:
求物体在恒力作用下的加速度。
根据在物理课中学过的知识,要解决这个问题有多种方法:
方法一:
a)测量出物体的质量m、拉力F和滑动摩擦力fb)将测量所得的数据输入计算机c)根据牛顿第二定律F-f=m*a,计算出加速度a8
d)输出所得的结果方法二:
a)测量出物体从静止开始移动的距离s、时间tb)将测量所得的数据输入计算机引入物理学中的例子,激发c)利用公式:
s=a*t*t/2计算出加速度a学生的学习兴趣,有助于学d)输出所得的结果生理解算法的概念2.算法的定义这种为解决某一问题而设计的确定的有限的步骤称为算法。
二、算法的描述要把解决问题的步骤表达出来,有多种方法可以表达算法。
引导出算法的概念1.用自然语言表达用自然语言表达算法,就是把算法的各个步骤,依次用人们熟悉介绍三种算法的表达方式,的自然语言表示出来。
并对它们进行比较,分析优优点:
容易理解缺点。
缺点:
书写较烦、不确定性、对复杂的问题难以表达准确、不能被计算机识别和执行给出流程图的基本符号,2.用图形符号表达对其功能和使用情况加以用图形符号表达算法必须要有一组规定统一、含义确定的专用符说明,以便今后在具体运用号。
中的正确使用。
常用的“流程图”所用的基本符号图形符号符号名称说明流线起始、终表示算法的开起始框:
一流出线止框始或结束终止框:
一流入线输入、输框中标明输只有一流入线和一出框入、输出的内流出线容处理框框中标明进行只有一流入线和一什么处理流出线判定框框中标明判定一流入线两流出线条件并在框外(T和F9
标明判定后的)但同时只能一流两种结果的流出线起作用向流线表示从某一框给出流程图的作法,通过详到另一框的流细的解释说明使学生初步向掌握流程图的使用和基本连接圈表示算法流向一条流线画法。
出口或入口连接点优点:
直观、形象缺点:
不能被计算机识别和执行例6-1-1:
“物体在恒力作用下的加速度”的算法用下图表达。
开始M=mF1=FF2=fa=(F1-F2)/M输出a结束3.用程序实现算法用计算机能理解和执行的程序设计语言把算法表示出来,然后把了解计算机解决问题的一程序输入到计算机并执行,计算机才能按照预定的算法去解决问般过程,为今后用编程解决10
题。
实际问题打下基础。
不同类型的计算机能够识别的指令和语言不尽相同,即使对同一种计算机语言,不同类型的计算机对该语言的解释程序也有差异。
因此,用程序表示算法时,必须按照程序设计语言适用某类计算机的具体规定来进行。
例:
用Pascal语言表示“从键盘输入一组数据并求该组数据的平均值”的程序如下:
Programex_averVarI:
integer;x,av:
real;BeginAv:
=0;I:
=0;Dowhilenoteof()BeginReadln(x);av:
=av+x;I:
=I+1;Endav:
=av/I;Writenln(“Theaveragevalueis:
”,av);End三、用计算机解决问题的一般过程使用计算机解决一个问题,一般包括四个过程1.需求分析“需求分析”是指对要解决的问题进行详细的分析,弄清楚问题的要求,包括需要输入什么数据,要得到什么结果,最后应输出什么。
“需求分析”就是确定要计算机“做什么”。
2.设计算法弄清楚要计算机“做什么”后,就要设计计算法,明确要计算机“怎么做”11
解决一个问题,可能有多种算法。
例如,数学题常常有“一题多解”。
这就是说,解决一个问题的算法可能不止一种。
这是,应该通过分析、比较、挑选一种最优的算法。
3.编写程序计算机只能接受并执行计算机程序设计语言编写的程序。
当我们为解决一个问题确定了算法后,还必须将该算法用计算机程序设计语言编写程序。
这个过程成为“编码”或“编程”。
4.上机调试与维护编写完成的程序,不一定完全符合实际问题的要求,还必须在计算机上运行这个程序,排除程序中可能出现的错误,才能得到结果。
这个过程称为“上机调试”。
即使是经过调试的程序,在使用一段时间后,仍然会被发现错误或不足之处。
这就需要对程序做进一步的修改,使之更加完善。
这个过程称为“维护”。
在实际解决问题时,上述四个步骤可能会根据不同的问题有所侧重。
12
第四课程序与程序设计语言一、教学目标1、知识与技能使学生知道什么是源代码,并理解算法、程序设计、程序设计语言之间的关系,了解程序设计语言的发展及种类。
2、过程与方法使学生初步体验编程乐趣,了解如何编辑程序、编译程序和连接程序。
3、情感态度与价值观让学生进一步领会算法和程序设计在解决问题中的地位,体会编写出程序的魅力,从而培养学生学习编程的兴趣。
二、重点难点
(1)重点:
了解代码所包含的算法思想;
(2)难点:
计算机是如何编辑程序、编译程序和连接程序的。
三、教学过程(2课时)正课讲解
(一)尝试用VB编写程序1、么是VB?
——VB是一种基本BASIC语言的可视化程序开发工具。
2、编写程序⑴从桌面上启动VB,弹出“新建工程”对话框,从“新建”页面中选“标准EXE”,然后“打开“按钮,建立”标准EXE工程。
注:
为了避免打开时总是出现“新建工程”对话框,在首次启动时,勾选“不再显示这个对话框”。
⑵单击工具箱“CommandButton”的按钮,在Form1窗体中拖出一个“Command1”按钮。
Command1是命令按钮,它有6个属性、2个事件和4个方法。
属性CaptionDefault标题决定窗体的默认命令按钮StyleEnabled控件的外观决定对象是否响应用户生成事件VisiblePicture决定对象是否可见显示的图形13
事件方法ClickDragRefresh单击拖动刷新MoveKeyPressSetFocus移动字符键被单设置焦点,将当前焦击点强制设置到文本框对象上⑶选中此按钮,从属性窗口中将Caption改为“韩信点兵”。
⑷给按钮添加代码,在PrivateSubCommand1_Click()和EndSub之间添加代码:
DimNAsInteger‘声明N为整型N=1‘赋初始值Do(Nmod3=2)and(Nmod5=3)and(Nmod7=2)Then‘满足条件打印N,不满足继续循环PrintNExitdoEndifN=N+1Loop⑸从“运行”菜单中“单击”启动命令,运行程序。
运行后,单击“韩信点兵”按钮。
注:
运行时,不能修改程序代码。
实践题:
从“调试”菜单中点击“逐语句”命令(F8),然后按F8键试着单步运行程序,观察代码是如何运行的,程序执行注释部分吗?
在程序运行的过程中,用鼠标指向变量N,看看它的值有什么变化,为什么会这样变?
(二)算法、程序设计与程序设计语言之间的关系⑴算法提出问题:
什么是算法?
算法有哪些特征?
⑵程序设计——寻求解决问题的方法,并将其实现步骤写成计算机可执行的程序的过程。
⑶程序设计语言——泛指一切用于书写计算机程序的语言。
算法是程序设计的前提,它包含方法和步骤;程序是实现算法中的思想的过程;程序设计语言把算法转化为计算机认识的语言。
14
(三)认识程序设计语言1、发展过程机器语言:
由一串“0”和“1”构成二进制代码。
汇编语言:
是一种符号化(英文助记符)的机器语言。
高级语言:
如Basic、C/C++、Fortran、Pascal、Cobol、Java等。
2、分类(按转换方式不同分类)编译型语言解释型语言编写的源程序需要用编译程序先翻译成机器语言的源程序输入计算机后,运行源程序,相应的解释程序目标程序,然后再由连接装配程序进行连接装配,生会逐条分析源程序中的语句,每解释一句由计算机执成可执行程序,这样才能被计算机执行。
行一句。
C/C++、VB、Pascal、CobolQbasic、Lisp3、编辑程序、编译程序和连接程序⑴编辑程序包含内容:
一是将源程序逐个字符输入到计算机内存,二是修改源程序,三将修改好的源程序保存在磁盘文件中。
⑵编译程序:
将已编辑好的源程序(已存储在磁盘文件中)翻译成二进制的目标代码。
二进制代码在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)如果按语句的作用区分,这个程序包含几个部分?
Privatesubcommand1_click()‘定义名为command1_click()的事件过程Constpiassingle=3.14‘说明程序中pi是常量∏Dimrassingle,sassingle‘定义半径r和面积s为单精度实型r=inputbox(“r=”,”请输入半径”)‘输入r的值s=pi*r*r‘把表达式pi*r*r的值赋给sprint“圆的面积s=”;s‘把s的值输出到当前的窗体上16
Endsub‘过程结束考察上述程序,我们容易看到:
程序共有代码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类型如Dimrassingle,定义半径r为单精度实型三、运算符、函数和表