APP下载

立足揭示过程 内化学生的算法思维

2009-10-29周松星

中小学信息技术教育 2009年10期
关键词:枚举数组语句

周松星

在现行的教材中,因篇幅所限,保留的只是经过千锤百炼、千真万确的“圣经”,而知识的发现与形成过程较为少见。如果教师只教教材,就容易使学生变为知识的存储者,而不是知识的发现者和创造者。教师只有依据教材结构,通过教学活动展现知识的发现与形成过程,才能使学生的思维能力得到锻炼和发展。那么,在《算法与程序设计》选修模块的教学中,如何立足揭示过程,使学生的算法思维得到培养呢?

源于生活,让学生熟悉交换算法

在教学中,应启发、引导学生进行实验探究,让学生自主参与学习活动,进而深入思考、发现规律和掌握精髓。如“交换语句”是程序设计最基本的语句,在该语句的教学中,可通过设计一个实验“在A杯里装开水,B杯里装红茶,用什么方法可以把两个杯子里的液体调换”引导学生思考。学生容易想到利用第三个杯子(假设为T),把A杯的开水倒入T杯,把B杯的红茶倒入A杯,把T杯的开水倒入B杯。教师再引导学生将这一过程转化为VB语句,表示为:T=AA=B B=T。这样,学生就能通过操作、观察、分析和推理,由具体的形象思维到抽象思维,理解、掌握了交换两个变量的值的方法。

基于推导,让学生领会枚举算法

人们的认知过程是一个由简单到复杂的渐进式过程。在教学中,要从简单入手,让学生在体验成功的快乐中学习。如在枚举算法的教学中,可由一个简单的问题入手:鸡兔同笼,共有12只头、38只脚,求鸡、兔各有多少只?这个问题,如果采用数学方法,学生容易列出二元一次方程组进行求解,但怎样编写程序解题呢?教师可用列表法引导学生分析计算机程序的求解过程。假设鸡的只数为x,兔的只数为y。当x依次取1~11时,算出y;全部脚的只数为(2×x+4×y),如下表:

学生通过观察,发现满足题目要求的解。教师接着提出问题:鸡的数量从1到11依次变化,可用什么语句实现?使头、脚的数目满足要求又可用什么语句实现?引导学生得出求解问题的程序为:

Private Sub Command1_Click()

Dim X As Integer, Y As Integer

For X=1 To 11

Y=12-X

If 2*X+4*Y=38

ThenPrint“X=”;X,“Y=”;Y

Next X

End Sub

通过以上实例,引导学生归纳出枚举算法的思想是:用循环语句一一列举可能的解,用条件语句判断满足要求的解,二者联合使用,就可枚举出满足要求的解。

引用故事,让学生感悟递归算法

适时地引用生活中的故事在教学中进行类比,可以使学生由此及彼,起到启发思路、提供线索、举一反三、触类旁通的作用,有效地化解教学的难点。如在“递归算法与递归程序”的教学中,用一个民间故事“从前有座山,山上有座庙,庙里有一个老和尚在给小和尚讲故事,故事里说,从前有座山,山上有座庙,庙里有一个老和尚在给小和尚讲故事,故事里说……”来创设认知情境。教师接着提出问题:这个故事有什么特点?启发、引导学生得出,这个故事在反复调用故事本身。由此得出,递归算法是一种直接或间接调用自身的算法。如,我们可以这样定义N!,N!=N*(N-1)!。因此,求N!可转化为求(N-1)!,这就是递归的描述。教师继续提问:假设用函数F(N)表示N的阶乘,当N=3时,求解过程是怎样的?计算规模将发生怎样的变化?递归要有一个结束的条件,那么,递归终止(边界)的条件是什么?启发、引导学生得出F(3)的求解方法以及递归终止的条件(0!=1),并用如下算法实现:

If N=0 Then F=1ElseF=N*F(N-1)

以上通过设置问题情景,引导学生通过类比,对知识进行迁移和变通,使学生对递归算法的理解比较透彻和到位。

模拟排牌,让学生理解排序算法

很多人都有打扑克牌的经历,排牌是其中的一个必要过程。利用这一贴近学生生活的实例,能使学生从已有的知识中领悟新知识,突破教学难点。如在“插入排序”教学中,可以提问学生玩“斗大”排牌的方法是怎样的,然后模拟玩“斗大”从小到大排牌的方法,分析插入排序的过程,并提出以下问题让学生思考:数据后移怎样用数组表示?待插入点前移怎样用数组的下标表示?引导学生得出:数据后移用数组表示为:D[i]=D[i-1],待插入点前移用数组的下标表示为:i=i-1。将模拟排牌的插入排序过程表示为:假设当第1到第n-1个数据已经按由小到大的顺序存放在数组D中。

①输入第n个数据A;

②i=n(预设数据A存放的位置);

③当D[i-1]

④D[i]=A[找到了A应当插入的位置i]。

通过以上分析,把“斗大”排牌过程转化为VB程序,学生就很容易理解“插入排序”算法的含义,从而能够联系生活实际,内化新知识。

“立足揭示过程,内化学生的算法思维”的实践应贯穿于整个教学过程的始终。在具体的操作中,应与学生的认知规律相适应,由简到繁、循序渐进;应与教材结构相匹配,依据教材结构,优化教学内容;应与社会生活实际相联系,在解决问题的过程中把算法思维外化出来;应致力于拓展学生的思维空间;应注重渗透教学思想和方法。

(作者单位:广东韶关市第二中学)

猜你喜欢

枚举数组语句
JAVA稀疏矩阵算法
基于理解性教学的信息技术教学案例研究
一种高效的概率图上Top-K极大团枚举算法
重点:语句衔接
JAVA玩转数学之二维数组排序
Excel数组公式在林业多条件求和中的应用
基于太阳影子定位枚举法模型的研究
寻找勾股数组的历程
如何搞定语句衔接题
USB开发中易混淆的概念剖析