陈子栋
利用课前的微课学习,让学生提前预习课堂将要讲解的知识。这样,不仅拓展了学生学习编程的时间和空间,也激发了学生们的学习兴趣,提高了学生的学习效率和课堂效率。
了解学情,解决简单知识
以教学《素数》一课为例。微课视频介绍:“同学们,你知道什么是素数吗?百度中,素数是这么定义的:质数(prime number)又称素数,有无限个。除了1和它本身以外不再有其他的除数整除。根据算术基本定理,每一个比1大的整数,要么本身是一个质数,要么可以写成一系列质数的乘积,最小的质数是2。那么6和7,哪个是素数呢?根据定义,6除了本身以外,还有约数2、3,而7没有了,所以7是素数。那么,100以内,有几个素数呢?如果用我们pascal语言描述,如何描述判定一个数是不是素数。”
在课前,把录制好的微课视频放到qq群中,让学生观看学习后,完成以下问题:第一素数有什么特点?第二,用我们学的pascal语言如何描述这个特点?提示:如何求约数,如何统计约数个数,并上机实践。
笔者班上有35位学生,35位学生都找到素质的特点:除了1和本身以外没有其他约数;有20位学生可以写出:for i:=2 to n-1 do if n mod i=0 then s:=s+1;最后s=0 这个数就是素数。其中有学生给出不同的方法 for i:=1 to n do if n mod i=0 then s:=s+1;最后s=2 这个数就是素数。还有学生描述for i:=2 to n div 2 do if n mod i=0 then s:=s+1;最后s=0 这个数就是素数。
学生通过课前自学微课,明确这节课要学习的知识,基础好的学生已经把如何判定一个数是素数的任务完成,由于程序不同、方法不同,导致运行的效率不同,学生有了提前预习,笔者很快导出本节课的几个学习知识点。教师也已经了解学情,什么是素数,如何用普通方法判定一个数是否是素数,已经被大部分学生掌握,本节课的教学重难点为,不同的方法提高程序运行效率——筛选法求素数。
提高课堂效率,突破难点知识
交流讨论,碰撞思维火花 有了课前自学微课视频后,课堂就被翻转了,笔者直接就收集学生的问题卡,根据收集到的问题卡,了解学情。首先讨论问题一,以上三种描述方法,是否可以确定这个数就是素质,教师上机验证后,发现程序没有问题。接着讨论第二个问题,n、n-1,和n div 2 哪个效率高?如果当n=100的时候,运行次数分别是100次,99次 和50次,那么效率是n div 2 效率是最高的,还有没有比这个方法效率更高的方法。虽然最后没有学生想出来 trunc(sqrt(n)),当n=100的时候,只要运行10次就可以判定他是不是素数,渗透知识点,素质的因子是成对出现的。但是令人欣喜的是,有孩子提出如果用上break语句,可以提前判定一个数不是素数,程序如下:for i:=2 to trunc(sqrt(n)) do if a mod i=0 then break;效率最高,适用范围较小。讨论问题三,寻找n以内的素数。方法一,在判定一个素数的基础上,加一个循环,程序如下:for i:=2 to n do;for i:=2 to trunc(sqrt(n)) do;begin if n mod i=0 then s:=s+1;if s=0 then write(i, );end。
用筛选法求素数
本节课的教学难点是方法二,用筛选法求素数。如果当n非常大,超过100000,甚至100000000的时候,用列举的方法求素数还是不现实,比赛的时候只能拿到部分分数。下面我们就来学习第二种求素质的方法,观看微课视频。
微课视频介绍:“同学们,下面我们一起来学习另一种高效的求素数方法,以n=100为例子,画出10×10的表格,全部填上1(除1以外),首先枚举出i:=2,如果一个数是2的倍数,它肯定不是素质,因为除了1和本身以为,它多了一个约数2,所以,可以把100以内,所有2的倍数全部标记为0。然后i:=i+1,当i=3的时候,同样的方法把3的倍数标记为0,以此类推。”
重点突破:剪枝提高效率。方法1、列举的范围为i:=2 to trunc(sqrt(n));方法2,如果已经被标记为0的数,可以直接跳过。这样可以提高效率,在n=100000000以内都不会超时,这就是列举求素数与筛选法求素数的最大不同。
复习微课,温故而知新
在接下去的30分钟中,首先要求学生上机编写穷举法求n以内的素数,完成后,继续编写用筛选法求素数的方法。由于学生的学习层次不同,一节课,能够完成两种方法求素数的学生只有5个,完成一种方法的有30个。那么在最后的十分时间内,我安排已经完成两种方法的学生,去帮助笔者辅导一种方法也没有完成的学生。一节课下来很多学生筛选法课堂内不能完成,那么利用qq,把自己编辑的程序,发送自己的对话框,把程序带回家里。笔者在qq群中,把自己编写、调试、运行筛选法的过程微课视频,放在群里,供学生回家学习参考。
课前,学生从了解什么是素数到学会编程求素數等简单的基础知识作为导学;课堂中,讨论如何提高求素数的效率,再利用微课,形象生动地学习用不同方法求素数;在课中、课后,学生遇到困难时,假若没有老师在旁边,就可以通过观看微课来学习,复习两种求素数的方法。
(作者单位:浙江省诸暨市暨阳街道浣纱小学)