鄧亞玲
摘要:作者在列舉“while循環(huán)”教學(xué)實(shí)踐中常見(jiàn)的糾結(jié)問(wèn)題的同時(shí),結(jié)合后續(xù)《物聯(lián)網(wǎng)》《智能機(jī)器人》等教學(xué)單元中的程序案例,提出了“while循環(huán)”教學(xué)問(wèn)題突圍的思路,以及對(duì)教科書(shū)內(nèi)容修訂的建議。
關(guān)鍵詞:Python程序設(shè)計(jì);while循環(huán);教材修訂;教學(xué)問(wèn)題
中圖分類號(hào):G434 ?文獻(xiàn)標(biāo)識(shí)碼:A ?論文編號(hào):1674-2117(2022)13-0056-03
2020年9月,浙江省初中信息技術(shù)啟用新版教科書(shū)。其中,八年級(jí)上冊(cè)圍繞“Python程序設(shè)計(jì)”進(jìn)行編寫(xiě)。筆者在2021年9月使用該冊(cè)新學(xué)年教科書(shū)時(shí),發(fā)現(xiàn)其對(duì)2020年9月的教科書(shū)進(jìn)行了修訂。其中,“while循環(huán)”部分有較大變化。鑒于2020年9月教科書(shū)和2021年9月教科書(shū)均為新編版本,但內(nèi)容又有所變化,以下為了敘述方便,筆者用“2020版”代指2020年9月使用的教科書(shū),用“2021版”代指2021年9月使用的教科書(shū)。對(duì)比2020版和2021版《信息技術(shù)》八年級(jí)上冊(cè)教科書(shū)可發(fā)現(xiàn),后者對(duì)前者的修訂內(nèi)容主要體現(xiàn)在兩個(gè)方面:一是格式上的規(guī)范統(tǒng)一,如流程圖中表達(dá)式的規(guī)范書(shū)寫(xiě)、正文程序代碼中*號(hào)的字體更正等;二是知識(shí)內(nèi)容(包括隨堂練習(xí))有刪減、增補(bǔ)和表達(dá)變化。
● “while循環(huán)”內(nèi)容教材修訂中的舍與變
“while循環(huán)”是浙江省義務(wù)教育教科書(shū)《信息技術(shù)》2020年新版八年級(jí)上冊(cè)第10、11課的內(nèi)容。在該版教科書(shū)使用一年后,編者對(duì)這兩課內(nèi)容進(jìn)行了修訂,具體如下表所示。
除了第10課刪除“循環(huán)控制語(yǔ)句break/continue”和對(duì)隨堂練習(xí)題目進(jìn)行替換外,兩課中相關(guān)的兩個(gè)程序?qū)嵗暗卿洺绦颉焙汀安聰?shù)游戲”內(nèi)容都有變化。變化的主要特征就是,不再出現(xiàn)“break/continue”語(yǔ)句,“while True”變成了“while <具體條件>”。
● “while循環(huán)”教學(xué)難點(diǎn)和教材修訂原因探析
“while循環(huán)”也稱為條件循環(huán)、直到型循環(huán)。“while循環(huán)”可以通俗地解釋為,先判斷條件,條件滿足就執(zhí)行循環(huán)體,否則就不執(zhí)行循環(huán)體或退出循環(huán);也可以解釋為,條件滿足就執(zhí)行循環(huán)體,直到條件不滿足就退出循環(huán)。
以“登錄程序”為例(如下圖),當(dāng)用戶輸入的賬號(hào)或密碼不正確時(shí),就要求用戶再次輸入,直到用戶輸入正確的賬號(hào)和密碼。其中,執(zhí)行循環(huán)體的條件是用戶輸入的賬號(hào)或密碼不正確,循環(huán)體是用戶輸入賬號(hào)和密碼。
從“while循環(huán)”的一般格式可見(jiàn),判斷循環(huán)執(zhí)行、不執(zhí)行或退出的條件,一般是跟在“while”之后的。而在具體應(yīng)用中,“while循環(huán)”的判斷條件出現(xiàn)的位置卻是靈活的,可以在“while”之后,也可以出現(xiàn)在循環(huán)體中。當(dāng)出現(xiàn)在循環(huán)體中時(shí),常常是在“while True”的前提之下,通過(guò)if分支、continue/break語(yǔ)句來(lái)聯(lián)合控制循環(huán)體的執(zhí)行與否。如果缺少了if分支或continue/break語(yǔ)句控制,“while循環(huán)”就會(huì)出現(xiàn)“死循環(huán)”的結(jié)果,即循環(huán)體一直執(zhí)行,永不退出。所以,上述“登錄程序”的算法表述看似簡(jiǎn)明,但在編寫(xiě)代碼時(shí)卻可以有不同的表達(dá)方式。
另外,2020版教科書(shū)使用了“while True”作為控制循環(huán)體執(zhí)行的判斷條件,循環(huán)體中使用了if分支、continue/break語(yǔ)句來(lái)控制循環(huán),提供了退出循環(huán)的事實(shí)條件。2021版教科書(shū)中則使用了具體的控制循環(huán)體執(zhí)行的判斷條件,一般是判斷數(shù)據(jù)之間的大小相等關(guān)系等。
二者的區(qū)別就在于,前者是先運(yùn)行一次循環(huán)體,控制循環(huán)的判斷條件位置在循環(huán)體內(nèi)部;后者是按照一般格式運(yùn)行,滿足條件就執(zhí)行循環(huán)體,否則就不執(zhí)行。在代碼上,前者比后者精簡(jiǎn),但在教學(xué)中,對(duì)于作為初學(xué)者的學(xué)生來(lái)說(shuō),理解起來(lái)卻有一點(diǎn)認(rèn)知上的迷茫和困惑。這正是“while循環(huán)”教學(xué)中的難點(diǎn)問(wèn)題。
在筆者進(jìn)行第一輪“while循環(huán)”教學(xué)實(shí)踐時(shí),一部分學(xué)生即使在聽(tīng)教師講解時(shí)“感覺(jué)聽(tīng)懂了”,但在獨(dú)立讀寫(xiě)程序時(shí)仍舊會(huì)陷入一種認(rèn)知漩渦:“while True”與“while循環(huán)”的一般格式似是而非,它到底意味著什么?既然是否執(zhí)行循環(huán)體要先判斷條件,那為什么條件又直接是真,這里的條件到底要判斷什么?既然已經(jīng)有判斷的條件,為何又要使用循環(huán)控制語(yǔ)句?條件判斷和循環(huán)控制語(yǔ)句二者究竟應(yīng)該如何使用?諸如此類的問(wèn)題,成為學(xué)生在學(xué)習(xí)“while循環(huán)”時(shí)逃不開(kāi)的思維屏障。
從上述角度來(lái)說(shuō),筆者在進(jìn)行第二輪教學(xué)實(shí)踐時(shí),明顯感覺(jué)到學(xué)生對(duì)理解2021版中的代碼要相對(duì)容易接受一些。因此,筆者猜測(cè),教科書(shū)編者對(duì)“while循環(huán)”內(nèi)容的修訂,緣由可能與此相關(guān)。
● “while循環(huán)”教學(xué)的糾結(jié)與突圍
2021版《信息技術(shù)》八年級(jí)下冊(cè)教科書(shū)與2020版相比,在“while循環(huán)”實(shí)例的編排上,舍棄了更為精簡(jiǎn)實(shí)用的“while True”和自由靈活的“break/continue循環(huán)控制語(yǔ)句”,而選擇了學(xué)生更易接受的“while循環(huán)”的一般格式。
然而,“while True”并沒(méi)有因此從初中信息技術(shù)教科書(shū)中消失。八年級(jí)下冊(cè)第二單元“物聯(lián)網(wǎng)”,在一些物聯(lián)網(wǎng)應(yīng)用實(shí)例代碼中,對(duì)“while True”的使用非常普遍。該單元中出現(xiàn)了六個(gè)代碼實(shí)例,其中五個(gè)實(shí)例中使用了“while True”。在九年級(jí)第三單元“智能機(jī)器人”中,兩個(gè)機(jī)器人編程案例流程圖中使用了“永遠(yuǎn)循環(huán)”的表述,在代碼中使用了“while 1”。
在八年級(jí)下冊(cè)教科書(shū)的物聯(lián)網(wǎng)實(shí)例中,“while循環(huán)”控制循環(huán)的條件較為單一,就是“while True”循環(huán)體中沒(méi)有設(shè)置退出循環(huán)的控制語(yǔ)句,整個(gè)循環(huán)操作就是所謂的“死循環(huán)”。這種設(shè)定是符合物聯(lián)網(wǎng)實(shí)例的實(shí)際需求的,即物聯(lián)網(wǎng)智能設(shè)備一直處于運(yùn)行狀態(tài)。這其中暗含了循環(huán)終止或退出的客觀條件,如設(shè)備出現(xiàn)故障、設(shè)備斷電等。九年級(jí)機(jī)器人編程案例,也屬同一類情況。
綜上所述,初中Python教學(xué)要不要講“while True”和“break/continue循環(huán)控制語(yǔ)句”,其問(wèn)題的癥結(jié)在于如何向?qū)W生解釋“while True”。
筆者建議,可再回到“while循環(huán)”的一般格式展開(kāi)講解?!皐hile <條件>”,先不去管這個(gè)“<條件>”是“True”還是具體的數(shù)據(jù)大小相等關(guān)系判斷,先來(lái)看看條件判斷的結(jié)果。這個(gè)結(jié)果很簡(jiǎn)單,不是真就是假,即不是1就是0,它是一個(gè)布爾值??梢园巡紶栔道斫鉃橐粋€(gè)開(kāi)關(guān),當(dāng)布爾值為真或1時(shí),開(kāi)關(guān)的狀態(tài)是開(kāi),即工作狀態(tài),否則,當(dāng)布爾值為假或0時(shí),開(kāi)關(guān)的狀態(tài)就是關(guān),即非工作狀態(tài)。工作狀態(tài)和非工作狀態(tài)也可以理解為按鈕按下和松開(kāi)、線路連接和斷開(kāi)。那么,“while <條件>”中的“<條件>”的值就是一個(gè)控制循環(huán)的開(kāi)關(guān)。
當(dāng)“<條件>”不需判斷,直接是“True”時(shí),表示循環(huán)體會(huì)始終處于執(zhí)行狀態(tài),即一直保持在工作狀態(tài)。如果需要在某種情況下自動(dòng)強(qiáng)制中斷循環(huán)或退出循環(huán),可以在循環(huán)體內(nèi)部再設(shè)置循環(huán)開(kāi)關(guān),一般使用if分支、break/continue語(yǔ)句。這樣的話,就表明了“while循環(huán)”的循環(huán)控制開(kāi)關(guān)其實(shí)不止一個(gè)?!皐hile True”是默認(rèn)無(wú)條件執(zhí)行循環(huán)體,真正控制循環(huán)體運(yùn)行的是循環(huán)體內(nèi)部的控制開(kāi)關(guān)。上述通俗化的解釋,可以幫助學(xué)生很好地理解和接受“while True”,并進(jìn)一步深入理解“while <條件>”。
● “while循環(huán)”內(nèi)容修訂及教學(xué)建議
2021版《信息技術(shù)》八年級(jí)下冊(cè)教科書(shū)修訂了2020版中與“while循環(huán)”相關(guān)的兩課教學(xué)內(nèi)容,學(xué)習(xí)難度和理解難度有所降低。鑒于此次內(nèi)容修訂所折射出的教學(xué)問(wèn)題,以及考慮與后續(xù)教科書(shū)內(nèi)容的銜接問(wèn)題,筆者認(rèn)為,教科書(shū)中的“while循環(huán)”仍可分兩課。前一課介紹“while循環(huán)”的一般格式,在實(shí)例選擇上,可以偏向與“while <條件>”格式相統(tǒng)一的、使用常見(jiàn)的值比較類的條件作為循環(huán)控制的開(kāi)關(guān)。后一課則可以選擇使用“while True”類型的實(shí)例。此外,教科書(shū)中未涉及當(dāng)循環(huán)控制條件不滿足時(shí)執(zhí)行else對(duì)應(yīng)語(yǔ)句塊的問(wèn)題,這部分內(nèi)容可以放在隨堂練習(xí)的打“*”題目中,為學(xué)生提供拓展練習(xí)。
● 結(jié)語(yǔ)
在開(kāi)展課堂編程教學(xué)時(shí),信息技術(shù)教師所關(guān)注的除了知識(shí)點(diǎn),還有學(xué)生,教師在利用好教科書(shū)的同時(shí),還要在發(fā)現(xiàn)教學(xué)問(wèn)題時(shí)多進(jìn)行反思和探討,進(jìn)而更好地提高專業(yè)教學(xué)技能和課堂教學(xué)效率。
參考文獻(xiàn):
[1]浙江省教育廳教研室.浙江省義務(wù)教育教科書(shū) 信息技術(shù)(八年級(jí)上)[M].杭州:浙江教育出版社,2020,7.
[2]浙江省教育廳教研室.浙江省義務(wù)教育教科書(shū) 信息技術(shù)(九年級(jí))[M].杭州:浙江教育出版社,2020,7.