陳漫

一、問題的提出
學生編寫程序的能力和編程思維的培養是信息技術課教學的核心內容之一??梢哉f,信息社會的快速發展,就是完全依賴于浩如煙海的程序和眾多的程序員。但是,編程思維非常抽象,邏輯性非常強,而且編寫程序又是學生非常難以接觸到的領域。所以,不管是外國,還是中國,都有許多教育專家在想方設法讓中小學生能夠在課堂上培養編程思維和進行編寫程序的訓練。
二、智能機器人教學
直到最近幾年,我開始進行智能機器人的教學試點,逐漸開展智能機器人的課堂教學,我發現智能機器人的圖形化編程打開了一扇通往學生編程思維和編程能力的大門。
智能機器人編程軟件的圖形化界面,模塊化的程序,簡單的中文注釋,還有學生最喜歡的模擬仿真環境,這些機器人編程的要素都極大地降低了學生編寫程序的難度,為培養學生的編程思維提供了條件。
三、在機器人教學中培養學生編程思維
1.學生編寫程序畫出六邊形和八邊形
這一課,學生正在為六邊形和八邊形一條長長的程序而頭疼不已。突然間,老師示范了一種更加簡便和有效的編程方法,只用了3個程序,就可以畫出六邊形、八邊形,甚至十六邊形、三十二邊形。學生的印象非常深刻,立刻就接受了編程思維中的循環概念,而且體會到了循環語句帶來的簡便。
2.編寫巡邏機器人程序和走迷宮
這一課的巡邏機器人的程序用到了傳感器。教學中,在多次循環程序的基礎上,引出了“永久循環”程序。又利用人的眼睛、鼻子做例子,引入了條件判斷、“是的行動”和“否的行動”。在編寫程序中,又提出了“條件判斷表達式”。
在機器人的圖形化編程環境中,這個程序呈現出一個非常穩定的三角形結構,讓學生直觀地體會到了結構性編程的穩定和牢固。小學生的形象化思維是比較強的,這個三角形穩定結構的巡邏機器人程序,更加容易被中小學生所接受。一定會對學生長大后學習編寫程序起到非常有益的作用。
程序編寫完成后,還要在仿真模擬環境中畫迷宮測試程序。這項操作,其實就是未來的搭建程序測試環境。學生編完程序后,就拼命畫各種不同的迷宮讓機器人走,玩得不亦樂乎。編寫程序中的測試環境的搭建環節就自然而然地成為學生測試程序的最佳選擇。
3.編寫特殊傳感器——軌跡識別傳感器的程序
這一課要學習一個特殊的傳感器——軌跡識別傳感器,這種傳感器的程序打破了穩定的三角形結構,針對軌跡識別傳感器的不同狀態使用了3個條件判斷。
軌跡識別傳感器的程序不是C語言的結構性編程思維,而是C++和C#,以及JAVA的面向對象的編程思維。
面向對象的編程思維是編程思維的飛躍式發展,可以使程序更加靈活,適應性更廣,可以完成更加復雜的任務。面向對象的編程思維才可以適應現在復雜多變的信息社會和多種多樣的智能設備。
4.編寫音樂的程序
這一課的學習就比較輕松,我把學生比較熟悉的兒歌簡譜發給學生,讓學生嘗試編寫,并在模擬仿真環境中進行演奏。學生都玩得特別高興,會樂器的學生還編出了比較復雜的曲子。大部分學生都編出了簡單的曲子,還有學生自己創作了自己的曲子,不斷找同學試聽。
準確來說,這一課中的音樂程序,屬于面向對象的編程思維中的接口程序。因為不管是在過程性編程的匯編語言里,還是在結構性編程的C語言里,都可以編寫音樂程序。但是都沒有在面向對象編程的C++、C#、JAVA語言里,那么方便和簡單。
四、教學的感悟
經過一個學期的學習,由淺入深,由簡單到復雜,學生的編程思維和編程能力得到了系統的鍛煉和提高。
從程序的簡單排列和重復;到程序參數的調節和精確調節;從循環語句到條件語句的學習;從結構化編程到面向對象的編程;從程序的接口到復雜程序的嵌套。學生在學習中都接觸到了,并且能夠編出相關的程序,而且在模擬仿真中真切體會到了程序的運行。
五、學生編程能力對比
我在2個學期后進行了PClogo編程和機器人編程的對比測評。測評班級的學生都學過PClogo編程和機器人編程。測評任務是編寫程序畫出一個正方形。
測評結果是:
使用PClogo編程序畫正方形——無一人完成(如圖)。
使用機器人編程序畫出正方形——全部完成(如圖)。
對比測評結果非常懸殊,說明了教學效果有明顯差別。這一測評結果證明了機器人編程對學生的編程能力和編程思維有著非常巨大的幫助。
在PClogo編程中,即使有個別學生記得怎樣編程,但是也因為忘記相關程序語句而無法完成編程。而在這一方面,機器人編程占據了先天的優勢。學生只要用鼠標選取合適的模塊和程序,就基本完成了編程,不需要記憶相關的程序語句。
在對比測評中,全部完成畫正方形程序的學生中,大概有三分之一的學生使用了循環語句來完成畫出正方形的程序。這就證明了這部分學生的編程思維已經擺脫了簡單排列組合而進入了更高的層次。這就更加證明了一個更好的教學方式,一個更好的教學環境所引發的巨大進步。
這些具備初步編程思維和編程能力的學生長大以后,就會非常自然地把編程思維和編程能力運用到自己的生活和工作中。那么,學校中的教育教學才真正具有促進社會發展的意義。
編輯 李博寧endprint