黃雨蓓

在信息時代,計算思維正成為和讀、寫、算一樣的基本素養(yǎng),程序設計是計算思維形成的基礎。在中小學一線教學中,程序設計模塊的教學主要存在兩個問題——程序設計語言煩瑣和教學模式單調,這影響著學生的學習動機,繼而對認知效能產生負面作用。借助于基于“創(chuàng)作、分享”設計理念的Scratch教學,讓學生在玩中學,提升其學習技能,培養(yǎng)其算法思維、設計思維及創(chuàng)造性思維等,可以有效解決上述兩個問題。
蘇科版小學信息技術(五年級)教材中采用了Scratch 2.0版本,它將枯燥乏味的程序指令轉換成十種不同顏色的積木,包括動作、事件、外觀、控制、聲音、偵測、畫筆、運算符、數據、更多模塊等,學生只需通過鼠標拖拽,將對應的指令模塊移至腳本區(qū),便可在輕松的環(huán)境中實現掌握程序設計的思維和方法,并能利用它表達自己的思想和感情。下面,筆者以小學信息技術五年級Scratch模塊中的《花朵繽紛》一課為例,談一談如何在小學階段的Scratch學習中滲透模塊化程序設計思想。
問題分析,任務分解
分析問題就是分析用戶需要完成的任務是什么,用戶用它可以實現哪些功能,完成哪些操作,解決“做什么”的問題。在了解了程序設計的目的后,對想要實現的效果進行自頂向下的分析,將問題劃分為幾個部分,各個部分再進行細化,直到將它分解為可以通過具體的模塊來實現。像這樣以功能塊為單位進行設計的過程,實現其求解算法的方法就稱為模塊化。在分析過程中,教師需要引導學生探究如何分析問題、分解問題、分類項目,由大化小,由繁至簡,再分別進行分析和研究,并梳理出各模塊之間的邏輯關系。然后,再進行子任務分析,從點到面,逐步解決。在整體規(guī)劃的基礎上,教師需要引導學生對每一個子任務進行分析,弄清楚每個子任務的性質、對象之間的相互關系,對子任務中每個對象的造型、腳本、狀態(tài)逐個分析,再到對每句指令、參數、先后執(zhí)行順序進行分析與搭建。
本節(jié)課的導入環(huán)節(jié),教師先創(chuàng)設情境,播放色彩繽紛的花朵在舞臺綻放的動畫效果,給學生帶來美的感受,使學生帶著舒暢愉悅的心情進入學習狀態(tài)。接著,教師引導學生在欣賞動畫效果的同時思考如何實現五彩繽紛、花開滿園,對動畫實現過程進行分解。學生明確了任務,思考并討論,將整個動畫效果分解為五顏六色、花開滿園、花瓣生花、繪制花瓣。
案例呈現:
師:春天草木萌動,百草新生,草綠如茵,繁花似錦,請看動畫(播放五顏六色花開滿園的場景動畫)。看了這樣的場景,你們的心情有什么變化?
學生從中感受到場景的美,心情舒暢且愉悅。
師:同學們想不想在Scratch舞臺上實現這樣的場景呢?你們覺得在Scratch舞臺上實現五顏六色花開滿園的場景,需要哪些構成元素?
螺旋上升,認知分層
分解問題是將問題分解為若干相對簡單、清晰的小問題,使得任務更為明確具體。自頂向下,逐步求精,則是由問題到解答、由總體到局部、由一般到具體,逐步精化、具體化,補足細節(jié),直到所有層次上的問題均由實用程序來解決,就能設計出具有層次結構的程序。
學生通過問題分析后,對需要用到的控件有了初步的設想,然而控件之間的邏輯關系還需要進一步整理。通常我們采用流程圖的形式,為學生逐步從自然語言向抽象的程序設計語言過渡提供幫助,讓學生厘清搭建腳本時各個控件之間的關系,逐步形成整體圖示的概念。
在本節(jié)課中,五顏六色花開滿園的場景這個過程相對比較復雜,可以將動畫效果進行分解,逐步分解成四個部分(如下圖)。“五顏六色花開滿園”環(huán)節(jié)采用“將顏色特效增加”控件,解決了“花開滿園”環(huán)節(jié)的花朵顏色單一的問題;“花開滿園”環(huán)節(jié)采用了“隨機函數”(Scratch“運算”模塊中的“在-240到240間隨機選一個數”)解決了花朵只能在舞臺固定位置開放的問題;“一朵花開”環(huán)節(jié)采用“圖章”“右轉?度”“重復執(zhí)行?次”“清空”四個控件解決了角色的復制、旋轉以及程序執(zhí)行方式的變化。
個性策略,求解多途
在教學中,教師應盡量先讓學生厘清思路,知道整個問題被分成幾個程序模塊,怎樣實現每個模塊的功能,明白每個模塊之間的觸發(fā)關系,學生具備了模塊化程序設計思想,自己的學習才能更加合理高效。另外,在教學中教師可以引導學生將模塊化的小任務以及模塊之間的觸發(fā)條件轉化為流程圖,并可以讓他們嘗試完善或繪制流程圖,以此來進一步明晰思維。
然后,學生根據分解的模塊以及模塊之間的觸發(fā)條件,在Scratch中找到相對應的控件,再根據流程圖的邏輯結構,依托控件進行組合完成腳本的搭建。學生搭建腳本時才是學生真正動手操作編寫程序的階段,這也是學生將自己的思維進行不斷驗證的過程。在這一過程中如果遇到困難,可以參照分解出來的模塊以及模塊之間的觸發(fā)條件來搭建腳本,使得搭建腳本的過程更高效,問題得以解決。
在“一朵花”的功能模塊學習中,教師引導學生說出整個模塊腳本的實現是按照所需要的“圖章”“右轉?度”控件,并且根據執(zhí)行的邏輯順序完成這個功能模塊腳本的搭建。在之后的“花開滿園”“五顏六色花開滿園”模塊中,根據不同的場景要求,在原本的功能模塊基礎上增加觸發(fā)條件,并進行邏輯順序的調整,從而讓腳本豐滿起來,完成一個個功能模塊腳本的搭建,實現預期設想的動畫場景。
案例呈現:
師:“五顏六色花開滿園”場景是在“花開滿園”功能模塊的基礎上增加了“將顏色特效增加”功能來實現的;而“花開滿園”場景又是在“一朵花開”功能模塊增加了隨機函數“在-240到240之間隨機選一個數”來實現的;最后怎樣實現“一朵花開”呢?這又離不開基本圖形“一片花瓣”,在“一片花瓣”的基礎上增加“旋轉”和“圖章”功能就可以構成一朵花。
學生根據分解出來的這些功能模塊以及模塊之間的觸發(fā)關系找到相應的控件并搭建成完整的腳本。
調試完善,迭代優(yōu)化
對于程序設計來說,調試就是不斷修復錯誤完善程序的過程,它也是個循環(huán)往復的過程:編寫程序、測試、修復錯誤、再測試……直到程序正確運行。邏輯是程序的基礎,邏輯走不通的程序很快就能夠通過運行結果反饋出來。通過反復的練習和修正,可以不斷提升學生的邏輯思維能力。學生在完成腳本運行程序的時候,常常會發(fā)生各種各樣的問題。這時就需要回顧原本分解的功能模塊和腳本,檢測錯誤之處。
在“一片花瓣”怎么變成“一朵花”模塊,學生通過思考討論得出需要用到“右轉?度”“圖章”等控件,通過演示,學生發(fā)現只用一次“右轉?度”和“圖章”控件,花瓣只出現一片。這是程序中存在的不足,促使他們尋求新的解決方法并不斷地調試。
案例呈現:
師:(單擊小綠旗)花瓣向右旋轉多少度?(72度)第二片花瓣出現了,我們還需要增加第三片花瓣,怎么辦呢?
生:再單擊小綠旗。
師:第四片、第五片如何增加呢?
生:再接著單擊。
師:這個方法好嗎?有沒有更好的解決方法呢?
生:“重復?次”控件。
編程和下棋很類似,都是在既定規(guī)則下解決問題。規(guī)則并不復雜,卻能變化無窮。學生在編寫程序的時候,同樣的程序效果經常可以通過不同的方法來實現,這時就需要分析并選擇最優(yōu)的方案來完善程序。
在“一片花瓣”變成“一朵花”環(huán)節(jié),教師提出問題:“剛剛我們的腳本實現的是5片花瓣拼成一朵花,如果要實現8片花瓣拼成一朵花,應該怎么修改腳本呢?”
不管花瓣片數怎么變,若干片花瓣旋轉一圈形成一朵花這個規(guī)律是不變的,因此“花瓣片數”與“旋轉角度”的乘積始終是360度。也就是說,要想把花瓣片數改成8片,重復次數就為8,旋轉角度即為360度/8=45度。修改數值后運行腳本并觀察花朵形成的形態(tài)——花朵“形態(tài)美觀”即可。
在“花開滿園”環(huán)節(jié),在測試時發(fā)現,多個花朵總是會在同一個位置開放,這時先要對該現象進行原因分析,再思考解決方法。
案例呈現:
師:為什么多個花朵會在舞臺的同一位置開放呢?請同學們自學教材,并討論解決問題的方法。
生:(自學教材并討論)因為我們沒有給花朵在舞臺上設置移動的腳本。
師:應該使用哪一個對應的腳本呢?
生:隨機函數“在①到⑩間隨機選一個數”,將其中的數值修改為舞臺的坐標,并拖動到“移到x:0 y:0”控件的兩個數值框中,即“移動x:在-240到240間隨機選一個數 y:在-180到180間隨機選一個數”。
在“五顏六色花開滿園”環(huán)節(jié),花朵大小都是一樣的。
案例呈現:
師:五顏六色花開滿園,舞臺上開放的花朵大小一致,為了達到更逼真的效果,怎么實現花朵大小不一呢?
生:(思考并討論)控件“將角色大小增加”可以實現花朵大小不一。
學生運行腳本發(fā)現問題:花朵一直在變大。
師:怎么解決?
生:找到控件“將角色大小設定為固定值”,將其放在“重復執(zhí)行”之外,當腳本停止運行后,將角色大小設定為固定值。
生:還可以用“隨機函數”來解決。
小結與回顧
在Scratch模塊的學習中,以模塊化的程序設計思想引領,自頂向下分解任務,分而治之解決問題,調試、優(yōu)化腳本的程序設計流程,很好地鍛煉了學生的思維。在整個學習過程中,基礎知識的學習和基本能力的提高,與分析、思考、實踐整合在一起。通過這種積木式的腳本編寫與有效的信息表達和數字化創(chuàng)作,既培養(yǎng)了學生的算法思維,也進一步提高了學生的自我表達能力。通過對本案例的分析,可以明確如何在兒童編程軟件中進行模塊化設計的思想實踐,通過多種分層剖析,幫助學生形成有效的知識鏈接,最終提高計算思維能力。