APP下载

高中算法课的举一反三教学例谈

2017-04-07程启帮

东方教育 2016年22期
关键词:排序思路教学

程启帮

高中信息技术“算法与程序设计”是锻炼学生计算思维的重要课程,其中以“冒泡排序、选择排序”为核心内容的排序算法是该门课程的重难点,是信息技术高考必备内容,也是学生最感到疑难的易丢分内容。笔者在教学实践中得出“举一反三”的教学思想与训练方法,现与大家分享。

例如,在教学“选择排序”时,我们往往只介绍书本中提出的思路,其核心的程序结构如下:

让i从1到n-1循环(共n-1遍加工)

k=i(k用来保存第i位置上最终放置元素的下标)

让j从i+1到n循环

如果d(k)>d(j),就把j的值保存到k中

循环尾

如果k≠i,那么

交换d(k)和d(i)的值

条件尾

循环尾

相应的程序代码:

For i=1 To n-1

k=i

For j=i+1 To n

If d(k)>d(j) Then k=j

Next j

If k<>i Then

t=d(i):d(i)=d(k):d(k)=t

End If

Next i

上述代码是教材中介绍的算法,思路清晰,经过教学后,学生能够理解。教学是否就到此结束呢?笔者是继续拓展,引导学生不要局限于书本的思路,尝试去改进算法,启发学生“变量能否再少一点?目前代码中有k、t两个中间变量,可否尝试减少一个?”笔者在教学中,发现课堂上有学生马上想到了如下改进方法:

For i=1 To n-1

For j=i+1 To n

If d(i)>d(j) Then

t=d(i):d(i)=d(j):d(j)=t

End If

Next j

Next i

无独有偶,竟然在2016年4月信息技術高考试题第11题中出现了类似题目,有如下程序段:

For i=1 To 2

For j=5 To i+1 Step -1

If a(j)>a(i) Then

t=a(j):a(j)=a(i):a(i)=t

End If

Next j

Next i

数组元数a(1) 到a(5)的值依次为“33,24,45,16,77”,经过该程序段“加工”后,数组元数a(1) 到a(5)的值依次为

A.77,45,33,16,24 B.77,33,45,16,24

C.77,24,45,16,33 D.77,45,33,24,16

研究和编写过“选择排序的程序变式”的学生在考试中尝到甜头,能很快找到解题的关键点:若能判断出此段代码的核心算法是选择排序,定能选出正确答案;但如果学生没有接触过这段代码,考试中可能误判成冒泡排序,故而失分。

在冒泡排……

登录APP查看全文

猜你喜欢

排序思路教学
不同思路解答
微课让高中数学教学更高效
恐怖排序
节日排序
刻舟求剑
拓展思路 一词多造
“自我诊断表”在高中数学教学中的应用
换个思路巧填数
对外汉语教学中“想”和“要”的比较
跨越式跳高的教学绝招