張漢城
計算思維是當今三大科學思維之一,在教學中的運用越來越受到教育單位的重視。雖然早已存在,但其被廣泛認同的定義直到2006年3月才被周以真教授提出:計算思維是運用計算機科學的基礎概念進行問題求解、系統設計,以及人類行為理解等涵蓋計算機科學之廣度的一系列思維活動。在編程教學中重視計算思維培養,可提高學生分析問題和解決問題的能力。
Scratch是一款由麻省理工學院(MIT)設計開發的少兒編程工具,筆者結合Scratch的教學,談談如何培養計算思維中常見的約簡思維、轉化思維和啟發思維。
一、建構模型,培養約簡思維
計算思維的目的在于解決問題,而解決問題的起點在于確定問題。在編程教學中,問題的確定往往是通過建構模型的方式實現的,即把自然語言描述的問題變成計算機能夠處理的模型。這一過程具有很強的抽象性,更要求教師注重約簡思維的滲透,將易于理解的生活情境置于導入環節,借助學習單讓學生建構出問題模型。
對Scratch而言,授課對象為8~16歲的學生。根據此年齡段學生的認知能力特點,將程序設計的學習置于學生熟悉的生活情境,不但有助于激發學生學習興趣,而且更易于讓學生明確學習任務,并得到情感、態度與價值觀的升華。如,《玩轉賽道小車》課始,在觀看世界級的四驅車大賽視頻之后,筆者讓學生結合玩四驅車的經歷,談談四驅車在賽道中行駛的特點,了解編程參照對象運動特點,初步掃清思維障礙;然后,匯總小車智能行駛必須解決的問題,明確學習任務,并讓學生意識到本課不僅是在學習Scratch程序的設計,還在參與現實社會熱點問題——智能行駛汽車的設計研究,瞬間使學生對問題的解決變得更加期待,為學生約簡思維的培養營造了良好的氛圍。
明確學習任務后,還需要幫助學生將學習任務細化成能夠運用計算機求解的模型。筆者為此設計了一種適合兒童約簡思維訓練的學習單,將學習任務進一步細化,分析任務中涉及哪些對象、每個對象包含哪些動作效果,進而建構出計算機能夠解決的模型。在動作效果分析中,還注重學生自然語言描述的規范性訓練,強化對循環、選擇和順序三種算法控制結構的認識。借此學習單,學生思維逐步理順,需要完成的每步操作更加清晰,約簡思維自然得到很好的培養。
二、化難為易,培養轉化思維
計算思維的本質是抽象和自動化。學生在明白“做什么”之后,還需要讓計算機知道“怎么做”。為此,如何把一個看起來困難的問題重新闡述成一個我們知道怎樣解決的問題,就是轉化思維的培養重點。可以通過聚焦指令、代入角色等方式,將復雜問題各個擊破,從而使之轉化為能夠用計算機處理的形式。
編程教學中,對新指令塊的學習理解屬于教學重點。如果讓學生聚焦新指令塊的使用環境,以提問方式逐步引導,直至其發現相關指令塊,在體驗轉化的過程中掌握使用要點,就可以讓學生學得更深入、理解更透徹。如,小車在賽道中智能行駛,關鍵要借助“顏色……碰到顏色……”指令塊實現判斷。筆者讓學生關注賽道背景圖并進行思考:①觀察封閉賽道,以及賽道外側背景和內側背景的顏色;②判斷小車需要返回賽道的情況;③找找能讓小車判斷該返回賽道的指令塊。這樣指引學生抽絲剝繭般將小車需要返回賽道前的判斷轉化為左前輪碰到賽道外側顏色、右前輪碰到賽道內側顏色兩種狀態,并發現實現此判斷的程序指令塊——偵測類別中的“顏色……碰到顏色……”。通過聚焦指令,形象的表達轉化為抽象的指令塊,思維的難度得到降低,轉化思維培養更顯成效。
編程教學中,學生要學會賦予計算機中的角色一定的程序,讓它們按照要求動起來。如果角色動作較為簡單,學生編程時就得心應手;而如果角色動作較為復雜,學生編程時就常抓耳撓腮。但是,如果引導學生把自己想象成Scratch編程中的角色,按照問題要求進行運動,往往會有意想不到的收獲。如,在教學小車該往哪個方向旋轉時,筆者請三位學生到講臺前,左右兩邊的學生分別扮演賽道外側、賽道內側,中間的學生扮演小車,并按照前進方向兩手分別扮演小車的左、右前輪。當筆者說出“當左前輪碰上賽道外側背景的白色”時,扮演小車的學生做出向扮演賽道外側背景學生傾斜的動作。筆者順勢提問:“小車該向哪個方向旋轉呢?”全班學生馬上知道要向相反方向旋轉,“向右旋轉……度”指令塊就水到渠成了。通過這樣的方法,學生體驗得到增強,思維也順利實現轉化訓練,難點便不攻自破了。
三、糾錯優化,培養啟發思維
編程教學中,隨著腳本搭建的完成,檢查程序運行能否與預期情況一致便提上日程,糾錯與優化就成為主旋律。在這不確定性因素很多的階段,學生將面臨更大挑戰。為此,要注重啟發思維訓練,引導學生聯想、領悟,讓啟發思維成為一種常態。
當腳本運行結果與預期情況不相符時,糾錯便開始了。由于Scratch軟件的特點,出現的錯誤往往是更具隱蔽性的邏輯錯誤。因此,筆者采取“大膽假設→小心求證”的啟發思維訓練模式:“大膽假設”指針對程序調試中觀察到的非預期現象進行啟發,鼓勵學生勇敢地猜想可能產生問題的要素;“小心求證”指針對可能產生問題的要素進行啟發,引導學生在盡可能排除干擾的情況下逐步調試,逐個排除懷疑對象,直至程序調試成功。如,針對小車沖出賽道這個常見錯誤,學生猜測是由車速過快、旋轉方向錯誤、旋轉角度不合理等因素引起的,并進行逐個求證。在“車速過快”的求證中,學生將“移動……步”指令塊的參數調成“1”,發現小車慢悠悠地在賽道中智能行駛,糾錯過程順利完成。在糾錯調試的過程中,學生再次經歷問題解決的全過程,預設求證的啟發思維入腦入心。
腳本能夠按照預期情況執行,代表問題得到了解決,但并不代表計算思維培養的結束。此時,筆者從程序是否最簡潔、執行效果是否最合理、能否進行再創作等角度讓學生放飛思維,在對程序進行優化提升的過程中達到啟發思維的再訓練。如:學生發現,緊隨旋轉指令塊后面的“移動……步”指令塊不是必須的,一下子就減少了兩個指令塊的使用,使程序變得更加簡潔;學生也發現,通過改變旋轉的角度和移動的步數兩個參數,小車運行速度會出現差別;一部分同學甚至開始設計更復雜的賽道來挑戰自己的編程能力。整個階段,學生思維得到有效發散,程序的優化提升更具條理性。
利用編程教學培養學生的計算思維,并非一朝一夕可以達成。但在小學階段充分利用Scratch編程教學,合理滲透約簡、轉化、啟發等計算思維的培養,能為提高學生今后學習、生活中的問題解決能力打下良好的基礎,從而使之成為合格的數字化公民。
(作者單位:福建省廈門市集美區內林小學?搖?搖?搖責任編輯:莊嚴?搖?搖?搖黃曉夏)