應(yīng)迎春

Python作為一門“解釋型”語言,可讀性強(qiáng),語法簡便,能較好地引領(lǐng)學(xué)生進(jìn)入程序設(shè)計的世界。算法是程序的靈魂,程序設(shè)計離不開算法。闡述用程序設(shè)計解決問題的一般過程與方法,有利于幫助學(xué)生理解算法在程序設(shè)計中的核心地位。本文將以三位信息技術(shù)教師在Python教學(xué)實(shí)踐中存在的問題為切入點(diǎn),針對算法與程序設(shè)計教學(xué)策略分析展開探討。
● 現(xiàn)狀與問題
問題1:精英教學(xué)與普及教學(xué)的區(qū)別。一位資深信息學(xué)奧賽輔導(dǎo)教師,她的上課方式類似于信息學(xué)競賽輔導(dǎo),是屬于精英教學(xué)方法,但在普及教學(xué)中,學(xué)生各方面水平和能力良莠不齊,所以精英教學(xué)方法不適合Python語言的普及教學(xué)。
問題2:照本宣科與教材處理的區(qū)別。一位是剛工作的新教師,沒有教學(xué)計算機(jī)語言的經(jīng)歷,講述語言很容易照本宣科,學(xué)生聽得云里霧里。據(jù)學(xué)生反饋,學(xué)程序設(shè)計沒有想象中的“有趣”,也沒有想象中的“有用”;學(xué)生僅將教師的代碼敲進(jìn)去并運(yùn)行出結(jié)果就停止了思考與學(xué)習(xí),這樣絲毫鍛煉不了學(xué)生思維能力。
問題3:一般過程與表面有趣的區(qū)別。一位參加地市級優(yōu)質(zhì)課評比的高中信息技術(shù)教師,上課內(nèi)容是《用計算機(jī)編程解決問題的一般過程》,因?yàn)槭窃u比課,在試上時為追求熱鬧有趣的課堂氛圍,他利用海龜畫圖命令進(jìn)行項(xiàng)目式學(xué)習(xí),從畫直線、三角形、正方形到正N多邊形,一堂課下來,感覺就是換了款軟件上畫畫課。其實(shí)這堂課的重點(diǎn)是讓學(xué)生了解用計算機(jī)編程解決問題的一般過程,即分析問題、設(shè)計算法、編寫程序、調(diào)試運(yùn)行程序。學(xué)生不清楚其一般過程,剛開始抱著很濃厚的學(xué)習(xí)興趣,但往后學(xué)習(xí)會覺得越來越難而放棄學(xué)習(xí)。
● 教學(xué)策略分析
1.結(jié)合生活創(chuàng)設(shè)問題情境,抽象建模提升學(xué)生思維
在程序設(shè)計教學(xué)中,F(xiàn)or循環(huán)結(jié)構(gòu)是一大難點(diǎn),為了讓學(xué)生對For循環(huán)有形象的理解,有一位教師提問到:每天在儲蓄罐中存兩塊錢,一星期后儲蓄罐中多了多少錢?學(xué)生通常會直接說出結(jié)果——二乘七等于十四,這是他們經(jīng)過多年的數(shù)學(xué)學(xué)習(xí)保留下來的一個數(shù)學(xué)模型。要想讓學(xué)生明白計算機(jī)的思維方式,可通過動畫演示,讓學(xué)生感受每一天儲蓄罐里的變化,從而扭轉(zhuǎn)學(xué)生已有思維,使其理解計算機(jī)的遞推思想。再聯(lián)系變量,將儲蓄罐切換為變量S,抽象出模型。在實(shí)例中抽象建模,讓學(xué)生自主建構(gòu)得到S等于S加二這樣的一個表達(dá)式,從而理解計算機(jī)的累加,培養(yǎng)抽象思維。
2.適調(diào)結(jié)構(gòu)利用教材重點(diǎn),注重編程解決問題方法
大部分程序設(shè)計教材都是按照“先理論后實(shí)踐,先語句再程序”的順序編排,2020浙教版信息技術(shù)八上也基本采用這種模式,若在教學(xué)中也是這個順序,語法格式的講解就只能是采用傳統(tǒng)的講解法,而學(xué)生對這種講解一是沒興趣聽,二是講了與沒講一個樣,在編輯應(yīng)用中根本不會考慮語句格式。
例如,在一次采用同課異構(gòu)方式進(jìn)行的公開課中,主題是While循環(huán)。講課的兩位教師,一位是教齡十年、教學(xué)基本功比較扎實(shí)的教師,一位是教齡不足兩年的新教師。
教齡十年的教師上的是傳統(tǒng)課,由母親節(jié)想用Python跟媽媽說一百遍“媽媽,我愛您!”直接引入新知——用Python中的條件循環(huán)語句While來實(shí)現(xiàn),然后按教材新知講解。
(1)While循環(huán)語句的一般格式(如圖1)。
(2)While循環(huán)的執(zhí)行流程:當(dāng)條件判斷為True時,循環(huán)體被重復(fù)執(zhí)行,當(dāng)條件判斷為False時退出循環(huán),else子句的語句塊才會被執(zhí)行。若條件表達(dá)式的值一直為True,則While循環(huán)將一直執(zhí)行。因此,在循環(huán)體中一定要包含改變測試條件的語句,使循環(huán)能夠結(jié)束,以避免死循環(huán)。
(3)代碼展示(如圖2)。
這種上課的模式是比較傳統(tǒng)的教學(xué)方式,只是在學(xué)習(xí)語言,學(xué)生的思維沒有發(fā)生火花,不知道學(xué)了這個知識有什么用。
教齡不足兩年的教師上課時,以學(xué)生熟悉的咬手指鱷魚玩具引入,手指一直輪流按壓牙齒,若觸發(fā)開關(guān),嘴巴閉合,游戲結(jié)束,若沒有觸發(fā)開關(guān),游戲一直繼續(xù)。
(1)提出While循環(huán)的思想,與For循環(huán)的區(qū)別。
For循環(huán):一般用于次數(shù)的循環(huán)。
While循環(huán):一般用于條件的循環(huán)。
(2)初探任務(wù):快到寒假了,幾個同學(xué)準(zhǔn)備去游樂園玩,每位同學(xué)手里都有一張游樂卡,金額為200元,游樂園的項(xiàng)目價格都一樣:摩天輪13元/次,海盜船13元/次,過山車13元/次……引導(dǎo)學(xué)生:①分析玩的過程:每玩一個項(xiàng)目,卡里的錢就會扣13元,一直玩,當(dāng)卡里余額不足時就不能玩了。②設(shè)計算法:第一步,卡里初始金額是200元;第二步,玩的條件——當(dāng)卡里余額大于13元才可以玩;第三步,玩的結(jié)果——每玩一個項(xiàng)目,卡里的錢會扣13元;第四步,一直玩,直到卡里余額不足即少于13元,游玩結(jié)束。根據(jù)上述算法,學(xué)生結(jié)合教材講解實(shí)現(xiàn)程序語句,從而引出While語句格式(如上頁圖3)。
經(jīng)歷這種以學(xué)生熟悉的場景實(shí)例引入,引導(dǎo)學(xué)生問題分析、算法設(shè)計,再編寫程序?qū)崿F(xiàn)的過程,學(xué)生比較容易掌握While循環(huán)的思想、格式。
其實(shí),新教材的第10課是循環(huán)結(jié)構(gòu)——While循環(huán)(重點(diǎn)是講解語句格式),第12課才是While循環(huán)的應(yīng)用實(shí)例。通過這次的同課異構(gòu)可以發(fā)現(xiàn),把這兩課的教材內(nèi)容打散重組處理,每一節(jié)課拋出實(shí)例或生活中的問題,根據(jù)問題進(jìn)行分析、抽象建模、設(shè)計算法,用自然語言或流程圖表示算法,根據(jù)設(shè)計的算法用Python語言編寫代碼實(shí)現(xiàn),在算法表示的對應(yīng)步驟中穿插滲透相應(yīng)的語法知識,最后調(diào)試運(yùn)行,觀察程序運(yùn)行結(jié)果,能讓學(xué)生的上課參與度更高,學(xué)習(xí)積極性更強(qiáng),更有助于培養(yǎng)學(xué)生的計算思維,即解決問題的能力。
3.巧用錯誤認(rèn)識語法規(guī)則,多樣實(shí)現(xiàn)發(fā)散學(xué)生思維
有時候,程序運(yùn)行不出但在相應(yīng)行有顯示,這說明程序存在語法錯誤。初學(xué)Python造成語法錯誤的常見原因有字母大小寫不同意義、語句的縮進(jìn)輸入、中英文符號的混亂等,不過語法錯誤程序調(diào)試運(yùn)行時會提示。鑒于此,筆者在課堂中因勢利導(dǎo),用這些語法錯誤來穿插講解語法規(guī)則,讓學(xué)生在改錯中學(xué)習(xí)Python語言的語法規(guī)則,取得了不錯的效果。當(dāng)然,在展示學(xué)生程序時,細(xì)心的學(xué)生會發(fā)現(xiàn),不同的程序表示會出現(xiàn)一致的程序結(jié)果,教師要及時引導(dǎo)學(xué)生分析程序,從而引出同一程序的多樣性表示。
例如,在編寫第一個Python程序時,學(xué)生常常會出現(xiàn)各種語法錯誤。所以,筆者常讓學(xué)生先嘗試,在調(diào)試程序的過程中發(fā)現(xiàn)問題時,引導(dǎo)學(xué)生結(jié)合教材找出問題原因,若不能,則全班同學(xué)一起來“找茬”。這樣利用錯誤突破重點(diǎn)或分散難點(diǎn),取得了較好的教學(xué)效果。錯誤是一種很好的課堂生成資源,這些資源對突破課堂重點(diǎn)往往能起到關(guān)鍵性的作用。
又如,在教學(xué)《循環(huán)語句》這一課時,課堂的教學(xué)重點(diǎn)是對循環(huán)語句的正確描述。在用For語句編寫程序時,會發(fā)現(xiàn)學(xué)生容易出現(xiàn)一種邏輯錯誤,即循環(huán)體語句次序顛倒使結(jié)果不符合要求,而這恰恰是教學(xué)重點(diǎn)需要解決的問題的具體體現(xiàn)。在接下來的評價分析環(huán)節(jié),教師就可以利用這些課堂生成資源引導(dǎo)學(xué)生進(jìn)行討論和自我總結(jié),從而促進(jìn)學(xué)生科學(xué)知識結(jié)構(gòu)的構(gòu)建或完善。學(xué)生的錯誤通常是他們學(xué)習(xí)難點(diǎn)的具體體現(xiàn),在引導(dǎo)學(xué)生改正錯誤的過程中,如果能采取“以錯攻難”的方式,用錯誤來消化學(xué)習(xí)難點(diǎn),有時能收到事半功倍的教學(xué)效果。
4.依托競賽激發(fā)學(xué)生興趣,分層教學(xué)鑄就學(xué)習(xí)品質(zhì)
如今,各級中小學(xué)電腦作品大賽中的程序設(shè)計項(xiàng)目都是使用各類程序設(shè)計語言,創(chuàng)作完成軟件作品,實(shí)現(xiàn)某些特定功能或解決某種需求。由于學(xué)生水平層次參差不齊,以競賽為引導(dǎo)的基于Python語言的算法和程序設(shè)計教學(xué),有利于激發(fā)學(xué)生的學(xué)習(xí)興趣,從而培養(yǎng)學(xué)生自主學(xué)習(xí)、學(xué)會學(xué)習(xí)的能力。
總之,基于Python語言的算法與程序設(shè)計教學(xué)是學(xué)生深層次認(rèn)知信息技術(shù)魅力的重要窗口,對學(xué)生未來的學(xué)習(xí)及發(fā)展能產(chǎn)生一定的影響,但現(xiàn)階段的教學(xué)仍然存在諸多的限制因素,其教育價值并未得到充分顯現(xiàn)。所以,教師要始終秉持發(fā)展的眼光看待教育教學(xué),加快教學(xué)創(chuàng)新及優(yōu)化的探索腳步,加速攻克教學(xué)難點(diǎn),構(gòu)建有效教學(xué)課的課堂。