王愛勝
項目學習在課外更容易開展,特別是制作類的課堂、研究型的活動等。但作為新課標主推的教學模式之一,項目學習進入課堂將是一種不得不面對的具有常態化的現象。為此,面向課堂開展項目學習,教師必須既要放手開拓,又要細致入微執行。之前,筆者進行過關于微項目的研究,提倡對大型項目進行分解,取出獨立性強且易課堂完成的項目實施階段的選題,不破壞項目學習的內涵,又豐富項目學習的外延,是一種可取的方式之一。但也有些教師會感覺微項目學習與任務驅動有些相似,極易作為單純的任務驅動。這里,筆者只是在實踐中探索微項目學習在課堂計劃、項目進程中的漸進性,方便大家深入觀察項目學習從規劃、設計到實施完成的特征,以便體會與任務驅動的相同與相異之處。無論是項目學習還是任務驅動,很多復雜設計都是可以分解出一定階段的。在每一個階段中,完成不同的目標,也就是完成了不同的階段性任務或者階段性項目學習的內容。對于一個大項目而言,每一個微項目無疑是該項目學習的漸進性承載。而在微項目內部,也可以通過階段設計來體現漸進性。例如,微項目“用計算機模擬拋硬幣,研究概率統計”的目的就是:用技術研究隨機現象,學習隨機函數的編程;發揮計算機的運算速度和自動化能力,大量模擬隨機統計隨機概率,熟練運用循環程序設計統計程序;同時,把概率統計與概率計算相區別,體會隨機的內涵特點以及應用數學模型研究的能力,增強學生的計算思維。
為了防止微項目與任務驅動的混淆,以下暫不使用“任務”名詞,而是結合研究需求使用問題“探究”來劃分微項目實施的階段。
● 項目引入
教師找幾個學生拋硬幣,讓大家記錄自己猜對正反面的次數,體驗隨機現象,引出如何用程序大量統計隨機數據。
探究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