劉軍 程展 中國人民大學附屬中學朝陽學校
魏書生曾說:“找到自己的20個長處,并看明白,想明白,說明白,寫明白,做明白……”作為初中信息科技教師,筆者深受啟發,編程教學何嘗不是如此:將每一個程序看明白、聽明白、想明白、說明白、寫明白、做明白……學生通過聽覺、視覺、動覺及觸覺等多感官獲取信息,多角度、多層面探究編程,理解編程,應用編程,讓編程教育充滿活力,提升編程教學的學習效率。
多讀、多看程序才能看明白程序中的數據、語法和算法可能出現的問題,這是學習編程的有效途徑。流程圖是學生進行程序表達的重要工具,多看流程圖可以有效培養學生的邏輯思維能力和問題解決能力;多讀優秀程序可以理清程序的設計思路,體會其中的邏輯關系,理解如何調用積木實現相應功能,從而提升編程水平;多讀程序中的問題,用多種方式發現問題,更能鍛煉提升學生的編程能力,使其體驗“山重水復疑無路,柳暗花明又一村”的快樂。
編程項目:太空垃圾是圍繞地球軌道的無用人造物體,由小到人造衛星碎片、漆片、粉塵,大到整個飛船殘骸構成。千萬別小看了這些零零碎碎的太空垃圾,據統計,與直徑大于10厘米的太空垃圾碰撞或可損毀航天器。而這些太空垃圾如果墜落地球將產生更大的危害。為了幫助大家認識太空垃圾的危害,請設計一個躲避太空垃圾的小游戲。
學生們編寫的程序出現了問題,血量到了設定值時程序也沒有執行相應動作。問題出在哪里?這就需要回讀程序,查找BUG。學生經過檢查發現,判斷語句“如果……那么……”中的血量是輸入的漢字,而不是引用的變量。在課堂上,編寫程序經常會出現各種各樣的問題和錯誤,教師可將此轉化為生成性教學資源,讓學生自我診斷、相互學習,以引導學生逐步形成嚴謹全面的思維習慣。
思考是思維的一種探索活動,思考力則是在思維過程中產生的一種具有積極性和創造性的作用力。思考是學習、做事的核心和主導,更是分析問題、解決問題的關鍵,對學習編程起主要作用。在編程中多思考,一是思考程序的設計思想、編寫流程,理解編程的計算思維;二是思考解決問題的方法和步驟,及相應功能和效果實現的策略,理解算法是編程的核心,是解決問題的關鍵;三是思考分析問題程序,解決問題,讓程序順利執行;四是思考優化完善程序,還包括多問為什么,因為問題是思考的發端,也是思考的延續,沒有問題就不會有思考,要不斷發現、提出問題,培養問題意識,問題越多、越有質量,思考就會越深,就更能發展計算思維,思維能力是學習能力的核心,也是中小學編程教育的重要目標。
編程項目:小明的奶奶有一個密碼箱,箱子里放著奶奶最愛的首飾。今天是爺爺奶奶的結婚紀念日,奶奶想拿出首飾,可怎么也想不起箱子的密碼。小明的媽媽記得密碼是三位數的回文數(正讀反讀都一樣的數叫做回文數,如121、232、343),且個位、十位、百位的乘積是252,請幫小明編程計算出這個密碼是多少。
“密碼是多少”這個問題提出來了,怎么解決呢?有的學生會說用枚舉法,但不是所有學生都知道這種算法,繼續提問:什么是枚舉法?如何列舉出所有可能的密碼并一一驗證呢?……還有繼續追問的問題串:枚舉對象是什么?枚舉范圍是什么?驗證條件是什么?首先引導學生畫出個位、十位、百位逐一驗證的算法流程圖。根據流程圖,繼而提出拓展問題:程序還能優化嗎?有問題,就會有思考;只要思考,就會有發現;有創新,就會產生智慧的火花。例如,個位和百位一樣,只需要枚舉個位和十位就行了,于是產生了優化后的算法流程圖。
建構主義倡導知識的自我建構,提倡做學習的主人,將學習的主導權還給學習者。在編程學習中,應鼓勵學生大膽發言,讓學生交流、展示、評價、討論甚至辯論,多動口,說明白編程作品與思想的得、程序問題與困難的失。在這個過程中,學生鍛煉了語言表達能力,主動建構了知識體系,體驗了編程獲得感。
不同學生的認知水平、學習能力、思維方式不同,因此需要展示、交流、評價。在展示編程作品過程中,展示的學生先要述說編程的設計思想、策略,再展示腳本,逐一說明用什么算法、結構、模塊、函數、語句,怎樣實現相應功能,這樣便于理清思路,編織知識網絡。在討論、辯論中,頭腦風暴的方式使得不同的思想和方法高效碰撞,激發出的思想更加豐富、跳躍,產生的方法更加多樣、新奇,在這個過程中學生面對困惑、直擊問題,研判、選擇解決方法,思維走向深入。評價是一個肯定、否定,甚至是批判的環節,學生在評價中汲取方法,優化代碼、優化功能、優化架構,這個過程需要充分發揮批判性思維能力,批判性思維是創新的發端和動力源,從而激發起更強烈的學習追求。
紙上得來終覺淺,絕知此事要躬行。程序設計的知識、能力來源于編程實踐,還要回到實踐中去才能有價值實現、淬煉提升。在編程教學中,教師應多從趣味性、生活性、互動性、挑戰性、開放性幾個方面設計活動,采取玩中學、學中探、探中創形式,讓學生愛上編程,體驗編程之美。
編程項目:假如你手里有一張A4的白紙,把它一次次反復對折起來,最多能折疊多少次?能把這張紙疊多高呢?可以肯定的是,折疊的次數最多不會超過30次,這是為什么呢?假設這張白紙的厚度為0.1毫米,對折30次后的總高度是多少?比珠穆朗瑪峰(約8848米)還要高;如果繼續對折下去,對折42次的時候,厚度可達43萬公里,比月球到地球的距離(38萬公里)還要多出5萬公里!
趣味性和挑戰性的例子有很多,如棋盤麥子、漢諾塔等;真實性、生活性的例子也很多,如入校測體溫等。通過編程項目的設計,可以持續調動學生學習的動機,滿足學生的需求,讓學生熱衷于做自己探究的程序。
荀子曰:“君子之學,入乎耳,箸乎心,布乎四體,形乎動靜。”在編程教學中,要讓學生動耳、動眼、動腦、動口、動手甚至動身體,多感官沉浸于編程學習活動中,培養學生的編程能力,提升其計算思維,培養學生的創新能力、實踐精神和未來學習生活發展能力,從而使他們能融入數字社會,擁抱智能時代,用智慧引領未來,用智能改變世界。