【摘要】國家規定實施全民智能教育項目,在中小學階段設置人工智能相關課程。小學信息技術課程的拓展教學是一個很好的平臺,編程離不開數學原理的支持。在小學程序教學的啟蒙階段,利用孩子已有的知識建構算法模型,將復雜的數學邏輯問題在計算機上用程序來解決,使冰冷的程序代碼變得有活力和生命力,讓孩子們輕松愉快地學習。
【關鍵詞】Pascal;程序設計;算法;拓展課程;整合
信息技術課是小學生的一門拓展課程,在小學六年級開始涉及Scratch趣味編程。國務院《新一代人工智能發展規劃》 〔2017〕35號中提到,要開發基于大數據智能的在線學習教育平臺,還提出要完善人工智能領域學科布局,設立人工智能專業等。《規劃》還建議“ 實施全民智能教育項目,在中小學階段設置人工智能相關課程,逐步推廣編程教育,鼓勵社會力量參與寓教于樂的編程教學軟件、游戲的開發和推廣”。所以,中小學編程教育或將成為國家戰略。
人工智能行業的進步使得編程教育越發重要。小學階段的信息技術課主要是office辦公軟件,對于大部分學生來說學習比較枯燥,對于小學生來說實用性也不強。如何利用信息技術課程的優勢讓學生快樂學習,如何抓住小學生正處于學習能力、記性能力很強的特殊時期,筆者先后開展了網頁設計、動畫設計、小報設計等拓展課程,雖有一定的教學效果,但學生的學習興趣不能保持。在學習Scratch時,積木式的程序設計將指令方塊進行組合來創作出多媒體程序、互動游戲、動畫故事等作品,孩子對程序設計產生的效果十分感興趣。筆者先后進行了VBS、asp、Pascal、C++等程序設計拓展課程的教學,而程序算法的學習與積累對于孩子解決數學問題的思路大有幫助。現針對Pascal拓展課程教學中的點滴經驗總結如下。
程序實際上是求解某個問題的過程,這個過程也可看作是設計算法到實現算法的過程,因此可以看出編程離不開數學原理的支持,沒有良好的數學思維就很難編寫出高質量的程序。信息技術Pascal拓展課程可以很好地將小學數學的系統知識與編程完美結合,因此要求學習Pascal程序的學生必須是小學高段的學生,必須對小學數學知識有較好的掌握。筆者在近幾年的輔導過程中,將程序練習題和數學題目進行了仔細分析,并將其轉化為Pascal程序能編出的程序,計算機運行后快速產生答案,使學生既鍛煉了程序設計的技巧,又掌握了數學解決問題的算法。
信息技術拓展課程和數學拓展課程相結合,互相補充,通過初步篩選,選擇優秀的學生成立興趣小組,利用課余時間和QQ群,在校期間進行集中小班化培訓輔導,節假日時間開展網絡一對一的培優訓練。孩子們發現編程是一種有意思的事,玩電腦與學數學同樣有趣,同樣有條理,同樣邏輯嚴密,同樣具有挑戰性和創造性。學生有了雙重的基礎,有了學習的興趣,教師教學起來輕松了,效率高了。
程序在解決一個具體問題時,一般需要經過以下步驟:首先要從具體問題中抽象出一個合適的數學模型,然后設計一個解決此數學模型的算法,最后編出程序,進行測試,調整,直至得到最終解答,實現從實際問題到具體計算機內部運行的過渡。與算法有關的一個公式是“程序=算法+數據結構”,它表達了算法與程序的密切相關性。
例如小學數學中與長方體有關的計算公式,就可以利用程序設計一個模型(相當于公式計算器),只要輸入長、寬、高三個變量,程序就能快速計算出長方體的總棱長、表面積和體積。短短幾行程序代碼,就能把需要進行公式計算的數學題目快速準確地計算出來,這使學生學習電腦的興趣大大增強,又有助于學生記憶各種數學公式。
對有規律的算式進行解題最主要的就是發現規律,按照規律進行解題。特別是他們通過自己的努力發現了算式背后的秘密和規律后,會非常興奮和開心,就像吃了蜜糖一樣,那種成功的喜悅和自豪感非常強。不過在此過程中,教師仍需要不斷地激發孩子探索的欲望和提醒孩子保持認真的探索態度,一定要給予學生充足的時間和探討的空間,相信孩子一定能發現規律,當孩子遇到困難時,要及時地給予指導和鼓勵。這樣,學生才能嘗到探索的甜頭,產生探索的興趣。
許多復雜的數學原理和大量的數學計算將轉化為簡單的、易于操作的程序結構。而編程的目的也就是使用某種程序設計語言編寫程序代碼,進而借助計算機運行來達到某一目的或解決某個問題,并最終得到結果。所以,我們在教學算法時,要結合學生已有的數學知識基礎,全面分析問題,建立一個合理的模型,再選擇或針對具體問題設計算法,最后進行編程。
中國科學院院士李大潛講道:“掌握了數學的思想方法和精神實質,就可以由不多的幾個公式演繹出千變萬化的生動結論,顯示出無窮無盡的威力。”在教學的過程中,讓學生理解和掌握基本的數學知識與技能,體會和運用數學思想方法,獲得基本的數學活動經驗。程序教學也是一樣,有些題目大家可能會選擇枚舉、搜索等時間復雜度較高的算法,而恰當地加入數學思想可以優化算法,從而降低時間復雜度。
數學思想本質上有三個:第一個是抽象,第二個是推理,第三個是模型。這與信息技術程序設計是不謀而合的,例如小學數學的有序思維、數形結合、轉化等數學思想,在程序設計中我們可以這么處理,比如利用Pascal程序設計一個冒泡排序,就是一個有序的數學思維,需要拿出一個元素進行比對,實現元素間的有序排列。
應用計算機的核心是軟件的使用,而軟件的核心就是程序設計,程序的核心就是算法的運用。所以模型建立是軟件編程的基礎,數學建模是聯系數學與計算機處理實際問題的橋梁。
通過對程序算法的梳理,我最直觀的感覺就是程序設計就是換一種形式在玩數學。復雜的數學邏輯問題,利用共同的模式、算法、原理、思想在計算機上用程序解決問題的過程中,程序的編寫需要很強的邏輯性,所以一個數學基本功好的學生,寫程序就顯得很輕松,只要能夠將數學邏輯轉化為機器語言就能夠輕松地解決問題。另外,代碼的優化過程也是很重要的,雖然在編寫代碼過程中我們看到的只是程序的運行時間,但將一個大的程序運用到實際的生產生活中時,算法的執行效率直接決定了生產效率。所以說隨著信息技術學科的發展,尤其是程序教學與數學知識是息息相關的,我們應該將數學的相關知識與程序教學進行必要的整合,學習程序設計必須要有過硬的數學知識做基礎,將數學里的知識原理、思想概念融合在程序教學中,使冰冷的程序代碼變得有活力和生命力,讓孩子們在代碼的世界里輕松、愉快地學習,這會讓他們受益終生。
[1]鄭啟華.PASCAL程序設計[M].北京:清華大學出版社,2003.
[2]小學信息化技術[M].上海:華東師范大學出版社,2015.