基于新课程的高中探究学习教学模式思考与实践——《穷举算法》Visual Basic语言教学实例

2015-11-19 05:25刘军
中小学电教 2015年11期
关键词:算法探究教学模式

☆刘军

(吉林油田高中信息中心,吉林松原138000)

基于新课程的高中探究学习教学模式思考与实践——《穷举算法》Visual Basic语言教学实例

☆刘军

(吉林油田高中信息中心,吉林松原138000)

随着高中信息技术课程改革的不断深入,学生的学习方式也逐步向“自主探究,合作交流”探究学习方式转变,本文阐述探究学习教学模式环节和步骤,以及教师观念、师生角色和课堂教学模式的转变,并以高中信息课《穷举算法》VB语言教学为例,进行探究学习教学模式尝试。

高中探究学习教学模式;穷举算法;流程图;VB语言程序

高中信息技术新课程的理念,以素质教育为核心,着力于全面提高学生的信息素养。新课程改变课程实施过于强调接受学习、死记硬背、机械训练的现状,注重改变学生的学习方式,以激发学生的探究欲望为出发点,倡导学生主动参与探究、乐于探究,让学生亲历主动提出问题或假设、采集获取信息、交流思想、发表观点、开展合作的过程,培养学生搜集和处理信息的能力、获取新知识的能力、分析和解决问题的能力以及交流与合作的能力。

“算法与程序设计”是为计算机应用技术基础设置的选修模块,它在必修模块的基础上关注技术能力与人文素养的双重建构,是支持个性发展的平台,另外,“算法与程序设计”模块与数学课程中必修三的部分内容相衔接,能够实现两学科互补。本人在对信息技术的选修模块“算法与程序设计”的教学中,融入了新的教学理念,根据教学需要除采用讲解、阅读、讨论、任务驱动等教学方法,还针对相应的教学内容及目标,选取适合探究的内容,指导学生运用“自主探究,合作交流”探究学习方式,逐步摸索新理念下的探究学习教学模式。

一、新课程理念下的探究学习教学模式

任何一种方法和模式的选择和使用都应该建立在深入理解其内涵的基础上。探究教学模式就是教师指导学生运用探究学习方式,对各学科某些问题进行学习。那么,什么是探究学习?

(一)探究学习

探究学习是指学生通过类似于科学家科学探究活动的方式获取科学知识,并在这个过程中,学会科学的方法和技能、科学的思维方式,形成科学观点和科学精神。探究学习时,教师不直接讲授与教学目标有关的知识,而是创造一个特定的学习环境,让学生从问题情境中提出问题,建立假设,并在收集各种证据的基础上验证假设,最后经过交流质疑得出结论——概念、原理、推论或方法,即经过探索后亲自发现和领悟知识。

(二)探究学习教学模式的几个基本转变

1.教师观念的转变

传统的教学观念认为,教学活动是教师把知识传授给学生,学生被动接受知识的过程;探究学习的教学理念是学生根据先前认知结构主动地建构知识,主动探求知识,教师要真正实现由“教师传授知识”观念转变为“学生自主建构知识”的理念。

2.教师学生角色的转变

传统教学中教师的“教”是主体,学生是被教的对象,而探究学习理念中,学生的“学”是主体,教师的“教”是为学生的“学”服务的,教师是学生学习的引导者、组织者和合作者,起到导其所思,引其所做,扬其所长,促其所成的作用。

3.课堂教学模式的转变

课堂教学模式要由传统教学的“一言堂”模式向探究学习的“多言堂”模式转变,变被动接受为主动探究,突出学生学习的主体地位,以探究为主,以学生为主,以交互为主,给学生的主动学习、探究学习留下充分的时间和空间。

在实际教学中,针对《算法与程序设计》(粤教版)第四章第二节用穷举法设计程序进行教学设计时,采用古代著名问题“百鸡问题”作为穷举法第一个实例进行教学。笔者从不定方程数学解法的探究到穷举算法设计探究,再到VB语言编程探究,进行大胆尝试,摸索探究学习教学模式,多个班级进行了实际教学后,笔者获得了一些经验和体会,在此与各位教师及学者交流一下。

二、新课程理念下VB语言穷举法探究学习教学的实施

(一)不定方程数学解法的探究

1.创设特定的探究情景——讲故事

在南北朝时期,京城里有个卖鸡的张老老,所生一子,天资聪颖,勤学不怠,十二三岁已经博览群书,尤其富有算术的天赋。因此,大家都叫他张神童,逐渐传扬开去,不久就远近闻名了。当朝的老丞相爱才若渴,一天,听人谈到张神童的算法,心中很是不信,当下想了一个方法去试探他,于是唤仆人去打听张老老卖的鸡是什么价钱。不多时,仆人回答说:“公鸡每只卖五文钱,母鸡每只卖三文钱,小鸡每三只卖一文钱。”老丞相拿出一百文钱,命仆人去给张老老,叫他用这一百文钱把三种鸡配成一百只,不多不少,明天送来。当时张老老暗想:这实在是一个难题,然而又不敢违命,只好一口答应。等到收市后,就开始把三种鸡配起来。但是左配右配,总是配不成。正在无计可施的时候,他的儿子来了,问起情由,于是安慰父亲,叫他不要着急,明天总有办法。张神童当晚仔细研究,果然找到了答案。

由古代故事引出“百鸡问题”:“今有鸡翁一值钱五,鸡母一值钱三,鸡雏三值钱一,凡百钱买百鸡,问鸡翁、鸡母、鸡雏各几何。”有学生提出是不是可以列方程来解?

2.学生建立假设——列方程求解

经过较短的时间,学生基本上都把方程列出来了(设鸡翁X,鸡母Y,鸡雏Z)

其中,A组同学认为一定有第三个方程,还在列第三个方程。笔者对这种情况给予了明确指导。

3.学生解方程

对一点思路没有的小组给予一些启发、指导,比如初中学过的解方程组的方法等;对正在进行探究但探究方向暂时还不明确的小组不进行方向性指导,不要把教师的思路强加给学生,尽量让他们自主探究。

C小组的做法:方程组消掉未知数得到一个含X和Y的方程,然后让X的值从1试到4时,Y、Z得到了整数结果。

过了一会,B小组有了突破,得出了三组解,而且只有这三组解。

有几个小组已经导出了含两个未知数的方程却没有思路,适当进行指导,最后经过学生自己的探究也求出了三组解。

4.学生演示、交流解法

C小组及一些小组的代表做法,由方程组①②消掉未知数Z得到:

X数值从1开始试算……当X为14时,Y值为0.5,当X为15时,Y值为负,且X、Y、Z均不能为零的正整数,算出的三组解分别是:

B小组及其他各组代表解法,由方程组①②消掉未知数Z得到:

变形得:Y=25-(7/4)X,

因为Y一定为正整数且不能为零,所以令X=4K,当K=1,2,3…时,求出X、Y、Z,当K=4时,Y=-3与题意不符,因此也解得上述三组解。

有学生提出质疑,方程组①②消掉X或Y也会解得同样的结果吗?此时教师引导,因时间关系,这个质疑留在课下各小组探究。

实际上,由Y=25-(7/4)X经数学分析讨论的解法,也是带值试算,然后看哪些符合题意,只不过比X从1开始一个一个试算更有数学逻辑,更快捷。但是若所给题目数值不是很大,一个一个试算也不失为一种好方法,优点在于考虑到几乎所有的情况,不会有任何解被错过。

此时用大屏幕展示:这是我国著名的大数学家张邱建所著的《张邱建算经》中的“百鸡问题”,同时指出这是一个世界著名的不定方程问题,即由三个未知量构成的两个方程组成的不定方程组。有学生提出张邱建所处的公元5世纪前后还没有方程的数学模型,他是怎么解出来的?古人非常智慧的解法,可让学生在课下探究。

(二)穷举算法设计探究

学生在前三章已经学习了算法描述、VB程序的三种基本结构,有一定的程序知识的储备,因此,在穷举算法教学时,仍采用探究教学模式,学生自主探究学习的方式进行。

探究引课:由上节不定方程组的解法入手创设情境,若解决百钱买百鸡问题或扩展成更大的数,用上一节的方法算,计算量比较大,那我们应该使用什么方法?学生们想到用计算机来进行计算。

1.各小组进行算法探究

在探究开始发现,由上节的数学分析求解到用计算机求解,即设计出较好的“百鸡问题”的算法,还是有些难度和跨越,有了一定思路再到具体到流程图描述进展都比较缓慢。

教师适时渗透穷举法的基本思路:列举一切与命题相关的情况,然后根据问题设定的条件,逐一加以验证,找到满足条件的解,若某个情况验证符合题目的全部条件,则为本问题的一个解;若全部情况验证后都不符合题目的全部条件,则本题无解。

学生开始交流算法,各小组最后基本都确定了自己设计的流程图,几个有代表性的算法流程图如下:

C小组的算法设计:用三重循环来确定公鸡X、母鸡Y、小鸡Z的只数。

因为X、Y、Z都是正整数,且Z一定是3的倍数,总只数和钱数都是100,所以,确定X、Y、Z的取值范围是:

⑴X的取值范围1~20

⑵Y的取值范围1~33

⑶Z的取值范围3~99step为3

算法流程图如图1所示:

图1 

D小组的算法设计:用双重循环来确定公鸡X、母鸡Y的只数,小鸡Z的只数可由题中的条件Z=100-X-Y计算得出。

因为X、Y、Z都是正整数,总只数和钱数都是100,并给出了X和Y更精确的取值范围:

⑴X的取值范围1~19

⑵Y的取值范围1~31

Z的值Z=100-X-Y

X和Y精确取值范围的确定:

公鸡X=20,已经满100元,没有母鸡与小鸡的存在,不符合题意,因此,公鸡X最大到19只。

母鸡Y=33,已至99元,不符合题意;若Y=32,至96元,公鸡一只5元,仍不合理,因此母鸡Y最大到31只。

算法流程图如图2所示:

图2 

B小组的算法设计:用双重循环来确定公鸡X、母鸡Y的只数,小鸡Z的只数由题意Z=100-X-Y得出,另外,循环满足的条件7X+4Y=100是由方程组①②联立求得的。

因为X、Y、Z都是正整数,总只数和钱数都是100,并给出了X和Y的取值范围:

⑴X的取值范围1~14

⑵Y的取值范围1~24

Z的值由题中条件Z=100-X-Y得出。

算法流程图如图3所示:

图3 

教师小结穷举算法:列举出与命题相关的所有可能性,然后根据问题设定的条件,逐一判断哪些是符合问题要求的,从而得到问题的解答,这种算法就叫穷举算法,也称枚举法。穷举一般使用循环结构,要注意循环的起点和终点的界定,对可能的情况不能遗漏。

2.教师提出深入探究问题:穷举效率

评价一个算法的好坏,许多时候穷举效率很重要,穷举效率是通过穷举次数的多少来确定的,怎样计算穷举次数呢?让各小组进行深入探究计算出各自的穷举次数。

C小组的算法穷举次数为:20*33*33=21780次。

D小组的算法穷举次数为:19*31=589次。

B小组的算法穷举次数为:14*24=336次。

各小组都认为B小组的枚举效率最高,算法最好。

教师点评:B小组的算法设计中,虽然穷举次数最少,效率最高,但其满足的条件7X+4Y=100已经与原题意中公鸡、母鸡、小鸡的X+Y+Z=100相差甚远,易读性较差。评价一个算法的好坏,效率固然重要,但过分追求效率就会使得算法难以读懂,由此算法编写的程序就不易维护。因此,一个好的算法或程序首先要在易读性的前提下来提高效率,这样才能更好地进行维护,从而使程序得到更好的推广和使用。

(三)实现穷举算法的VB语言编程探究

穷举算法的VB编程探究安排上机课,采用学生完全自主的探究方式,学生可以利用现成的两个穷举算法编程,也可以用自己设计的穷举算法编程;可以探究“百鸡问题”,也可以探究它的扩展问题;可以组成小组探究,也可以自己完成探究;不限制使用哪种循环语句。

学生编程调试程序:有的小组使用FOR循环语句时,运行程序时提示:“编译错误,无效的NEXT控件变量引用”,经过小组学生反复探究发现是内层循环的NEXT语句放在了外层循环的后面,调试后再运行没有出现编译错误,得出了计算结果。适时指导:每个循环必须有唯一的循环控制变量,嵌套循环的内外循环必须层层相套,不得互相交叉,否则,一个循环就有两个循环控制变量,因此,运行时出现了前面的提示。

有的小组将100扩展成1000,窗体上显示出很多组解,有个学生在数有多少组解,另一个学生就说这样数多麻烦那还不准确,能不能显示出来多少组解呢?笔者就让这个小组好好探究一下,同时把这个问题也让其他组探究。

学生通过电子教室软件在大屏幕上交流编写的程序及运行结果,不时也有学生提出问题,与演示的学生探讨。

D小组用FOR循环编写程序:

运行得出三组解。

C小组学生用DO循环编写的图2穷举算法,将100扩展成1000,同时,在条件语句的语句组中加了一个计数变量,实现了解的组数的记录,程序如下:

此程序将100扩展成1000,经过检查验证及其他小组的质疑,没有逻辑错误,结果正确,共得出35组解(如图4)。

图4 

个别小组编程较快,将1000再扩展成10000试试,X、Y的范围确定后,结果用打印语句在窗体上无法显示那么多的解。笔者提示他们尝试用学过的其它控件,通过适当的指导,学生多次的探究,结果终于能够正常显示了。

通过对世界著名问题“百鸡问题”穷举法的教学探究,笔者尝试了设计算法之前,加大数学模型探究时间及力度的探究学习方式,针对同一问题建立多个数学模型,尽量挖掘出这一问题的各种解法,以便能较为顺利地找到适合计算机程解决问题的方法——穷举算法,然后进行算法探究及VB语言编程探究。学时安排:利用3课时完成探究,首先用1课时探究不定方程的数学解法,再用1课时设计穷举算法并画出流程图,最后1课时上机课根据流程图编写程序实现穷举算法。

总之,探究学习是创造一个特定的学习环境,让学生从问题情境中提出问题、建立假设、证实假设,最后经过交流质疑得出结论的学习方式,在实际教学中也不必拘泥于各环节及步骤,最重要的是要让学生主动运用探究学习的方式进行自主学习、探究学习、合作学习,从而真正提高学生的探究能力、分析和解决问题的能力以及交流与合作的能力。

[1]中华人民共和国教育部.基础教育课程改革纲要(试行)[N].中国教育报,2001-07-27(3).

[2]中华人民共和国教育部.普通高中技术课程标准(实验)[S].北京:人民教育出版社,2003.

[3]李安福,多种解法求百钱百鸡问题[DB/OL],2014-12-26/2015-06-15.

[编辑:郑方林]

G434

A

1671-7503(2015)21-0053-05

猜你喜欢
算法探究教学模式
一道探究题的解法及应用
群文阅读教学模式探讨
“思”以贯之“学、练、赛、评”教学模式的实践探索
一道IMO预选题的探究
Travellng thg World Full—time for Rree
“认知-迁移”教学模式在高年级阅读教学中的应用
进位加法的两种算法
探究式学习在国外
一道IMO预选题的探究及思考
一种改进的整周模糊度去相关算法