吳加明
編程對于廣大中學(xué)生來說無疑是塊硬骨頭,如何做到因材施教、有效教學(xué),這考驗(yàn)著一線信息技術(shù)教師自身的專業(yè)知識儲備、教材文本研讀、教學(xué)案設(shè)計(jì)、教學(xué)組織實(shí)施等教學(xué)基本功和綜合素養(yǎng)。故事是人類文化的基本元素和重要標(biāo)識,具有獨(dú)特的影響力和感召力。故事和編程兩個看似毫不相關(guān)的詞語,讓人聯(lián)想到:一個情緒化、張揚(yáng),一個理性、內(nèi)斂;一個講究氣氛渲染、情節(jié)沖突,一個需要邏輯思維、思路嚴(yán)謹(jǐn)。筆者在教學(xué)必修模塊1《數(shù)據(jù)與計(jì)算》的“算法與程序?qū)崿F(xiàn)”時,對“分支結(jié)構(gòu)與if語句”有關(guān)項(xiàng)目學(xué)習(xí)活動的教學(xué)環(huán)節(jié)嘗試了“故事化”情境設(shè)計(jì),力圖做到形式與內(nèi)容的完美統(tǒng)一。
● 故事情境:古城尋寶
尋寶是個比較經(jīng)典的話題,總給人一種神秘感,其結(jié)果的不確定性會給人帶來無限的遐想,讓人躍躍欲試。筆者所在城市泉州,是我國歷史文化名城之一,歷史悠久,享有“海上絲綢之路起點(diǎn)”“東亞文化之都”“世界宗教博物館”等美譽(yù)。其地方文化特色凸顯,人文底蘊(yùn)深厚,文物及旅游景點(diǎn)眾多,有特色街巷,寺院廟宇星羅棋布。把項(xiàng)目活動設(shè)計(jì)放在有濃郁閩南傳統(tǒng)特色古城這一空間背景下,恰如其分,項(xiàng)目以“古城尋寶”為題,在項(xiàng)目中設(shè)計(jì)了三個主題活動,主題名稱分別是體溫測量、通關(guān)密碼和探尋寶物,使項(xiàng)目有較完整的故事結(jié)構(gòu),既有劇情的層層推進(jìn),又有知識內(nèi)容的螺旋上升,形成明暗兩條主線鏈條的有機(jī)融合。
● 活動環(huán)節(jié)1:體溫測量
本環(huán)節(jié)讓學(xué)生通過編程模擬解決實(shí)際生活中的一個場景問題,了解分支結(jié)構(gòu)在日常學(xué)習(xí)生活中應(yīng)用的普遍性和廣泛性。當(dāng)今的智能設(shè)備,極大地方便了我們的生活,其智能最直觀初淺的理解就在“如果…就…”的簡單邏輯里,智能機(jī)器需要按預(yù)設(shè)的程序?qū)Ω鞣N情況做出判斷,并做出相應(yīng)的反應(yīng)。例如智能空調(diào),如果室內(nèi)溫度高于32度,就自動打開空調(diào)。又如,使用無人機(jī)空中偵察古城尋寶路線,如果無人機(jī)接收到指令,就會做出相應(yīng)的動作??梢钥闯鰲l件判斷非常重要。理解并掌握Python語言的if分支語句的格式與應(yīng)用,這是整個項(xiàng)目活動完成后需要達(dá)成的最低學(xué)習(xí)要求,在此過程中,還需要了解與條件密不可分的關(guān)系運(yùn)算、關(guān)系表達(dá)式。同時,進(jìn)一步領(lǐng)會體悟Python語言的書寫特點(diǎn)、基礎(chǔ)知識、集成開發(fā)環(huán)境及調(diào)試流程等。
知識要點(diǎn):if語句及應(yīng)用、關(guān)系運(yùn)算。
活動要求:在新冠疫情防控常態(tài)化背景下,我們進(jìn)入公共場所,如車站、商場、電影院、景點(diǎn)等,都需要出示健康碼,并接受現(xiàn)場測量體溫等,體溫正常者(不高于37.3攝氏度),才被允許入內(nèi),體溫異常者,將被拒絕。請同學(xué)們利用Python編寫一段程序,實(shí)現(xiàn)功能:①輸入一個體溫數(shù)據(jù)。②對輸入的數(shù)據(jù)進(jìn)行比較判斷,如果小于或等于37.2,輸出“體溫正?!保駝t,輸出“體溫異?!?。③結(jié)束。
知識連接:
(1)if語句,其書寫格式如下:
if 條件:
語句組1
else:
語句組2
語句組3
Python用縮進(jìn)來標(biāo)明成塊的代碼,體現(xiàn)語句之間的上下級關(guān)系,對縮進(jìn)有很嚴(yán)格的要求,同級別的程序行要縮進(jìn)并對齊。例如,以上程序中if與else要對齊,“語句組1”到“語句組2”要縮進(jìn)并對齊。條件后面的冒號也是if語句的組成部分,不可或缺。
分支結(jié)構(gòu)程序的功能是:
①如果條件表達(dá)式成立(值是真True),那么執(zhí)行“語句組1”的程序段。②否則(值是假False),就執(zhí)行“語句組2”。③不論條件成立與否,判斷完成后都繼續(xù)執(zhí)行“語句組3”。因?yàn)椤罢Z句組3”與else對齊。
(2)關(guān)系運(yùn)算。
分支語句中的條件(條件表達(dá)式),一般稱為關(guān)系表達(dá)式。關(guān)系表達(dá)式是用關(guān)系運(yùn)算符連接起來的式子。常用的關(guān)系運(yùn)算符:==、!=、>、<、≥、≤。當(dāng)關(guān)系表達(dá)式成立時,值為真(True);當(dāng)關(guān)系表達(dá)式不成立時,值為假(False)。邏輯型數(shù)據(jù)有且僅有“真”和“假”兩個值,關(guān)系運(yùn)算的結(jié)果一定是邏輯型。
● 活動環(huán)節(jié)2:通關(guān)密碼
該活動不管是故事情節(jié)方面還是知識內(nèi)容方面,都是在“活動環(huán)節(jié)1”基礎(chǔ)上的自然演進(jìn),設(shè)計(jì)合理,將條件判斷從單一增加到兩個,從而引入邏輯運(yùn)算的學(xué)習(xí)內(nèi)容。學(xué)生對用戶名和密碼問題有濃厚的興趣,可以快速激發(fā)學(xué)習(xí)的積極性和主動性,用戶名和密碼也是人們互聯(lián)網(wǎng)生活方式必不可少的,如學(xué)生進(jìn)入“安全平臺”“綜合素質(zhì)信息管理平臺”等都需要正確的用戶名和密碼。本活動進(jìn)一步通過問題引領(lǐng),大膽猜測,小心驗(yàn)證,初步構(gòu)建從生活實(shí)例中提煉形成程序設(shè)計(jì)語言能接受處理的算法模型,并做到實(shí)踐操作、編程實(shí)現(xiàn)。
知識技能:邏輯運(yùn)算。
活動要求:通過第一關(guān)的體溫測量后,現(xiàn)在我們來到了古城門,進(jìn)入第二關(guān),需要輸入通關(guān)密碼,即輸入用戶名和密碼。請同學(xué)們利用Python編寫程序,實(shí)現(xiàn)功能:①輸入用戶名。②輸入密碼。③對輸入的用戶名和密碼與預(yù)先設(shè)定的值(每個同學(xué)用自己的姓名作為用戶名,用“202011+座號”作為密碼)進(jìn)行比較,當(dāng)二者同時正確時,輸出“歡迎來到古城!”,否則,輸出“對不起,輸入有誤,無法進(jìn)入!”。④結(jié)束。
知識連接:邏輯運(yùn)算——and、or、not。
邏輯運(yùn)算符一般和關(guān)系運(yùn)算符結(jié)合使用,如10>6 and 15.6>20,10>6是成立的,結(jié)果為True(真),15.6>20不成立,結(jié)果為False(假),所以整個表達(dá)式的結(jié)果為False,即不成立??匆粋€生活實(shí)例:手機(jī)要上網(wǎng),最起碼需要滿足兩個條件,一是保證手機(jī)電量充足,二是要有網(wǎng)絡(luò)信號。兩個條件必須同時具備,這種情況就是邏輯與運(yùn)算。再如中考體育的球類項(xiàng)目,大家可以在籃球、足球和排球中三選一,這就是邏輯或運(yùn)算。
● 活動環(huán)節(jié)3:探尋寶物
能夠從問題本身或業(yè)務(wù)邏輯提煉出解決方案,并且用代碼去實(shí)現(xiàn),編程教育的實(shí)質(zhì)內(nèi)涵是:現(xiàn)實(shí)世界的問題→抽象出解決方案/建?!幊陶Z言表達(dá)。編寫代碼只是最后一步,前面兩個步驟更考驗(yàn)學(xué)習(xí)者的底層思維能力。本活動是前面內(nèi)容的延伸,是整個“古城尋寶”項(xiàng)目活動的終極目標(biāo)。對應(yīng)的主要知識要點(diǎn)是隨機(jī)函數(shù)和多分支語句,難度中等。為了模擬現(xiàn)實(shí)世界中尋寶的隨機(jī)性、不確定性,這里需要導(dǎo)入random模塊來產(chǎn)生一個隨機(jī)數(shù),這也是編程教育繞不開的一個話題。例如,抽獎小程序、課堂叫號提問程序、義務(wù)教育入學(xué)電腦派位軟件等,其基本原理都離不開隨機(jī)數(shù)這個概念。
知識技能:導(dǎo)入模塊、隨機(jī)數(shù)和多分支結(jié)構(gòu)。
活動要求:進(jìn)入古城后,開始探尋寶物,寶物分別有寶劍、盔甲、金幣等,我們統(tǒng)一給每樣寶物做個編號并約定,1代表寶劍,2代表盔甲,3代表金幣,0代表空。請同學(xué)們利用Python編寫程序,實(shí)現(xiàn)以下功能:①在0~3四個數(shù)字中隨機(jī)產(chǎn)生一個整數(shù)。②對獲得的隨機(jī)數(shù)進(jìn)行比對,并輸出編號所代表的寶物名稱。如隨機(jī)數(shù)是1,則輸出“恭喜你!你尋到的寶物是:寶劍”。③結(jié)束。
知識連接:
(1)導(dǎo)入模塊。
Python提供了強(qiáng)大的模塊支持,不僅Python標(biāo)準(zhǔn)庫中包含了大量的模塊,還有大量的第三方模塊,通過模塊可以極大地提高開發(fā)效率。例如,導(dǎo)入random模塊,用于生成隨機(jī)數(shù),可以寫成:import random。
(2)隨機(jī)模塊。
random模塊,用來利用系統(tǒng)產(chǎn)生隨機(jī)數(shù),應(yīng)用隨機(jī)函數(shù)是編程中的常見現(xiàn)象。
①random模塊的choice函數(shù),作用是返回一個列表,元組或字符串的隨機(jī)項(xiàng),如random.choice([0,1,2,3])#得到0~3這四個數(shù)字中的隨機(jī)一個數(shù)。
②random.random()#生成0~1的隨機(jī)浮點(diǎn)數(shù),較常用,可以做變形處理。
(3)多分支結(jié)構(gòu)書寫格式。
if 條件1:
語句組1
elif 條件2:
語句組2
……
elif 條件n:
語句組n
else:
語句組n+1
故事化教學(xué),甚至是角色扮演教學(xué)在文科學(xué)科的教學(xué)活動中較為常見,可以讓學(xué)生在較短的時間內(nèi)快速融入預(yù)設(shè)的學(xué)習(xí)情境?!肮懦菍殹表?xiàng)目活動通過巧妙構(gòu)思,用故事化設(shè)計(jì)編程教育,做到相關(guān)活動由易到難、由淺入深,環(huán)環(huán)相扣,一氣呵成。通過嘗試創(chuàng)新教學(xué)環(huán)節(jié)方式,讓“以學(xué)生為中心”“追求理解的教學(xué)設(shè)計(jì)”等教學(xué)理念有效落地,生根發(fā)芽。
蒼山點(diǎn)題
程序設(shè)計(jì)教學(xué)首先要考慮趣味性,尤其是在學(xué)習(xí)的起始階段,培養(yǎng)學(xué)生的興趣,同時也能降低算法理解的難度。因此,選題要盡可能聯(lián)系學(xué)生的生活實(shí)際,提高學(xué)生的認(rèn)同感。這也是近期選題我們的一大宗旨。
第一篇文章,把項(xiàng)目學(xué)習(xí)與趣味編程結(jié)合。在程序設(shè)計(jì)教學(xué)中允許學(xué)生“眼高手低”,主要在培養(yǎng)學(xué)生的計(jì)算思維上下功夫,而不是在編寫代碼操作上多使力。在學(xué)習(xí)過程中建議學(xué)生在相關(guān)代碼上進(jìn)行修改,降低代碼編寫的難度,加快輸入速度,提高學(xué)習(xí)的成就感。受課時和上課周期等現(xiàn)實(shí)因素的制約,在進(jìn)行項(xiàng)目設(shè)計(jì)時盡量選擇“短平快”的“微項(xiàng)目”開展教學(xué)活動,增加教學(xué)的靈活性,提高了課堂的實(shí)效。
第二篇文章,教師開始設(shè)計(jì)的是項(xiàng)目學(xué)習(xí),因?yàn)楣适禄^于強(qiáng)大,相對弱化了項(xiàng)目的創(chuàng)意設(shè)計(jì)、作品生成,所以我們建議其改成了故事化教學(xué),讓故事情境、情節(jié)與學(xué)習(xí)活動環(huán)節(jié)相一致,更好地突出了教學(xué)設(shè)計(jì)的特色。
另外,隨著項(xiàng)目學(xué)習(xí)在課堂中的廣泛使用,我們要防止項(xiàng)目的泛濫,對項(xiàng)目學(xué)習(xí)的特征要不斷校準(zhǔn),至少不能讓項(xiàng)目學(xué)習(xí)失去個性化的創(chuàng)意、規(guī)劃、設(shè)計(jì)及作品的生成與交流,即使作品是一個結(jié)論、觀點(diǎn),也是有益的。