浙江省杭州市清泰實驗學校 陳 曉
算法思想是指按照一定的步驟去解決某個問題的程序化思想,即解決問題的一般方法,如界定問題、抽象特征、建立模型、判斷分析、設計問題的解決方案。具備算法思想的學生能從復雜混亂的現象中跳脫出來,對過程與方法進行總結,并進行遷移。因此,激發學生對算法思想建構的興趣和意識,對他們后續發展有著重要的意義。
STEM 學習強調融合多學科知識去解決真實的問題。筆者在實踐中引入虛擬機器人(以IRobotQ為例)和Scratch 這兩塊具有趣味性、跨學科性、協作性等STEM理念的內容,再結合浙教版教材的程序設計模塊,總結出了“鼓勵直覺思考,呵護算法思想的火花;挖掘教材思想,建構解決問題的基本步驟;引導遷移學習,習得算法思想的利器”這三個層次來幫助學生構建算法思想,提升他們解決問題的能力。
直覺思考能快速產生靈感,主要依靠想象、猜測和洞察力等因素。諾貝爾獎獲得者馬克斯·玻恩曾說:“實驗物理的全部偉大發現,都是來源于一些人的直覺。”因此,直覺思考得到的方法和思路往往是有效的甚至是最佳的,也是具有創造性的。一般來說,知識經驗越豐富,直覺洞察力和判斷力就越強。因此,直覺思維是可以進行訓練和培養的。
1.提煉算法思想。教師提供隱含算法思想的項目,請學生以自然語言的形式直覺概括解決問題的思路。如虛擬機器人教學中,不同任務中都會包含行進任務,如走軌跡、高架、城市道路、迷宮、盤山公路等不同路況。
2.誘導算法思想。直覺的生成需要相關知識的積累和特定情境的激發。筆者通過提問、矛盾或失敗結果呈現等方法把學生表面、感性的“直覺”推向深入、理性和完善。如《神秘迷宮》項目,請學生把自己設想成機器人,閉眼沉浸在場景中思考走出迷宮的辦法。通過追問“迷宮深處四周可能都有墻,辨不清方向怎么辦?”他們恍然大悟:“始終沿墻走!”在“跟著感覺走”的過程中,他們的直覺思維得到了充分展現,在教師的誘導下得到了推進。這種模擬真實情景下的問題往往是未經洗凈熨平的原生態問題,解決思路也是開放多樣的,因此呵護、扶持他們直覺思考的積極性至關重要。
3.拓展算法思想。將不同任務離散再重組,提取隱含共同算法思想的子項進行拓展練習,既可鞏固強化,也能激發學生新的思考,不斷擴建他們原有的知識網絡。如“巡跡踢球”學會了走黑色軌跡后,嘗試應用到“跑道競速”和“汽車總動員”項目,三個任務中因軌跡線、邊界線和傳感器相對位置不同,或邊界線有連續性的差異,“始終走在路中間”這個基本的算法思想雖然可借鑒,但還不足以解決后兩者的問題,這時教師要適時介入引導學生重新審視,幫助他們搭建思維的“橋梁”,逐步開辟新思路。
浙教版《信息技術》對計算機解決問題的一般過程作了闡述,在課例安排時按任務分析、設計界面、編寫代碼、調試運行四步驟進行編排。教學時,注重教學內容這條明線的同時,鼓勵學生去發現、模仿、實踐教材安排所體現的思想方法暗線,幫助學生習得解決問題的基本方法與步驟。
1.問題分析。通讀審視問題,聚焦關鍵詞或特征,忽略無關信息,暫時隱藏細節,把問題簡單化、清晰化。
2.項目分解。將大項目分解成已有經驗可解決的單個小項目,逐步細化、模塊化,為結構化編程思想打下基礎。
3.算法設計。結合算法的基本要素進行設計:(1)數據對象的運算和操作;(2)算法的控制結構;(3)匹配教材中涉及的算法。編程涉及要素(1)時,關注運算符選取、格式書寫、邊界條件及取值范圍等內容,減少語法錯誤及嚴謹性問題;涉及要素(2)時,建議先畫流程圖,重點分析分支結構的判斷條件或循環結構的循環變量、循環條件,再選擇合適的結構;涉及要素(3)時,根據不同算法的特點和已有條件,逐個匹配和排除。教師提供如下表1,幫助學生搭建解決問題的思考支架。
案例一:求兩個數的最小公倍數。學生直覺思考后,易得出方法a:根據數學思路,最小公倍數肯定能被兩個數都整除,因此,從1開始每次循環增加1,往大找最小公倍數。
4.優化改進。進行頭腦風暴,集思廣益,在原有基礎上進行算法迭代,獲得思維進階。上述案例改進方法如下:方法b:最小公倍數肯定大于等于兩個數中的最大值,從最大值開始每次循環增加1,往上找最小公倍數,減少了循環次數,節約了執行時間。方法c:最小公倍數肯定大于等于兩個數中的最大值,并且一定是最大值的整數倍。因此,從最大值開始,每次循環按最大值的倍數增加,循環次數更少,時間更省,算法更優。
簡析:在教師引導下采用了問題分析、項目分解、算法設計、改進優化的四步操作法,深入探討了最小公倍數的問題,給學生示范了解決問題的一般方法和步驟。分析問題時,我們應聚焦關鍵詞,明確求解的問題。項目分解時,厘清公倍數的概念以及它們所隱含的條件,再把問題細化為:(1)如何驗證n是a和b兩數的倍數;(2)如何確定求得的n是所有公倍數中的最小的。算法設計時,應鼓勵學生用自然語言描述解決方案。自然語言是日常語言,使用熟練,排除了對編程語言不熟悉引起的干擾而回歸到解決問題本身,通過填寫表格來明確算法的基本要素,為后續編寫代碼做好鋪墊。
遷移學習是指用某個問題中獲取的知識和經驗去解決另一個不同但相關的問題,有歸納、類比、演繹等不同方法。筆者在教學中發現,用類比法來比較源問題與目標問題的異同,分析兩者的結構框架和相關特征,會因易于掌握而被學生接受。

表1“求兩個數的最小公倍數”算法設計
1.結構相似遷移。面臨新問題時,引導學生分析源和目標問題之間的結構異同,建立新舊問題之間的關聯,從而利用已知去解決未知。教材課后的習題,基本都是本課內容的鞏固性和拓展型練習,在結構上和例題有相似之處。使用這些練習時,教師可指導學生把練習和例題結合起來分析它們的相似性,從結構上進行類比遷移。


2.特征相似遷移。特征是指問題外表或形式上獨特的標識,比結構更易被發現,因此,學生更樂于利用特征相似性進行遷移學習。如“跑道競速”和“金字塔漫游”路面情況基本相同,都有兩條連續邊界線,只是路面顏色不同,因此,面臨“金字塔漫游”時,腦海中馬上會浮現已有的經驗,傳感器的選擇和安裝位置等方案的遷移也就水到渠成了。
經過教學實踐,筆者所帶學生在近三年的省、市、區各級的機器人、Scratch 編程比賽中有20 多人次獲獎,可見教師有意識地引導學生構建算法思想,對提升他們解決問題的能力有較明顯的效果。