萬詩強




如何在小學階段培養學生的計算思維,一直是信息技術教研活動中的熱門話題。編程教育也一直是培養學生計算思維的極佳方式。因此,小學階段的編程學習不應僅讓學生掌握編程技能,更應聚焦于培養學生的計算思維。這就要求教師在實際教學中圍繞計算思維的抽象、分解、建模、評估等內涵要素來設計教學,啟迪學生,從而讓計算思維的培養落到實處。筆者在一線教學中發現模塊化程序設計思想對培養學生計算思維的抽象、分解等內涵能力至關重要。下面,筆者以蘇科版小學五年級圖形化編程課為例,闡述如何在教學中滲透模塊化程序設計思想,深化學生的計算思維。
● 自頂向下,模塊化分解問題
制作游戲是小學階段圖形化編程的一種經典應用,也是學生非常感興趣的編程創作形式。一個游戲的制作往往需要實現很多復雜的功能,在實際教學中,如果在學生體驗完一個游戲后就要求他們制作,學生往往難以下手。究其原因,主要是學生面對復雜問題時,缺少自頂向下分解問題的能力,而這種能力正是計算思維內涵中“分解”的體現。學生的困境主要表現在兩個方面:一是編程前難以分清各子功能,理清各子功能之間的關系;二是編程時難以將子功能的自然語言表述“翻譯”成具體的編程腳本。針對第一個困境,教師可以借助模塊化程序設計思想來引導學生,將復雜問題分解為子問題;對于第二個困境,教師需要將子問題表述的“粒度”細分,分解到便于學生構建底層邏輯的程度,即幫助學生構建自然語言與編程指令之間的對應關系,然后再讓學生結合認知水平嘗試構建子模塊,解決子問題。
例如,在講授《吃豆子游戲》一課時,游戲中需要實現豆子從舞臺上方隨機掉落的功能,這樣的功能描述是比較籠統的。筆者首先引導學生將復雜的功能嘗試分解為兩大子功能,即①在舞臺上方隨機出現,②不停地下降;其次根據子功能的描述引導學生構建具體的子模塊腳本,利用移動坐標、隨機數控件實現第一個子功能;最后利用減小Y坐標、重復執行控件實現豆子下降(如圖1)。這樣自頂向下的引導,能讓學生體會到模塊化分解任務的優勢,體驗模塊化分解復雜問題、模塊化實現子功能的過程,這是對學生計算思維中“分解”內涵的一種培養。
● 重讀腳本,模塊化理解程序
課堂中,在學生完成某一部分任務的腳本編寫后,教師可以在適當的時機引導學生重讀腳本,在重讀過程中要經常提問學生對某一段程序的理解,如這個腳本片段實現了什么功能?誰能用自己的話概括一下這段腳本的作用?這樣的引導有助于學生從模塊化視角重讀腳本、理解程序,長此以往,學生眼中看到的就不再是一個個具體底層指令搭建成的腳本,而是基于模塊的腳本,每一個模塊就對應了之前分析的子功能,這也讓學生對程序腳本有了更加抽象化的認識。
例如,在講授《花朵繽紛》一課時,筆者發現很多學生缺乏對程序腳本模塊化的認識。如圖2所示,腳本1是利用圖章、旋轉以及重復5次完成的一朵五瓣花瓣的繪制,腳本2是升級功能時部分學生的錯誤腳本,筆者原本希望利用隨機數和移動坐標指令完成在舞臺上隨機開花的功能,但不少學生會把移動隨機位置指令放到重復5次里,這樣就破壞了原本的“開花”功能——整個花散開了。究其原因,是學生對重復5次的理解不夠模塊化、抽象化。隨后筆者調整教學設計,增加了引導學生重讀“重復5次”這段腳本的環節,讓學生用自己的語言概括這段重復5次的功能——印出一朵花。學生在這個過程中就有了對程序腳本模塊化的認識,在后續的功能升級中,就很少有“花開散”的現象出現了。
● 交流展評,模塊化評估功能
筆者提倡“自頂向下的問題模塊化”“重讀腳本的程序模塊化”是幫助學生構建程序設計模塊化思想的兩大引導策略,但并不意味著有了這兩種引導,學生便不再犯錯。在實際的教學中,如果學生編寫的程序還是存在模塊關系混淆等問題,就需要教師組織學生進行及時交流展評,逐一評估子功能。由于每一個子模塊都是實現某個子功能的,所以在評估功能時,要提供給學生模塊化思想。學生若能以模塊化的視角去審視腳本與子功能之間的關系,便能又一次加深對功能與腳本之間對應關系的認識,并養成“逐段”調試程序的習慣,也就進一步深化了計算思維。
例如,在《小貓出題》一課中,程序的功能比較清晰,經過適當的引導學生是能夠將“小貓出題”分解為“出題”“詢問”“判斷正誤”三個子功能的。如圖3腳本1所示,三段腳本是三個子功能的具體實現。但在實際教學中,筆者發現不少學生對三段腳本之間的邏輯關系的理解有些混亂,圖3腳本2是一位學生的典型錯誤腳本,該學生將“詢問”的指令放到了“出題”模塊中。這時,如果教師還是一味地從程序腳本視角講解邏輯關系,則很容易讓學生的理解更不清晰。既然如此,何不讓學生展示作品、相互評估功能呢?在展示過程中,學生會發現每次答題輸入正確答案后程序輸出卻顯示錯誤,筆者引導學生以模塊化的視角去審視腳本,依次評估功能,學生很快發現了加數2每次在用戶提交后會改變,進而發現腳本模塊之間的混亂問題。這時,筆者告訴學生,編程過程中出現問題很正常,關鍵是要學會將腳本與子功能對應起來,依次去評估功能是否正常。這樣,學生計算思維中的“評估”能力就得到了進一步的發展。
● 課例統整,模塊化重構作品
程序的模塊化不但能讓腳本便于閱讀、理解,還有利于腳本代碼的復用。這取決于學生對腳本抽象化理解的程度。學習程序設計是一個循序漸進的過程,在學習之初,學生能初步以模塊化視角理解程序便是打好了基礎;隨著學習的深入,在學生掌握“定義新積木”這一技能后,筆者認為有必要對學過的復雜腳本進行回顧、重構,這既有助于學生深化模塊化程序設計思想,也有助于學生今后在遇到相似問題時進行計算思維的建模。
例如,《畫城堡》一課的重點是學習新建積木塊和使用積木塊的作用,難點是理解積木塊的作用并在程序設計中靈活使用積木塊。在圖形化編程中定義積木塊是實現模塊化程序設計的一種有效方法,要想用好積木塊還得先理解模塊化的程序設計思想。筆者在講授完《畫城堡》一課后,安排了一節課例統整的練習課,首先帶領學生回顧《畫多邊形》一課中的拓展練習,如圖4腳本1所示,讓學生觀察圖形中有沒有重復出現的基本圖形、是否可以用新建積木塊來簡化原來的腳本。經過一番點撥后,大部分學生可以完成新建“畫正方形”積木塊來簡化腳本,實現積木塊的復用,如圖4腳本2所示。在這樣的腳本重構中,學生能夠進一步體會到“積木塊”在模塊化程序設計中的作用。在此基礎上,筆者還設計了幾組類似的“風車型”圖案,如圖4拓展圖形所示,大部分學生遇到相似問題很快識別出了基礎圖形,并著手創建基礎圖形的積木塊,在原有腳本基礎上稍作修改便完成了圖形的繪制。可見,這類問題在學生腦海中建立了模型,學生的計算思維也得到了進一步的深化。
● 結束語
隨著技術的不斷發展,編程語言、編程平臺會不斷更新,但思維層面的訓練是一脈相承的。模塊化程序設計思想是一種分而治之的解決問題之道,這種設計思想與計算思維的內涵能力培養有很密切的關聯性。而滲透模塊化程序設計思想的編程教學是從抽象到具體再到抽象的過程,具體講是從“問題的抽象認知”到“模塊的具體分解”再到“腳本的抽象理解”的過程。因此,在小學圖形化編程教學中滲透模塊化程序設計思想,有利于計算思維的培養在小學階段落地,使學生的計算思維走向深度化。
參考文獻:
[1]陳勇.打開技術“黑箱”,讓思維走向深刻——以“走進圖像識別”一課為例[J].中國信息技術教育,2021(09):48-50.
[2]謝忠新,曹楊璐.中小學信息技術學科學生計算思維培養的策略與方法[J].中國電化教育,2015(11):116-120.
[3]黃雨蓓.基于模塊化程序設計思想的Scratch教學實踐——以《花朵繽紛》一課為例[J].中國信息技術教育,2020(08):41-43.