缪小丽
随着信息技术的发展,对培养具有高水平信息技术素养的人才提出了更高的要求。于是信息的编程加工进入了高中的必修和选修教材。算法设计作为信息编程加工的灵魂在整个程序设计过程中起着至关重要的作用。但是算法的学习比较枯燥抽象,逻辑思维性强。所以该部分内容成为近几年高中信息技术课教学的重点和难点之一。
本文结合学生日常生活中实例和该课题特点展开教学设计,让学生尽快掌握算法的概念、算法的描述、算法的选择及应用。通过该模块的学习,培养学生的算法思维,用计算机去分析问题、解决问题,以及提高学生现实生活中的逻辑思维能力和创新能力。
1.教学背景分析
(一)教学内容:
(1)什么是算法及算法设计的重要意义
(2)设计算法的步骤
(3)描述算法的方法
(二)教学重点和难点:
(1)算法描述解决问题的方法和步骤。
(2)算法的描述和表示,其中用流程图表示算法是难点。
(三)学生情况
学生具有一定的问题分析、解决问题的能力。对程序设计有所耳闻,而对算法设计的说法就很陌生,不了解在程序设计中为何要出现算法设计。
2.教学目标
(1)理解算法的概念和意义。
(2)了解描述算法的两种方法:语言描述法和流程图
(3)能初步利用算法解决简单的问题。
(4)培养学生的理论联系实际能力和动手实践能力。
3.教学方法
以任务驱动和课堂讨论的方式,主要是通过对实际问题的解决来突破的,把算法的思想生活化。算法的实例,不在于程序的难易,而在于要易于学生接受。老师提出的任务,学生独立思想加分组讨论,提出组内最佳方案。这样有利于培养学生主动参与、积极思考、团结协作,培养学生分析问题等能力。
4.教学过程
(一)算法的概念
提出问题,要求学生通过讨论完成任务:
(1)比如在我们日常生活中,寄一份信需要做哪些事才能把信成功地寄出去?
(2)同学们分组讨论,最后总结出大致可以将寄信的过程分为这样的几个步骤:
写信、写信封、贴邮票、投入信箱等四个步骤
(3)(总结)寄信的步骤也就是寄信的算法,引入新课:
在计算机中,它是如何来处理问题的呢?是否和我们日常处理事情的过程很类似呢?
回答是肯定的,要让计算机解决一个问题,我们就要先编写程序。在编写程序前需要先确定解决问题的思路和方法,并要正确地写出求解步骤,这就是算法。引出算法的重要意义。
(二)算法的重要性
(1)以建筑过程为例,请学生思考程序中算法设计相当于建筑过程中的哪一步?
(2)经过讨论和思考,学生基本上能确定算法设计相当与建筑图纸设计,而程序设计员在进行编写代码的阶段相当于建筑工人在砌砖的阶段。让学生明确算法设计的重要性。
(三)算法的设计与描述
如何去设计算法,举个简单的例子说明:
先拿出两个杯子,在A杯中倒入水,在B杯中倒入可乐,请学生考虑如何将这两个杯子中的液体进行互换,这时学生通过独立思考和分组讨论,最后请某学生到讲台来来演示(提醒学生可以自带道具):
(1)用自然语言来描述:
第一步:自带一个杯子C到讲台;
第二步:将A杯中的水倒如C杯;
第三步:将B杯中的水倒如A杯;
第四步:将C杯中的水倒如B杯;
(2)我们把程序设计中出现的变量比做是杯子,而杯子中的水就是变量对应的数据,总结提升为交换两个变量中的数据,用算法设计思路和流程图描述如下:(演示课件)
①将A中的数据送给变量C,即A→C;
②将B中的数据送给变量A,即B→A;
③将C中的数据送给变量B,即C→B。
总结:要求学生学会利用流程图中的各个部件来描述过程。
(四)巩固练习
输入三个不相同的数,求出其中的最小数。
同样,先请学生思考,然后请学生说出他所想到的解决该问题的方法。
教师分析:先设置一个变量min,用于存放最小数。当输入a、b、c三个不相同的数后,先将a与b进行比较,把小者送给变量min,若c 具体算法如下: ①若a ②再将c与min进行比较,若c 这样,min中存放的就是三个数中的最小数。 (五)提高练习 请学生将上例中的算法用流程图来表示,学会用流程图描述较复杂的算法。 (1)提示:在这里教师要让学生学会利用流程图中的菱形的条件图形进行逻辑运算。 (演示课件) (2)提问:在本题中,条件是什么表达式? (3)带着问题让学生自己摸索着画出流程图。 (4)待学生做完后,教师也给出一个流程图如右图(图例1)所示,让学生与自己画的流程图进行比较,那种画法比较好。 5.课堂总结 请学生用自己的语言总结这节课的学习内容: 算法是指解决问题的思路和方法。 描述算法的形式有多种,常用的有:自然语言和流程图。 流程图中常用符号的含义。 6.教学评价 通过在课堂上学生进行分组讨论交流,形成同学之间相互学习和交流的氛围。通过交流学习,不仅大大激发了学生的学习兴趣,同时也让学生的知识得到了进一步的拓展。 让学生能独立或与他人合作完成算法的设计,并能思考设计多种算法解决问题,并以多种形式描述以同种算法描述方法设计的算法进行比较,分析哪种算法描述方法更好更合理。注意算法描述方法和指令运用是否正确。