鄧亞玲


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