王爱胜
项目学习在课外更容易开展,特别是制作类的课堂、研究型的活动等。但作为新课标主推的教学模式之一,项目学习进入课堂将是一种不得不面对的具有常态化的现象。为此,面向课堂开展项目学习,教师必须既要放手开拓,又要细致入微执行。之前,笔者进行过关于微项目的研究,提倡对大型项目进行分解,取出独立性强且易课堂完成的项目实施阶段的选题,不破坏项目学习的内涵,又丰富项目学习的外延,是一种可取的方式之一。但也有些教师会感觉微项目学习与任务驱动有些相似,极易作为单纯的任务驱动。这里,笔者只是在实践中探索微项目学习在课堂计划、项目进程中的渐进性,方便大家深入观察项目学习从规划、设计到实施完成的特征,以便体会与任务驱动的相同与相异之处。无论是项目学习还是任务驱动,很多复杂设计都是可以分解出一定阶段的。在每一个阶段中,完成不同的目标,也就是完成了不同的阶段性任务或者阶段性项目学习的内容。对于一个大项目而言,每一个微项目无疑是该项目学习的渐进性承载。而在微项目内部,也可以通过阶段设计来体现渐进性。例如,微项目“用计算机模拟抛硬币,研究概率统计”的目的就是:用技术研究随机现象,学习随机函数的编程;发挥计算机的运算速度和自动化能力,大量模拟随机统计随机概率,熟练运用循环程序设计统计程序;同时,把概率统计与概率计算相区别,体会随机的内涵特点以及应用数学模型研究的能力,增强学生的计算思维。
为了防止微项目与任务驱动的混淆,以下暂不使用“任务”名词,而是结合研究需求使用问题“探究”来划分微项目实施的阶段。
● 项目引入
教师找几个学生抛硬币,让大家记录自己猜对正反面的次数,体验随机现象,引出如何用程序大量统计随机数据。
探究1:模拟抛硬币的“随机”现象
界面元素:建议用一个标签框,用来显示“正面0”“反面1”。一个按钮来执行“抛”的事件。
设计原理:应用随机函数Rnd,用数值对应硬币两面,形成基本数学模型。
设计策略:
①利用随机函数Rnd产生一个[0,1)区间的随机数;
②通过Rnd*2的方式获得更大区间[0,2)的随机数值;
③利用Int取整函数,获得0与1。
代码设计:
Private Sub Command1_Click()
Randomize
x = Int(Rnd * 2)
If x = 0 Then
Label1.Caption = "正面"+ Str(x)
Else
Label1.Caption = "反面" +Str(x)
End If
End Sub
本次探究只是模拟一次随机结果,这主要是体验随机值,因为数量少是不能体会到随机效果的。因此,需要继续进行随机探究,程序不断深化设计,但以后的过程不宜再具体给出全面代码,只建议提供方案代码。
探究2:如何记录抛硬币的次数
界面元素:增加一个标签框,用来显示抛的次数,如“5”。
设计原理:Label的Caption可以使用数值相加。
设计策略:预设Labe2.Caption为0,每次+1。
代码设计:
Label2.Caption=Label2.Caption+1
本次探究,实现了每按一次按钮,就激发一次随机,每次都增加抛的次数。而如果要统计抛的结果,就需要每次判断并记录随机结果是正面的次数。以此类推,可进行记录结果是反面的次数。
探究3:如何记录正面、反面次數
界面元素:增加两个标签框,用来显示0、1出现次数。
分层学习可拓展到再另用三个标签框说明各项记录的名称。
设计原理:不同判断结果后累加计数。
设计策略:Labe3.Caption为0,Labe4.Caption为0,每次在不同的判断后+1。
代码设计:
思考以下两行代码,应放置在哪一个判断之下。
Label3.Caption=Label3.Caption+1
Label4.Caption=Label4.Caption+1
本次探究实现了每按一次按钮,就激发一次随机,每次记录随机的正面、反面。但是仍然无法方便地进行海量统计,发挥计算机自动化、高速运算的特点,是上一节课学习过的循环结构的应用。
探究4:想一次统计1000次抛硬币的正面、反面次数,要如何做
界面元素:界面元素不变。
可拓展到增加文本输入框,即时输入抛的次数,并用Val(Text1.Text)转化为数值,作为循环终值。
设计原理:使用循环结构程序,进行海量统计。
For i=1 to 1000
循环体
Next i
设计策略:完整的一次模拟抛的事件作为循环体。
可拓展优化设计,使用循环变量记录总次数,使用总次数-正面次数获得反面次数,此项思路变化大,不作要求。
代码设计。
根据以上程序,讨论完成一次随机及其判断的整体代码模块是什么,由此探索循环结构的头、尾程序行的位置应是怎样的。
● 项目交流
在项目交流中,学生要注重程序设计、运行结果、问题探究等方面的内容,通过交流会发现前两方面并非难点。
由于数学基础的问题,高中生对概率计算与统计没有认识,正好通过这样的学习来引导学生深入探索概率、随机等问题。学生统计的是基于现实的模拟,而数学计算是基于理论的模型,是不一样的。
在模拟方面,有的学生提出,抛硬币会有第三种“侧立”的结果,计算机为什么模拟不出来?教师要引导学生从计算思维的角度考虑,数学模型是根据“体育开球比赛抛硬币的方式”只有两面设计的,电脑程序是根据数学模型设计的,并不会智能给出第三种情况。现实中,第三种的出现是抛在地面,受环境因素影响所致,这种现象如何模拟可以继续探索,这估计是专业级难题了。
下课之后,不少同学尤其是对编程不是特别关注而对随机概率问题非常关注的数学特长生追着讨论,笔者表示计算机中的随机还很不纯粹,希望他们能读一些笔者推荐的相关书籍,进行更深入的了解。
项目交流,让项目学习的滋味更加悠长!endprint