李卓
在人人編程成為全球化趨勢的今天,我們?nèi)绾卫斫饩幊蹋孔鳛樵?979年就開設(shè)了編程課程的景山學(xué)校,四十年來一直在開設(shè)程序設(shè)計課程,即使在最困難的時候也沒有放棄?,F(xiàn)在看來,這種堅持正是一種對學(xué)科核心素養(yǎng)的堅持,是熱愛學(xué)科、熱愛事業(yè)的熱的綜合表現(xiàn)。
從2011年開始,程序教學(xué)慢慢成為各級各類信息技術(shù)公開課、競賽課的熱門選題。落實信息技術(shù)學(xué)科的核心育人價值,程序教學(xué)擔(dān)當著關(guān)鍵的角色。景山學(xué)校擁有全學(xué)段的教學(xué)體系,這為信息技術(shù)教學(xué)的連貫性提供了有利條件,下面,筆者結(jié)合景山學(xué)校的全學(xué)段信息技術(shù)教育談?wù)劤绦蚪虒W(xué)在信息技術(shù)學(xué)科的育人過程中的核心地位。
● 小學(xué)、初中、高中程序教學(xué)的教學(xué)內(nèi)容
在小學(xué)階段,我們發(fā)現(xiàn)Scratch作為一款圖形化編程工具,通過按照一定邏輯拼接程序模塊搭建程序結(jié)構(gòu),通過設(shè)置項參數(shù)完成游戲、動畫效果,讓學(xué)生玩中學(xué)、學(xué)中玩,使其樂在其中、興趣無窮。最重要的是通過這樣的程序設(shè)計課程的學(xué)習(xí),學(xué)生對編程世界充滿了學(xué)習(xí)欲望,產(chǎn)生了各種新奇的想法,制作了很多有創(chuàng)意、有想法的好作品,為中學(xué)的程序設(shè)計學(xué)習(xí)創(chuàng)造了非常好的學(xué)習(xí)條件,同時為思維發(fā)展打下了非常好的基礎(chǔ)。
初中階段我們選擇了VB程序設(shè)計語言作為學(xué)習(xí)平臺,VB擁有可視化窗口,學(xué)生可以輕松完成一些具有Windows視窗的程序,極大地增強了學(xué)生的學(xué)習(xí)興趣。同時,VB是通過編寫程序代碼來實現(xiàn)程序功能的,程序語法簡單,適合作為初中學(xué)生代碼學(xué)習(xí)的入門級語言,成功率高,使學(xué)生能夠比較容易完成程序編寫任務(wù),獲得成就感。學(xué)生在VB程序設(shè)計學(xué)習(xí)中體驗到從功能設(shè)計、界面制作到代碼編寫、調(diào)試運行等工程設(shè)計實施的完整過程,提高了分析問題、解決問題的能力。
高中階段我們根據(jù)教育部制定的課標要求,根據(jù)北京市東城區(qū)統(tǒng)一選擇的教材安排學(xué)習(xí)Python語言程序設(shè)計,除了國家、北京市、東城區(qū)的統(tǒng)一要求內(nèi)容外,北京景山學(xué)校根據(jù)學(xué)生能力情況為學(xué)生補充了Python游戲編程、開源硬件構(gòu)建信息系統(tǒng)的課程,與程序設(shè)計課相呼應(yīng)。
● 程序教學(xué)的典型案例
下面用三個典型的課例來簡要談一談如何通過程序教學(xué)的案例設(shè)計來落實信息技術(shù)學(xué)科的核心育人價值。
1.小學(xué)Scratch教學(xué)典型案例:彈球游戲
小學(xué)流程圖拼接程序設(shè)計課,訓(xùn)練學(xué)生邏輯思維、計算思維,培養(yǎng)學(xué)生愛思考、勤動手的習(xí)慣。例如,我們設(shè)計的《制作彈球游戲》一課(如下頁圖1),很多人都玩過彈球游戲,那是一款手眼協(xié)調(diào)訓(xùn)練的小游戲。學(xué)生拿到這個任務(wù)時興趣非常高,躍躍欲試想要自己親自設(shè)計并制作完成一個屬于自己的彈球游戲。任務(wù)布置之后需要分析并設(shè)計制作游戲:第一項——界面設(shè)計,學(xué)生繪制舞臺背景,鋪好地面,當球落到地面時可以判斷游戲失敗;第二項——繪制游戲角色(圓球和擋板)之后,還需要設(shè)計游戲的基本功能。
功能一:鼠標移動擋板。
擋板需要時刻移到鼠標的水平位置,而擋板的豎直位置始終不變。這需要學(xué)生掌握平面位置的相關(guān)知識,也就是對象的橫坐標x與縱坐標y,并且擋板需要不斷追隨鼠標的橫坐標,這需要用到循環(huán)(如圖2)。
功能二:圓球的反彈與落地。
當圓球碰到擋板時需要反彈出去,也就是圓球的運動方向需要改變,圓球以一個角度沖向擋板,碰到擋板后圓球需要以180度減去上次的角度的方向繼續(xù)運動。當圓球碰到地面則終止游戲,宣告失敗。在問題的分析與解決中學(xué)生體會了分支結(jié)構(gòu)也就是選擇結(jié)構(gòu)的流程,當然,在整個過程中游戲需要往復(fù)循環(huán)地進行判斷,程序模塊拼接如圖3所示。
基本功能完成后,我們鼓勵學(xué)生思考,為自己的彈球游戲添加創(chuàng)意功能,有些學(xué)生繪制了漂亮的游戲場景,有些學(xué)生添加了磚塊增加游戲難度,有些學(xué)生添加圓球的數(shù)目……
2.初中VB教學(xué)典型案例:幸運抽獎
初中學(xué)生要制作一些具有一定功能和一定應(yīng)用價值的小程序,考慮到很多教師上課時會使用點名器隨機點名回答問題,聯(lián)歡會、班會會使用隨機抽獎、參加活動,于是我們帶著學(xué)生設(shè)計并制作了幸運抽獎小程序(如圖4)。
學(xué)生需要掌握在VB中生成隨機數(shù)的方法,RND可以生成[0,1)區(qū)間的一個隨機數(shù),為了能夠生成一個隨機學(xué)號,也就是一個隨機整數(shù),需要對RND進行處理,使用截尾取整函數(shù)Fix(RND*b+a)獲得一個[a,b]區(qū)間的任意整數(shù)。在分析程序功能、學(xué)習(xí)準備知識之后就開始編寫程序了。
(1)界面設(shè)計。
窗體上需添加一個圖相框用于顯示照片,一個標簽用于顯示學(xué)號,一個命令按鈕用于操控程序。
(2)代碼編寫。
本程序需要在命令按鈕的鼠標單擊事件中編寫代碼(如下頁圖5),實現(xiàn)產(chǎn)生隨機數(shù)并顯示響應(yīng)學(xué)號數(shù)字和照片的功能。
完成基本功能之后鼓勵學(xué)生完善程序,添加創(chuàng)意功能,有些學(xué)生利用前面學(xué)習(xí)過的計時器控件每隔一段時間重復(fù)做某事的功能,增加了滾動顯示全班學(xué)生照片的效果。
3.高中Python教學(xué)典型案例:五子棋
北京景山學(xué)校高中學(xué)生的學(xué)習(xí)能力在全區(qū)處于中等偏上水平,在完成國家要求的必修內(nèi)容以外,我們設(shè)計了補充課程。例如,在Python程序設(shè)計的部分我設(shè)計增加了用Python編寫鼠標、鍵盤控制小游戲的內(nèi)容,本節(jié)課通過學(xué)習(xí)創(chuàng)建畫布窗口、繪制線條、填充顏色、識別鼠標點擊事件,從而制作五子棋程序,具體步驟如下:
①創(chuàng)建窗口。②繪制圓形。要想能夠在棋盤上下棋,需要掌握繪制圓形的方法。③鼠標識別。當鼠標單擊時,在鼠標位置繪制圓形,程序需要能夠識別鼠標單擊事件。④輪流下黑、白棋。⑤繪制棋盤。棋盤繪制的方法比較簡單,只需有規(guī)律地繪制水平和豎直方向的線即可。
本節(jié)課程序代碼如圖6所示。
通過本案例的學(xué)習(xí),學(xué)生能夠在Python中繪制線條、圓形等基本圖形,能夠識別鼠標事件,學(xué)生興致勃勃地在自己繪制的棋盤上下棋。最后我啟發(fā)學(xué)生編寫人與電腦下棋的程序,這需要給電腦寫出下棋策略,給予計算機一定的智能,為學(xué)生課后拓展提供了思路和方向。
信息技術(shù)學(xué)科的核心育人價值在于通過培養(yǎng)創(chuàng)新能力來讓下一代人創(chuàng)造未來的世界,課程與教材改革是教學(xué)改革工作的重要內(nèi)容,為了能夠培養(yǎng)適應(yīng)未來社會的人才,教研組在完成好國家要求的基本課程之外,從小學(xué)、初中、高中一體化培養(yǎng)人才的角度,結(jié)合創(chuàng)客教育的思想精髓,建設(shè)了一系列景山學(xué)校校本程序教學(xué)創(chuàng)新課程。