您现在的位置:安徽高中数学>> 文章频道>> 论文交流>>正文内容

算法教学的思考

点击数: 【字体: 收藏 打印文章 查看评论
 
“中学数学核心概念、思想方法及其教学设计研究”课题组于2007511在浙江省黄岩中学举行了第四次会议.这次会议是课题研究的一个重要转折,研究的平台已由“圆桌会议”转向了课堂,许多研究中不清晰的问题找到了恰当视角,另外还有许多“意外收获”.

“算法的概念”这堂课,为研究者重新认识算法,并由此思考怎样进行教学设计和实施教学提供了宝贵的研究资源.下面结合杭州提供的研究课(简称“研究课”)谈一些看法.

一、教学内容的解析确立教学目标与重点

在“算法的概念”一课的教学过程中,执教者按照原定教学设计完成了教学过程,但给听课者的总体感觉是教学重点不突出,学生对算法的认识停留在一种模糊的状态,造成这种结果的重要原因是在教学设计中对教学内容的解析不到位.也许有人会觉得,算法是一个人人都觉得还没有明确定义的数学概念,课堂教学时用一些实例写写步骤感觉一下就行了.实际上,作为数学概念,算法有它的基本特征和内涵,对它进行内容解析时,需要进行深入的思考与挖掘,这是非常重要的.

当前,算法的表述不尽相同.人教A版《数学3》在充分比较各种表述后,给算法的基本特征及其内涵作出如下界定:

“在数学中,算法通常是指按照一定规则解决某一类问题的明确和有限的步骤.现在,算法通常可以编成计算机程序,让计算机执行并解决问题”

1.在上述表述中,强调了在“数学中”,这就为教学时选取教学内容(特别是具体的算法案例)指定了范围,教科书也因此只针对数学上的算法案例来阐述算法的概念.这样处理,就是为了避免将算法的概念泛化,以至于教学目标不落实.因此,选取“狼羊菜过河”作为算法案例是不恰当的.

2.“步骤”是算法的最显著的特征,它蕴含着“有序性”.同时,算法的步骤不能不明确,也就是说算法步骤具有“明确性”.例如下列表述中的省略号就不具有算法步骤的“明确性”:

第一步,给定大于2的整数n

第二步,用2去除n,得到余数t.若t=0,则2能够整除n n 不是质数,算法结束;否则,进入第三步.

第三步,用3去除n,得到余数t.若t=0,则3能够整除n n 不是质数,算法结束;否则,进入第四步.

……

第(n-1)步,用(n-1)去除n,得到余数t.若t=0,则(n-1)能够整除n n 不是质数,算法结束;否则, n是质数.

实际上,是否“明确”,只要看人们(特别是计算机)机械地执行给定的步骤后是否能得出正确结论.显然,省略号所代表的部分是无法执行的.

算法的第三个基本特征是步骤的“有限性”,也就是说任何一个算法都必须在有限步内完成.

尽管算法还有其它一些特征,但“有序性”、“明确性”和“有限性”是算法的基本特征.

3.在算法概念的表述中,“一定规则”指的是设计算法时的依据,例如“辗转相除法”和“更相减损术”是求两个正整数的最大公约数的不同依据,这些依据通常是不同的数学结论或数学方法,因而是不同的规则.根据不同的规则得到的算法就是不同的算法,这与算法用什么方式(算法步骤、程序框图或程序)表示无关.例如,在设计“求解二元一次方程组”的算法时,采用不同的方法消元就会设计出不同的算法.

4.一个算法通常有输入和输出,有不同的输入就有不同的输出.因此,设计算法通常是为了解“某一类问题”,强调的是算法的“通用性”,但这不排斥把解决某一个具体问题的步骤也看成是算法.

因此,教科书在安排“求解二元一次方程组”、“质数的判定”和“用二分法求方程的近似解”三个案例时,都是先具体再一般,这不仅便于学生理解,更重要的是强调算法在解决“某一类问题”时的“通用性”.

5.在算法的内涵中,最重要的是算法步骤之间的逻辑结构,它不仅是算法的基石,同是也是算法能在计算机上实现的基础.虽然程序框图是表达算法逻辑结构的最直观方法,教科书也把算法的基本逻辑结构与程序框图安排在一起,但算法的基本逻辑结构并不依赖于程序框图.因此,离开算法的基本逻辑结构来介绍算法的概念,是对算法概念理解不到位的做法.要真正使学生理解算法,就必须从算法的基本逻辑结构入手.因此,算法基本逻辑结构的提炼是算法概念教学的重点.但“研究课”上这一重点没有得到体现.

6.信息技术时代,算法的重要性已经成为共识.在高中数学课程中,解一元二次方程组、解二元线性方程组、解一元二次不等式、质数的判定、二分法、判定平面直角坐标系中直线与圆的位置关系、解三角形、求导数和定积分、建立线性回归方程等,都是算法的典型案例.由此可见,算法思想贯穿整个高中数学,算法的学习对整个高中数学的学习有着“源”与“流”的关系.同时,算法的内容特点使它在发展学生有条理地思考与表达的能力方面有着特殊的作用.

“研究课”中,教师关注了章头图,并提到了“算盘”“计算机”“算法”等,但所安排的内容对促进学生体会算法的重要性还不够.如果再提供一些章头图中所涉及内容的图片资料,特别是计算机领域所取得的一些重大成果,以及与人们生活息息相关的计算机应用成果等,那么学生对学习算法必要性的认识和兴趣都会有更大的提高.

7.通过对算法概念的内容解析,我们可以确定以下教学目标:

1)通过具体实例了解算法的含义,明确算法的基本特征(有序性、明确性、有限性);

2)能用自然语言写出解决具体问题的算法步骤;

3)通过具体实例的算法步骤,体会算法的基本逻辑结构(顺序、条件、循环)是算法步骤间的内在联系.

在“研究课”中,由于对教学内容的解析不准确,对教科书中的案例重视不够,没有充分挖掘这些案例的内涵,同时自己补充的有些教学素材又不确切,教学进程中的问题设计不精细,造成课堂教学偏离上述目标,影响了教学效果.

二、教学目标解析与教学问题诊断描绘教学过程

1.目标解析与教学问题诊断

目标(1)是教学的基本目标,应该结合具体实例(如求二元一次方程组的解)来实现.算法的表述中有不少关键词,在给出算法的概念时,还不可能对所有的内涵揭露得很清楚,因此,只需学生通过具体实例对“算法通常是指按照一定规则解决某一类问题……的步骤,这些步骤有着明确的顺序性”有一个总体了解.在介绍算法概念时,学生对其中的“明确性”与“有限性”不可能达到实质性理解.虽然这是本课的第一个教学问题,但此时不应过分纠缠,而应结合后续的“质数的判定”、“用二分法求方程的近似解”两个案例,引导学生体会和理解.

目标(2)是学生对算法了解程度的重要标志,是主要的教学目标.实现这个目标的最好方法,就是结合教科书提供的案例,多给学生练习机会.由于学生头脑中算法的背景知识太少,对算法特征与内涵体会不够,导致他们不能清楚区分算法与非算法,可能会写出一些不是算法的“算法”,这是第二个教学问题.解决的方法是先让学生独立写,再展示和讲评,从中获得反例,并引导学生通过比较而认识算法与非算法.

目标(3)是教学重点.教学时可能遇上的第三个问题,就是如何提炼算法的条件结构与循环结构.算法中所蕴含的循环结构的提炼也是教学的难点.

2.教学支持条件

1)学生对算法的兴趣,很大程度上源于算法与计算机的联系.在得到一个具体的算法后,演示一下计算机执行算法的过程,可以加强学生对算法内容的关注度,提高他们的学习兴趣.因此,可先编制好相应的程序供教学中演示.

2)探究“质数的判定”与“用二分法求方程的近似解”的算法均涉及计算问题,准备具有“求余数”、计算复杂函数值的计算器或备好相应软件的计算机,对于提炼算法中的结构(特别是循环结构)将有极大的帮助.

在“研究课”中,教师对(1)有所表现,但对(2)没有考虑,这说明教师在教学中没有关注到算法结构的提炼对理解算法的重要性.

三、教学目标与教学问题引领教学过程的问题设计

教学的最终结果是实现教学目标.所以,要用教学目标引领问题设计,使“问题串”的问题系列与教学目标的“子目标”系列相对应,从而提高教、学行为的针对性和有效性,使教学目标顺利实现.但在设计教学过程时,哪些问题必须考虑?怎样提出这些问题?

“什么是算法?”“算法的基本特征是什么?”“如何表示算法?”“怎样写出算法的步骤?”等是围绕教学目标的关键问题,必须给予考虑.但如果在课堂上直截了当地提这些问题,那么学生的思考会因为缺乏具体背景的支撑而变得盲目,甚至对问题本身也会不知所云.所以,“算法教学必须结合实例进行”.

1.为了让学生了解算法的含义,明确算法的基本特征,可设计如下的问题.

问题1 对下列的二元一次方程组,你能写出它的解答过程吗?

收集学生的不同解答,再与教科书上的解答作比较.

意图:使学生关注算法的步骤,区分算法与一般的解法.

问题2 教科书提供的解答有什么特点?

意图:引导学生体会教科书的解答特点是呈现为“有序的步骤”.

问题3 你能按照解的步骤,得出求解方程组的步骤吗?所得到的步骤能否交换顺序?

让学生尝试,并与教科书中的步骤作比较,认识到所得的各个步骤不能交换顺序.

意图:体会算法通常是用来“解决某一类问题”的,步骤有着明确的顺序.

问题4 求解二元一次方程组的全部步骤就叫做一个算法.据此,你能说说算法的含义吗?

学生表述后,指引学生看教科书的表述.教师利用已有的教学资源(如学生提供的二元一次方程组的不同解法等)讲述“一定规则”和“某一类问题”的含义.

意图:初步了解算法的含义.

2.在进一步体会算法的含义,揭露算法的基本特征时,可安排如下的问题.

引导性语言:大家知道,1997年,香港回归;1999年,澳门回归.有意思的是,这两年均是质数年.你知道如何判定19971999是质数?一般地,如何判定一个正整数是否为质数?下面从具体问题的讨论开始.

意图:激发学生的学习兴趣,引出“质数的判定”的算法探求问题.

问题5 7是否为质数?你能写出判定7是否为质数的算法吗?

让学生写算法的步骤,交流并点评学生写的算法步骤.

意图:体会如何从算法的角度思考质数的判定,体会算法的特征,知道下列表述的步骤是不明确的,所以都不是算法:

1)因为26的整数都不能整除7,所以7是质数.

2)第一步,用27,得到余数不为0,所以2不能整除7.

第二步,同理,36的整数都不能整除7,所以7是质数.

问题6 你能写出判定1997是否为质数的算法吗?35呢?

让学生试着写一写,可能会出现不同情况.教师有针对性地进行相应讲解.

1997太大,像判定7是否为质数那样去判定1997是否为质数是一件很困难的事情.因此,学生可能会写出下列步骤:

第一步,用21997,得到余数为1.因为余数不为0,所以2不能整除1997.

第二步,用31997,得到余数为2.因为余数不为0,所以3不能整除1997.

第三步,用41997,得到余数为1.因为余数不为0,所以4不能整除1997.

……

1995步,用19961997,得到余数为1.因为余数不为0,所以1996不能整除1997.因此,1997是质数.

但是,上述表述的不是算法.事实上,如果上述的表述是算法的话,我们同样可以说明35也是质数:

第一步,用235,得到余数为1.因为余数不为0,所以2不能整除35.

第二步,用335,得到余数为2.因为余数不为0,所以3不能整除35.

第三步,用435,得到余数为3.因为余数不为0,所以4不能整除35.

……

第三十三步,用3435,得到余数为1.因为余数不为0,所以35不能整除35.因此,35是质数.

但实际上却有,即不是质数.之所以会出现误判,是因为“……”表达的步骤不明确.事实上,只要在上述步骤前三步的基础上再写下:

4步,用535,得到余数为0,所以5整除35.所以35不是质数.”

然后去掉以后的步骤,就可以得到判断35不是质数的算法.

意图:认识算法步骤的“明确性”,体会算法的顺序结构.

问题7 从问题6知道,一个算法步骤中不能出现类似“……”的步骤,但对于像1997这样大的数,要像判定7是质数那样的写出判定其是质数的所有步骤是不现实的.那么,在不改变“规则”的前提下怎样表达这个算法呢?

引导学生分析并认识到,在问题5中,判定7是否为质数的每一个步骤,除了除数不同外其余的内容是一致的.如果用i表示除数,那么所有步骤都包含以下内容:

“用i7,得到余数为r.因为r不为0,所以i不能整除7.

在问题6中,只要把被判定的数7改为1997,则每一步均包含以下内容:

“用i1997,得到余数为r.因为r不为0,所以i不能整除1997.

因此,我们可以把判定1997是否为质数的算法写为:

第一步,令i=2.

第二步,i1997,得到余数为r.

第三步,判断r是否为0.若是,则1997不是质数;否则把i的值增加1仍记为i.

第四步,判断“i>1996”是否成立.若是,则1997是质数;若否,返回第二步..

让学生将1997改为任意大于2的整数,改写算法,得出“判定整数nn>2是否为质数”的算法.

意图:问题5、问题6中的算法结构仅有顺序结构,这是最普遍,也是最容易被学生理解的算法结构.但像判定1997是否为质数的算法那样,很多算法仅用顺序结构表达是不够的,问题7的作用就是让学生体会并学会提炼算法的另外两种基本逻辑结构(条件结构和循环结构),这是算法能在计算机上实现的基石.

问题8 你能总结一下算法的基本特征吗?

让学生说说,教师总结.

意图:得出算法步骤的基本特征,并由此加深对算法含义的理解.

3.为了认识和提炼算法的循环结构,更准确地理解算法的“有限性”特征,可在“用二分法求方程的近似解”中设计如下问题.

问题9 你能结合下列图表说说“用二分法求方程的近似解”的基本过程吗?

意图:让学生回顾二分法的基本思想,启发学生从算法角度思考问题.

问题10 用计算器实现求解过程,得下列图表.你发现哪些步骤是被重复执行的?

教师引导学生思考求解过程,并用信息技术演示过程.

意图:提炼算法结构(主要是循环结构),为写出算法的步骤作准备.

问题11 上述求解过程中,我们得到的解的精确度是多少?如果精确度要求为0.1,可以减少多少个同样的步骤?如果精确度要求为0.001,又要增加多少个同样的步骤?

意图:揭示循环结构中控制循环次数的条件,让学生体会算法的“有限性”特征.

问题12 你能写出“用二分法求方程的近似解”的算法吗?

教师引导学生尝试写算法步骤,然后交流、点评.

意图:给学生提供写算法步骤的机会,及时发现学生的问题并给予纠正.

在“研究课”中,由于内容解析、目标解析都不到位,教学目标不准确,没有抓准重点、难点,以至教学过程中提了不少不妥当的问题.

结束语:“算法的概念”一课对于我们的启发是多方面、深层次的.杭州的课题组已经进行了比较深入的思考,并且写出了反思后的教学设计.这里,在分析了“研究课”中出现的问题的基础上,我们提供了对本节课的教学设计中几个环节的思考,希望对大家有一定的启发.


作者:郭慧清 章建跃 来源:本站原创 发布时间:2007年12月17日
上一篇:算法要教得简单明了[ 12-17 ]下一篇:信息技术在数学中的应用[ 08-15 ]
相关信息
没有相关内容
观后心情
感动 同情 无聊 愤怒 搞笑 难过 高兴 路过
用户信息中心
  • 中学数学免费网
  • 旧版安徽高中数学
  • 中学数学吧
  • 大榕树数学资源网
  • 数学社区
  • 人教社高中数学
  • 数海荡舟
  • 中国数学教育网
  • 中学数学信息网
  • 广东中山数学网
  • 画龙点睛