耿秋萍 江蘇省江陰市山觀高級(jí)中學(xué)
本節(jié)是教育科學(xué)出版社出版的普通高中教材信息技術(shù)必修1《數(shù)據(jù)與計(jì)算》的第四單元的開篇,內(nèi)容意在讓學(xué)生學(xué)會(huì)將解決問(wèn)題的方法歸結(jié)為一系列清晰、準(zhǔn)確的步驟,并能分析和掌握算法的要素和特征,逐步建立編程解決問(wèn)題的思維和方法。教材選用了“尋找‘開關(guān)對(duì)應(yīng)關(guān)系’”的活動(dòng)作為導(dǎo)入體驗(yàn)活動(dòng),讓學(xué)生通過(guò)完善流程圖的方式理解算法及其特征,而后通過(guò)“尋找‘被污染的藥丸’”和“尋找‘誤刪的ID號(hào)’”兩個(gè)活動(dòng),讓學(xué)生能夠全面系統(tǒng)地分析問(wèn)題。通過(guò)對(duì)學(xué)情的分析,結(jié)合《孫子算經(jīng)》中經(jīng)典的案例,筆者將教材中的理論重點(diǎn)保留,將問(wèn)題調(diào)整為“物不知數(shù)”“河?jì)D蕩杯”和“三女歸家”,這三個(gè)案例有共性的思維破解點(diǎn),均可利用枚舉法破解,均可采用條件循環(huán)實(shí)現(xiàn),但又有相異的發(fā)散點(diǎn),可以引導(dǎo)學(xué)生更好地理解算法的定義及其意義,增強(qiáng)學(xué)習(xí)活動(dòng)的參與度和體驗(yàn)感。原教材中的活動(dòng)設(shè)計(jì)具有較好的信息意識(shí)和計(jì)算思維提升作用,因此基于本節(jié)課的框架設(shè)計(jì),安排到學(xué)生課后的自主探究任務(wù)中。
本節(jié)課的核心學(xué)習(xí)目標(biāo)是學(xué)生能夠運(yùn)用枚舉法解決一類問(wèn)題。在教學(xué)設(shè)計(jì)時(shí)可將教學(xué)目標(biāo)的重點(diǎn)確定為“能夠設(shè)計(jì)解決問(wèn)題的算法并用恰當(dāng)?shù)姆绞矫枋?,通過(guò)實(shí)踐的反思去理解枚舉法的含義及其用法”。而本節(jié)課的難點(diǎn)不僅僅是在解決問(wèn)題過(guò)程中,對(duì)枚舉法的理解和舉一反三的提煉,還包括對(duì)《孫子算經(jīng)》中案例的解讀,這需要學(xué)生有較好的古文閱讀和理解能力,所以在定位教學(xué)目標(biāo)時(shí),需要把提高學(xué)生的古文閱讀能力也作為教學(xué)目標(biāo)中的一部分。
筆者根據(jù)對(duì)本節(jié)課教材的解構(gòu)與重新架設(shè),以預(yù)設(shè)的教學(xué)目標(biāo)為實(shí)踐基準(zhǔn),將學(xué)習(xí)活動(dòng)設(shè)為六個(gè)部分。具體的教學(xué)環(huán)節(jié)設(shè)計(jì)如下頁(yè)圖1所示。
圖1 《算法及其特征》第1課時(shí)學(xué)習(xí)活動(dòng)規(guī)劃設(shè)計(jì)
教師用學(xué)生耳熟能詳?shù)摹半u兔同籠”問(wèn)題引出它的出處,即《孫子算經(jīng)》。《孫子算經(jīng)》是中國(guó)古代重要的數(shù)學(xué)著作,卷上敘述算籌記數(shù)的縱橫相間制度和籌算乘除法,卷中舉例說(shuō)明籌算分?jǐn)?shù)算法和籌算開平方法。卷下第31題,可謂是后世“雞兔同籠”題的始祖。南宋大數(shù)學(xué)家秦九韶則進(jìn)一步開創(chuàng)了對(duì)一次同余式理論的研究工作,推廣“物不知數(shù)”的問(wèn)題……通過(guò)這樣的介紹,讓學(xué)生了解《孫子算經(jīng)》的歷史貢獻(xiàn)和它的主要內(nèi)容,讓他們?cè)诂F(xiàn)代化的學(xué)習(xí)環(huán)境中有意識(shí)、有興趣、有方向地融合傳統(tǒng)文化和科學(xué)知識(shí),引起他們的好奇心,使其急切地想要一睹被歐洲人反復(fù)稱道的“物不知數(shù)”。
首先讓學(xué)生通過(guò)閱讀和語(yǔ)言轉(zhuǎn)換,了解“物不知數(shù)”原文的含義:今有物不知其數(shù),三三數(shù)之剩二,五五數(shù)之剩三,七七數(shù)之剩二,問(wèn)物幾何?要求學(xué)生靜心閱讀,嘗試用白話文說(shuō)出自己的理解,并選擇不同的方式表達(dá)算法,可以是自然語(yǔ)言、流程圖或者偽代碼。之后展示《數(shù)書九章·大衍求一術(shù)》中的“術(shù)文”:“三三數(shù)之剩二,置一百四十;五五數(shù)之剩三,置六十三;七七數(shù)之剩二,置三十。并之,得二百三十三,以二百十減之,即得_____。”“答曰:二十三?!苯處焻f(xié)助學(xué)生理解這段“術(shù)文”,并沿著傳統(tǒng)思維回溯這種解題方法。學(xué)生在體驗(yàn)兩種算法的內(nèi)部邏輯與解題效率后,結(jié)合自身的能力與需求,作出選擇。
教師接著引導(dǎo)學(xué)生梳理思路,用所學(xué)的數(shù)學(xué)知識(shí)寫出近似圖2的表達(dá)式,方便更清晰地理解題目,并引入枚舉法,對(duì)比人腦與計(jì)算機(jī)的優(yōu)缺點(diǎn),介紹計(jì)算機(jī)的解題方式,把所有可能的答案一一列舉,合適就保留,不合適就丟棄。最終在表達(dá)框架中增加如圖3所示的表達(dá)式。
圖2
圖3
把每一句白話文轉(zhuǎn)譯成Python語(yǔ)句,運(yùn)行相應(yīng)程序,并查看結(jié)果。最終代碼如圖4所示。
圖4
通過(guò)對(duì)“物不知數(shù)”的算法剖析和代碼實(shí)現(xiàn),要求學(xué)生回省自己對(duì)算法的理解:算法可能是一個(gè)計(jì)算公式,也可能是一種解決問(wèn)題的策略或者方案。
依據(jù)學(xué)生對(duì)“物不知數(shù)”的算法體驗(yàn)過(guò)程,參考師生討論得出的算法的定義和特征,繼續(xù)探究《孫子算經(jīng)》中以下兩個(gè)有趣問(wèn)題:
①河?jì)D蕩杯。今有婦人河上蕩杯,津吏問(wèn)曰:“杯何以多?”“家有客。”津吏問(wèn)曰:“客幾何?”婦人曰:“二人共飯,三人共羹,四人共肉,凡用杯六十五,不知客幾何?”
②三女歸家。今有三女,長(zhǎng)女五日一歸,中女四日一歸,少女三日一歸,問(wèn)三女何日相會(huì)?
教師要求學(xué)生利用自己的思維方式,對(duì)這兩個(gè)問(wèn)題進(jìn)行算法分析(數(shù)學(xué)建模),然后通過(guò)編程實(shí)現(xiàn),并閱讀、欣賞原文中的解題方法。學(xué)生的思維方式多樣,最終形成的數(shù)學(xué)模型和代碼列舉如下。
①河?jì)D蕩杯。
方法一:利用代數(shù)法求解,設(shè)來(lái)了x位客人,根據(jù)題意:1/2x+1/3x+1/4x=65。
方法二:利用枚舉法,不知道來(lái)了多少位客人,從1開始嘗試,利用計(jì)數(shù)循環(huán)“for x in range(1,66):”,當(dāng)某個(gè)數(shù)滿足1/2x+1/3x+1/4x=65的情況時(shí),這個(gè)數(shù)即為客人人數(shù)。
②三女歸家。
三女若要相聚,則所經(jīng)歷的天數(shù)需達(dá)到一致,可以參考“物不知數(shù)”的解題思路,也可以另辟蹊徑,此問(wèn)題的本質(zhì)是求3、4、5的最小公倍數(shù)。且所求最小公倍數(shù)的各因子確切可知,倘若需求任意三個(gè)數(shù)的最小公倍數(shù),則如何?
要求學(xué)生根據(jù)“三女歸家”的拓展提問(wèn),豐富《孫子算經(jīng)》中的題目,由原文的固定條件改為不確定輸入,引出如何選擇最佳算法和Python實(shí)現(xiàn),為下節(jié)課的內(nèi)容埋下伏筆,讓學(xué)生帶著思考離開這一節(jié)課堂,帶著思想走進(jìn)下一節(jié)課堂。
話題一:《孫子算經(jīng)》中的文化感召如何融入《算法及其應(yīng)用》的教學(xué)目標(biāo)
本節(jié)課依據(jù)目標(biāo)規(guī)劃,把基本教學(xué)活動(dòng)設(shè)計(jì)為“介紹典籍,激發(fā)興趣——數(shù)學(xué)建?!锊恢獢?shù)’——剖析算法,轉(zhuǎn)換代碼——解決問(wèn)題,拓展延伸”,讓學(xué)生能夠多層次多角度嘗試將問(wèn)題作簡(jiǎn)化遷移,并利用已有的Python基礎(chǔ),較好較快地寫出代碼,調(diào)試運(yùn)行。
話題二:《孫子算經(jīng)》中的“術(shù)”與“法”如何推動(dòng)學(xué)習(xí)活動(dòng)的融合創(chuàng)新
課堂開始就開門見山地介紹千年前的數(shù)學(xué)典籍《孫子算經(jīng)》,讓學(xué)生了解其歷史地位,原文采用的“術(shù)”是秦九韶《數(shù)書九章》中求解一次同余式組的“大衍求一術(shù)”,此法復(fù)雜但快捷,普通人工的解法煩瑣但思路簡(jiǎn)單,而編程能很好地中和兩種方式的優(yōu)點(diǎn),利用枚舉法快速地實(shí)現(xiàn)釋疑。這種能夠?qū)崿F(xiàn)簡(jiǎn)單思維解決復(fù)雜問(wèn)題的方式,必然會(huì)引起學(xué)生的興趣,這時(shí)再呈現(xiàn)《孫子算法》中的三個(gè)經(jīng)典案例,讓學(xué)生一展身手。在他們興致正濃且志得意滿時(shí),延伸問(wèn)題,將簡(jiǎn)單的問(wèn)題變成令人深思的問(wèn)題,留下“如何求任意三整數(shù)的最小公倍數(shù)”類似問(wèn)題,讓學(xué)生帶著疑惑離開課堂,但思想?yún)s能長(zhǎng)久沉浸其中。
話題三:《孫子算經(jīng)》中的經(jīng)典案例如何成就學(xué)生建構(gòu)知識(shí)體系的思維創(chuàng)新
根據(jù)課堂中學(xué)習(xí)活動(dòng)的節(jié)奏,筆者嘗試把診斷型評(píng)價(jià)逐漸滲入《孫子算經(jīng)》的問(wèn)題分析和解題實(shí)施環(huán)節(jié),學(xué)生在評(píng)價(jià)中完善自我認(rèn)知。在本節(jié)課之初,由于學(xué)生對(duì)傳統(tǒng)文化與現(xiàn)代數(shù)學(xué)思維的結(jié)合尚需熱身,課堂節(jié)奏慢而平和,在學(xué)生適應(yīng)《孫子算法》的語(yǔ)言釋義以及算法表述的方式之后,課堂節(jié)奏快且熱切,學(xué)生的反應(yīng)由最初的齊聲迎合變?yōu)楹髞?lái)的追逐搶答,課堂的溫度也隨之產(chǎn)生由升溫到保溫到降溫的變化,讓學(xué)生體會(huì)到了在課堂中,入戲出戲時(shí)的不同情感狀態(tài)。