浦丕志
(沈陽(yáng)市和平區(qū)教育研究中心 遼寧沈陽(yáng) 110002)
Python語(yǔ)言在浙教版高中信息技術(shù)教材中成為描述算法和解決問(wèn)題的計(jì)算機(jī)語(yǔ)言,滿足了新課標(biāo)對(duì)程序設(shè)計(jì)語(yǔ)言的要求。在學(xué)習(xí)中通過(guò)解決實(shí)際問(wèn)題,來(lái)體驗(yàn)程序設(shè)計(jì)過(guò)程、感受算法效率、掌握程序調(diào)試與運(yùn)行的基本方法。筆者在教學(xué)有如下的思考,分享如下:
教材中“3.1用計(jì)算機(jī)編程解決問(wèn)題的一般過(guò)程”一課,引入了“繪制正六邊形的過(guò)程”的內(nèi)容,講解了turtle模塊和import、for、range等語(yǔ)句,不適合剛剛開(kāi)始學(xué)習(xí)Python語(yǔ)言的同學(xué)學(xué)習(xí),建議后置,將這一課放在“3.2.2順序結(jié)構(gòu)的程序?qū)崿F(xiàn)”后教學(xué)。
在教學(xué)Python過(guò)程中,應(yīng)盡快讓學(xué)生使用功能強(qiáng)大的開(kāi)發(fā)環(huán)境,在前段教學(xué)中引導(dǎo)學(xué)生使用命令行、Shell、IDLE等進(jìn)行語(yǔ)法測(cè)試,提高學(xué)生評(píng)估并選用Python資源與工具、有效地管理學(xué)習(xí)過(guò)程與資源、創(chuàng)造性解決問(wèn)題的能力。筆者在教學(xué)“3.2.5函數(shù)與模塊”一課的“實(shí)踐與體驗(yàn)”內(nèi)容之前,讓學(xué)生開(kāi)始使用Pycharm,學(xué)生能方便地在Pycharm中管理模塊,調(diào)試和運(yùn)行程序。
在學(xué)生初期使用Pycharm時(shí),可以使用微課輔助學(xué)生練習(xí)用IDLE已經(jīng)調(diào)試成功的程序,熟悉Python開(kāi)發(fā)環(huán)境的操作過(guò)程。
第一步,在命令行進(jìn)入Python環(huán)境后,先講range()函數(shù),因?yàn)閞ange()函數(shù)的變量具有Python語(yǔ)言語(yǔ)法普遍的特征,通過(guò)反復(fù)改變參數(shù)和對(duì)運(yùn)行結(jié)果的觀察,形成初步對(duì)程序調(diào)試的體驗(yàn)。
第二步,進(jìn)入Shell進(jìn)行程序調(diào)試,教材中計(jì)算和輸出字符串的樣例可以滿足學(xué)生的自主學(xué)習(xí),因?yàn)镾hell的界面與命令行中的Python環(huán)境類似,學(xué)生不會(huì)覺(jué)得學(xué)習(xí)困難。
最后一步,通過(guò)IDLE學(xué)習(xí)Python語(yǔ)言的編輯狀態(tài)下的調(diào)試過(guò)程,再在IDLE環(huán)境下完成前兩步的程序,鞏固Python語(yǔ)言的語(yǔ)法規(guī)則(大小寫(xiě)敏感、冒號(hào)用法、語(yǔ)句塊、縮進(jìn)等)。這一部分內(nèi)容比較多,也有很多技巧,可以鼓勵(lì)學(xué)生小組合作學(xué)習(xí),相互啟發(fā)和提示,最后總結(jié)和自己積累。
在教材“3.2”中以圖表形式介紹了常見(jiàn)數(shù)據(jù)類型、算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符,這些內(nèi)容可以選擇重點(diǎn)(當(dāng)下能用上)內(nèi)容講解,其他的內(nèi)容鼓勵(lì)學(xué)生在使用這些知識(shí)時(shí)通過(guò)查資料的方法來(lái)學(xué)習(xí)和應(yīng)用(教材上類似的表很多,都將其列為資料,不詳講,做資料進(jìn)行待查)。
在Python中,變量無(wú)須聲明,值和類型可以改變(教材72頁(yè))。教師通過(guò)演示和講解,讓學(xué)生理解變量的值和類型轉(zhuǎn)換的過(guò)程和最終結(jié)果。
在教學(xué)80頁(yè)“end=’‘的作用”內(nèi)容時(shí),可以通過(guò)一般輸出過(guò)程與“end=’‘”輸出過(guò)程的對(duì)比來(lái)教學(xué),講清“end=’‘”的格式(Python中單引號(hào)和雙引號(hào)的通用方法)。此時(shí)學(xué)生已有了程序設(shè)計(jì)基礎(chǔ),可以鼓勵(lì)學(xué)生自主學(xué)習(xí)。
此題討論的問(wèn)題是甄別語(yǔ)句體(語(yǔ)句塊)的語(yǔ)法格式和邏輯的正確性,教學(xué)時(shí),可讓學(xué)生分別完成“代碼一”和“代碼二”,結(jié)合輸出的結(jié)果進(jìn)行討論。得出結(jié)論:“代碼一”運(yùn)行結(jié)果最后總是會(huì)輸出“超速”,也就是最后一行“print(“超速”)”沒(méi)有進(jìn)行縮進(jìn);“代碼二”的分支結(jié)構(gòu)清晰,當(dāng)條件成立時(shí)執(zhí)行“print(“正?!?”,否則執(zhí)行“print(“平均車速”,round(v,1))”和“print(“超速”)”兩條語(yǔ)句。
本題是一道比較完整的例題,教材提供的資料也非常豐富,教學(xué)中可引導(dǎo)學(xué)生合作學(xué)習(xí)或自學(xué)。首先,引導(dǎo)學(xué)生自己分析任務(wù),建立初步的模型后進(jìn)行完善;然后,嘗試(仔細(xì)分析)畫(huà)出流程圖,理清框圖含義和程序運(yùn)行的順序,明確編程流程;最后,在完成程序調(diào)試的基礎(chǔ)上,鼓勵(lì)學(xué)生進(jìn)行學(xué)習(xí)評(píng)價(jià),總結(jié)解題步驟“抽象與建?!薄霸O(shè)計(jì)算法”“編寫(xiě)程序”“調(diào)試運(yùn)行”。
本題中的“while”循環(huán)結(jié)構(gòu)和“布爾”邏輯關(guān)系是非常重要的知識(shí)點(diǎn),正是構(gòu)造了“死循環(huán)”,程序才能實(shí)現(xiàn)輸出“正確”反饋,以及“偏小”和“偏大”的提示。
可以先讓學(xué)生查找資料,了解“海倫公式”,再引出用“用典型的例題和數(shù)學(xué)思想解釋一般問(wèn)題”的思想。
通過(guò)自定義Area函數(shù)來(lái)“求解分割的4個(gè)三角形面積之和”求得正多邊形面積,推理出用函數(shù)和“海倫公式”求面積的誤差,理解函數(shù)的應(yīng)用過(guò)程:“將輸入經(jīng)過(guò)一定的變換和處理后得到預(yù)定的輸出,函數(shù)就是一個(gè)盒子,可將反復(fù)執(zhí)行的代碼封裝為函數(shù)”,再適時(shí)地講解“形參和實(shí)參,直接修改形參的值不會(huì)影響實(shí)參”[1]。
在學(xué)習(xí)完本題后,可以補(bǔ)充“驗(yàn)證.py文件可以通過(guò)模塊來(lái)導(dǎo)入,說(shuō)明Python源文件是模塊”的內(nèi)容。接下來(lái),再教學(xué)“模塊的導(dǎo)入及應(yīng)用”就非常容易了,Python的教學(xué)內(nèi)容補(bǔ)充非常重要,要考慮到補(bǔ)充內(nèi)容的適時(shí)性和實(shí)用性,也要實(shí)現(xiàn)對(duì)后面知識(shí)點(diǎn)教學(xué)的鋪墊。
本題是一個(gè)綜合的例題,教材提供了“實(shí)踐與體驗(yàn)”步驟的詳細(xì)資料,幫助學(xué)生合作或獨(dú)立完成。在教學(xué)中可以通過(guò)微課,安裝“Pycharm”,并獨(dú)立完成教材“繪制六邊形的過(guò)程”(第66頁(yè))試題或“思考與練習(xí)第6題”(第89頁(yè))試題,熟悉Pycharm編程環(huán)境。
學(xué)生輸入程序后,可指導(dǎo)學(xué)生用file->settings->projectinterpreter,雙擊“pip”,搜索“pillow”,點(diǎn)擊“pillow”,用左下角“install”來(lái)安裝,或直接在庫(kù)(模塊)的提示上加載庫(kù)(模塊)。當(dāng)庫(kù)(模塊)都加載成功后,再通過(guò)修改“RBG”參數(shù)調(diào)試程序。
這一類數(shù)字圖像處理綜合例題,能夠?qū)崿F(xiàn)用項(xiàng)目來(lái)檢驗(yàn)和再學(xué)習(xí)。讓學(xué)生知道“用Python程序設(shè)計(jì)語(yǔ)言可編寫(xiě)具有圖像處理功能的應(yīng)用程序,如圖像的大小和顏色調(diào)整、圖像的合成、圖像的濾鏡添加等”[2]。教師要關(guān)注學(xué)生核心素養(yǎng)的培養(yǎng),通過(guò)解決綜合性較強(qiáng)的復(fù)雜問(wèn)題,讓學(xué)生自覺(jué)主動(dòng)地分析問(wèn)題背景,從紛繁復(fù)雜的線索中提取有效信息,明確已知條件和求解的問(wèn)題;通過(guò)小組討論方式,在合作解決問(wèn)題的過(guò)程中,培養(yǎng)學(xué)生團(tuán)隊(duì)協(xié)作,共享信息的意識(shí)。
本題是應(yīng)用Python語(yǔ)言實(shí)現(xiàn)對(duì)數(shù)據(jù)進(jìn)行管理和統(tǒng)計(jì)的項(xiàng)目挑戰(zhàn)例題,學(xué)生會(huì)使用相關(guān)數(shù)字化工具(Excel和Python)通過(guò)對(duì)生活中事物關(guān)聯(lián)進(jìn)行調(diào)查和數(shù)據(jù)整理,形成數(shù)據(jù)表,最終抽象和統(tǒng)計(jì)出數(shù)據(jù)背后的規(guī)律。教學(xué)時(shí),建議創(chuàng)設(shè)一個(gè)真實(shí)的情境(可選用“尋找關(guān)聯(lián)次數(shù)最多的商品”這個(gè)項(xiàng)目),學(xué)生統(tǒng)計(jì)并填寫(xiě)一個(gè)數(shù)據(jù)表,也可以用虛擬軟件生成數(shù)據(jù)表,旨在分析數(shù)據(jù)之間的關(guān)聯(lián)。
程序在編寫(xiě)過(guò)程中常常會(huì)遇到困難,可以通過(guò)小組合作,查找相關(guān)資料的方法應(yīng)對(duì),教師也要進(jìn)行細(xì)致的指導(dǎo)和項(xiàng)目實(shí)施方向的把控。編程輸出結(jié)果后,可根據(jù)程序結(jié)果分析和討論一下數(shù)據(jù)關(guān)聯(lián)的實(shí)際意義,發(fā)掘出對(duì)新觀念和新事物的積極學(xué)習(xí)態(tài)度、預(yù)測(cè)、理性判斷和負(fù)責(zé)任的應(yīng)對(duì)策略,在信息社會(huì)中有一定的信息安全意識(shí)與能力,能夠遵守信息法律法規(guī),信守信息社會(huì)的道德與倫理準(zhǔn)則,在現(xiàn)實(shí)空間和虛擬空間中遵守公共規(guī)范,既能有效維護(hù)信息活動(dòng)中個(gè)人的合法權(quán)益,又能積極維護(hù)他人合法權(quán)益和公共信息安全;關(guān)注信息技術(shù)革命所帶來(lái)的環(huán)境問(wèn)題與人文問(wèn)題[3]。
高中階段的學(xué)生已經(jīng)形成了一定的思維習(xí)慣,在教學(xué)Python時(shí),應(yīng)以解決實(shí)際問(wèn)題的項(xiàng)目式學(xué)習(xí)為基礎(chǔ),在程序設(shè)計(jì)時(shí)形成“隨用隨取”的編程方法,避免枯燥的語(yǔ)句和語(yǔ)法講解,關(guān)注學(xué)習(xí)過(guò)程的知識(shí)積累和評(píng)價(jià),通過(guò)自主學(xué)習(xí)與合作學(xué)習(xí)突破學(xué)習(xí)難點(diǎn),鼓勵(lì)資料查找和新工具的使用,形成獨(dú)立使用Python建立抽象模型、構(gòu)建算法、編寫(xiě)和調(diào)試程序的創(chuàng)新能力。