呂寬武 浙江省龍游中學(xué)
筆者所在區(qū)域舉行的高中信息技術(shù)課堂教學(xué)評(píng)比活動(dòng)由上課和說(shuō)課兩部分組成。此次活動(dòng)是為了交流各縣信息技術(shù)教學(xué)的新思路,因此采取同題異構(gòu)的教學(xué)方式。但是筆者在接到《編程處理數(shù)據(jù)》這個(gè)課題之后,遇到了兩個(gè)難題:其一,基于新教材的備課資料“一窮二白”;其二,時(shí)間緊(9天)、要求高(項(xiàng)目化學(xué)習(xí)),備課難度大。
浙教版高中信息技術(shù)教材將本課內(nèi)容分為三塊:①利用pandas模塊處理數(shù)據(jù),主要內(nèi)容有Series和DataFrame兩種數(shù)據(jù)結(jié)構(gòu),以及它們的常用屬性和常用函數(shù);②利用matplotlib模塊繪圖,主要內(nèi)容是學(xué)習(xí)常用繪圖函數(shù);③利用Python分析數(shù)據(jù)實(shí)踐。教師用書上建議先講授pandas的兩種數(shù)據(jù)結(jié)構(gòu)Series和DataFrame,然后引導(dǎo)學(xué)生參照教材例題進(jìn)行實(shí)踐探究,但這種教法作為比賽課會(huì)不會(huì)太常規(guī)而提不起學(xué)生的興趣呢?
在此前市教研員開展的相關(guān)培訓(xùn)中,筆者受到了啟發(fā):通過(guò)創(chuàng)設(shè)一個(gè)真實(shí)情境項(xiàng)目,再組織學(xué)生扮演特定的角色,一邊開展學(xué)習(xí)一邊完成項(xiàng)目。針對(duì)筆者這個(gè)想法,縣教研員提出了修改建議:不僅要?jiǎng)?chuàng)設(shè)真實(shí)情境開展項(xiàng)目學(xué)習(xí),還要落實(shí)計(jì)算思維的培養(yǎng)。因此,筆者明確了本節(jié)課的教學(xué)主題“編程統(tǒng)計(jì)衢州五校的百家姓”,該項(xiàng)目需要三個(gè)課時(shí)完成,以下是第一課時(shí)的內(nèi)容。
課前教師播放歌曲《百家姓》和視頻介紹。
師:百家姓是對(duì)姓氏人數(shù)的一種統(tǒng)計(jì)及排名,不同朝代有不同的百家姓,今天我們一起來(lái)統(tǒng)計(jì)身邊的百家姓。如果要統(tǒng)計(jì)班級(jí)中哪種姓氏的人數(shù)最多,應(yīng)如何進(jìn)行統(tǒng)計(jì)?
生:在班級(jí)名單上數(shù)一數(shù)(人工)。
師:如果我們要統(tǒng)計(jì)整個(gè)年級(jí)姓氏人數(shù)前五名,又需要怎么統(tǒng)計(jì)?
生:使用表格處理軟件,如Excel。
師:如果要統(tǒng)計(jì)衢州五校的百家姓,又需要怎么統(tǒng)計(jì)?
學(xué)生思考、產(chǎn)生疑問(wèn)。
師:要統(tǒng)計(jì)衢州五校所有學(xué)生的姓氏情況,數(shù)據(jù)量較大,如果還是使用表格處理軟件處理數(shù)據(jù)就會(huì)比較慢,為了提升效率,選擇使用編程軟件處理數(shù)據(jù)會(huì)比較合適,如Python。接下來(lái),我們一起來(lái)統(tǒng)計(jì)衢州五校的百家姓。
設(shè)計(jì)意圖:首先以音樂(lè)、視頻導(dǎo)入新課,激發(fā)學(xué)生的學(xué)習(xí)熱情;然后提出處理數(shù)據(jù)量由小到大的三個(gè)問(wèn)題,逐步引出項(xiàng)目“編程統(tǒng)計(jì)衢州五校的百家姓”。
師:假如你是百家姓統(tǒng)計(jì)小隊(duì)成員,并已經(jīng)拿到學(xué)生名單,請(qǐng)通過(guò)編程讓計(jì)算機(jī)實(shí)現(xiàn)統(tǒng)計(jì)。根據(jù)計(jì)算機(jī)解決問(wèn)題的一般步驟,首先需要設(shè)計(jì)算法。
學(xué)生設(shè)計(jì)算法。
師:編程統(tǒng)計(jì)衢州五校百家姓的算法是怎樣的呢?在這里,老師給出了具體步驟,但是這些步驟是無(wú)序的(如圖1),需要同學(xué)們自行排序。

圖1
學(xué)生思考、總結(jié)、回答。
設(shè)計(jì)意圖:讓學(xué)生置身情境當(dāng)中,主動(dòng)思考算法步驟,驅(qū)動(dòng)項(xiàng)目分解。
師:算法中的每一個(gè)步驟都是一個(gè)子項(xiàng)目,“編程統(tǒng)計(jì)衢州五校百家姓”這個(gè)總項(xiàng)目分成了六個(gè)子項(xiàng)目,接著,我們來(lái)實(shí)現(xiàn)第一個(gè)子項(xiàng)目“讀取數(shù)據(jù)”。
探究問(wèn)題1:如何從外部文件中讀取數(shù)據(jù)?
學(xué)生根據(jù)導(dǎo)學(xué)案中探究1進(jìn)行思考、總結(jié)、展示(如圖2)。

圖2
教師利用多媒體投影展示、評(píng)價(jià)、改正。
師:接下來(lái),我們利用Python編寫以上程序并調(diào)試運(yùn)行,實(shí)現(xiàn)從外部文件讀取數(shù)據(jù)。
學(xué)生編寫程序、調(diào)試運(yùn)行。
設(shè)計(jì)意圖:通過(guò)探究問(wèn)題1的開展,促進(jìn)學(xué)生自主學(xué)習(xí)課本內(nèi)容;通過(guò)多媒體投影展示,得以及時(shí)評(píng)價(jià)鞏固;通過(guò)編寫程序、調(diào)試運(yùn)行的過(guò)程,體驗(yàn)成功的樂(lè)趣。
師:“編程統(tǒng)計(jì)衢州五校百家姓”中的第一個(gè)子項(xiàng)目“讀取數(shù)據(jù)”我們已經(jīng)完成了,接下來(lái),我們要實(shí)現(xiàn)第二個(gè)子項(xiàng)目“取出姓氏”。
探究問(wèn)題2:如何提取姓名中的姓氏?
學(xué)生思考、總結(jié)、回答。
師:同學(xué)們說(shuō)出了通常的做法,現(xiàn)在要用計(jì)算機(jī)編程解決這個(gè)問(wèn)題,首先要考慮在這個(gè)過(guò)程中會(huì)涉及哪些變量?
生:姓名、姓。
師:“姓名”可以用一個(gè)變量來(lái)存儲(chǔ),如name;“姓”可以用另一個(gè)變量存儲(chǔ),如“x”。這個(gè)過(guò)程稱作什么?
生:抽象。
師:經(jīng)過(guò)抽象后,這個(gè)問(wèn)題變成了從name中取出x的問(wèn)題(如下頁(yè)圖3),那么是怎樣從name中取出x的呢?

圖3
學(xué)生思考、總結(jié)、回答。
師:同學(xué)們知道根據(jù)name的情況來(lái)取出x,老師總結(jié)了大家的做法并推導(dǎo)出這個(gè)計(jì)算模型的過(guò)程(如下頁(yè)圖4),我們可以將其稱為什么?

圖4
生:建模。
師:在用計(jì)算機(jī)編程解決問(wèn)題的過(guò)程中,首先是抽象,然后是建模,接下來(lái)是什么呢?
生:設(shè)計(jì)算法。
師:取出姓氏的自然語(yǔ)言描述的算法為:①獲取姓名存入name中;②name是否復(fù)姓?如果是,取前面2個(gè)字符,如果否,取前面1個(gè)字符。請(qǐng)同學(xué)們根據(jù)上述算法,在導(dǎo)學(xué)案探究2中完成“取出姓氏”的流程圖設(shè)計(jì)。
學(xué)生思考、繪制流程圖。教師展示學(xué)生的流程圖和標(biāo)準(zhǔn)的流程圖并點(diǎn)評(píng)。
師:取出1個(gè)姓名中姓氏的流程圖算法成功了,要取出多個(gè)姓名中姓氏的流程圖又怎么實(shí)現(xiàn)呢?
生:可以進(jìn)行多次循環(huán)。
師:算法設(shè)計(jì)好之后,就要編寫程序,有了流程圖表示的算法,編寫程序就變得有章可循,只需按照步驟對(duì)應(yīng)過(guò)來(lái)(如圖5)。現(xiàn)在,請(qǐng)大家利用Python合作編寫以上程序并調(diào)試運(yùn)行,實(shí)現(xiàn)從所有姓名中取出姓氏。

圖5
學(xué)生相互合作編寫程序、調(diào)試運(yùn)行。
設(shè)計(jì)意圖:幫助學(xué)生理清用計(jì)算機(jī)解決問(wèn)題的過(guò)程,落實(shí)培養(yǎng)計(jì)算思維的目標(biāo);通過(guò)合作編寫程序,既能增強(qiáng)學(xué)生的獲得感,又能提升學(xué)生的反思意識(shí)。
師:本節(jié)課我們創(chuàng)設(shè)了一個(gè)總的項(xiàng)目“編程統(tǒng)計(jì)衢州五校的百家姓”,然后通過(guò)算法的設(shè)計(jì),將其分成了六個(gè)子項(xiàng)目。通過(guò)第一個(gè)子項(xiàng)目“讀取數(shù)據(jù)”,我們學(xué)習(xí)了pandas模塊、Series和DataFrame兩種數(shù)據(jù)結(jié)構(gòu)、read_excel()函數(shù);通過(guò)第二個(gè)子項(xiàng)目“取出姓氏”,我們回顧了用計(jì)算機(jī)編程解決問(wèn)題的一般過(guò)程,學(xué)習(xí)了兩種數(shù)據(jù)結(jié)構(gòu)中的常用屬性index和常用函數(shù)append。后面的課程我們將繼續(xù)學(xué)習(xí)其余四個(gè)子項(xiàng)目以及統(tǒng)計(jì)“大眾化名字”等拓展項(xiàng)目,讓我們一起期待項(xiàng)目的實(shí)現(xiàn)吧。
設(shè)計(jì)意圖:通過(guò)課堂總結(jié),幫助學(xué)生整理學(xué)科知識(shí)并調(diào)動(dòng)學(xué)生對(duì)后期項(xiàng)目學(xué)習(xí)的積極性。
項(xiàng)目化學(xué)習(xí)這五個(gè)字看似簡(jiǎn)單,但要真正執(zhí)行起來(lái),真正讓課堂有效起來(lái),是要付出很多努力的。創(chuàng)設(shè)項(xiàng)目要真實(shí)有趣,合作探究要涵蓋所學(xué)內(nèi)容,讓學(xué)生的能力在完成項(xiàng)目的過(guò)程中得以提升。可見,項(xiàng)目化學(xué)習(xí)是一個(gè)系統(tǒng)工程,需要教師用整體的思想去設(shè)計(jì)教學(xué),用分步的思想去開展項(xiàng)目。
在將知識(shí)融入項(xiàng)目的過(guò)程中,學(xué)生為實(shí)現(xiàn)真實(shí)有趣的項(xiàng)目并滿足自己的成就感,對(duì)項(xiàng)目中所要學(xué)習(xí)的知識(shí)是十分渴望的,因此,在探究“如何從外部文件中讀取數(shù)據(jù)”的過(guò)程中,學(xué)生積極且高效地開展自主學(xué)習(xí),并取得了優(yōu)異的成果。
項(xiàng)目化學(xué)習(xí)解決了真實(shí)問(wèn)題,培養(yǎng)了核心素養(yǎng),但其所涵蓋的知識(shí)是有限和特定的,在平時(shí)的教學(xué)中還需要采用多元化的教學(xué)方式。
筆者一直在思考什么是落實(shí)計(jì)算思維的信息技術(shù)教學(xué)。在“如何取出姓氏”的探究中,以往課堂教學(xué)的重心都會(huì)放在程序的編寫上,那是因?yàn)閷W(xué)生沒(méi)有理解計(jì)算機(jī)是如何進(jìn)行處理的。在本課中,筆者通過(guò)抽象建模、設(shè)計(jì)算法、編寫程序、調(diào)試運(yùn)行,鍛煉學(xué)生形成自主解決問(wèn)題的能力,使學(xué)生能夠采用計(jì)算機(jī)來(lái)界定問(wèn)題、抽象特征、建立結(jié)構(gòu)模型、合理組織數(shù)據(jù),從而能夠真正地通過(guò)計(jì)算機(jī)編程的方式解決問(wèn)題。