李敏 程建娜



● 教材分析
本節(jié)課選自人教-地圖版《數據與計算》的第二章《算法與程序實現》,本章按照計算機解決問題的過程展開,其中第四節(jié)是在學生掌握算法與程序設計基本知識的基礎上,進一步理解常見算法及其程序實現的過程,并考慮算法的效率。本節(jié)課為第四節(jié)的第2課時,主要內容為理解枚舉算法,是在本章前面章節(jié)項目實施的基礎上進行的,考慮到借班上課中學生的基礎和課堂實施效果,我對教材內容進行了處理,刪減了算法效率內容,重新設計了本節(jié)課的研究問題。
● 學情分析
當今社會,信息技術已廣泛應用于社會生活的各個領域,學生習慣用技術解決問題,但他們只是被動的使用者,很少關注算法在其中所起的作用,也很少有意識地主動用技術去創(chuàng)新或研究問題。另外,學生從小就學習大量古詩,他們對詩人間的“關系”了解不多,但卻非常感興趣。而對于施教班級所屬學校的騰沖一中的學生而言,他們之前沒有接觸過算法與程序,沒有Python編程基礎。
● 教學目標
(1)了解枚舉算法求解問題的基本過程,理解其基本思想,能用流程圖描述該算法。(計算思維)
(2)理解枚舉算法的編程實現過程,能編寫程序并調試運行實現問題求解。(計算思維、數字化學習與創(chuàng)新)
(3)通過項目研究,認識枚舉算法在學習生活中的應用價值,理解用計算機解決問題的優(yōu)勢。(信息意識、信息社會責任)
● 教學重難點
教學重點:理解枚舉算法思想,能用流程圖描述該算法,體驗用枚舉思想解決問題的過程。
教學難點:編寫程序實現枚舉算法解決相關問題。
● 課時安排
1課時。
● 教學方法與手段
項目學習、合作探究、啟發(fā)式、探究法。
● 教學準備
網絡機房、教學機房、學習單以及半成品Python程序。
● 教學過程
1.項目活動熱身,認識枚舉算法
教師談及現代社會通過朋友圈點贊等判斷兩人之間的關系,提問:“古時候如何判斷兩個人之間的關系呢?”
學生回答可通過書信詩詞判斷古時兩人之間的關系,并舉例說出詩人及對應的古詩。
學生觀看視頻,梳理盛唐幾位詩人之間的關系。
教師引出本節(jié)課的項目主題和研究范圍:
項目主題:解密唐朝詩人之間的關系。
研究范圍:以盛唐幾位詩人(如杜甫、李白、孟浩然、王維等)為例進行研究,感興趣的學生可以拓展研究更多的唐朝詩人。
學生以小組為單位,在規(guī)定時間內查找唐詩文檔中杜甫創(chuàng)作的提及李白的古詩,并填寫在學習單中。
教師分析學生的查找過程,整理問題解決思路——需要在唐詩庫中對每一首古詩進行列舉并判斷,引出這種解決問題的方法即為枚舉算法,并提出枚舉算法的兩個關鍵點——逐一列舉和逐個驗證。
設計意圖:本環(huán)節(jié)由學生熟識的朋友圈點贊和微博@引入古代詩人間關系的判斷,問題的切入比較獨特,很容易激發(fā)學生的研究興趣,為后續(xù)項目實施奠定基礎。此外,從人工枚舉解決問題入手,既初步幫助學生認識枚舉算法及其基本原理,又讓學生感受到枚舉算法在實際生活中應用的普遍性,為后續(xù)計算機枚舉做好鋪墊。
2.項目分析與算法設計,理解枚舉算法
教師分析人工枚舉的問題,引出用計算機實現問題解決。
教師對照人工枚舉的過程,先確定計算機枚舉的輸入與輸出,再分析計算機實現枚舉過程的步驟,指出采用流程圖的圖塊表示每個步驟。
教師布置學習單任務:將每個步驟連接起來,用流程圖描述剛才問題解決的完整過程。(如圖1)
學生補充繪制流程圖。
教師展示學生的流程圖,分析問題,補充流程控制線,形成完整的流程圖(如圖2)。
教師再次引導學生理解枚舉算法解決該問題的過程。
設計意圖:本環(huán)節(jié)用流程圖描述計算機求解詩人關系的枚舉算法,這是本節(jié)課的重點,也是本節(jié)課的難點,同時也是發(fā)展計算思維的關鍵。其中,通過對人工枚舉過程的細化,幫助學生進一步深化對枚舉算法的認識,理解算法步驟在計算機解決問題過程中的作用。最后設計得到的完整流程圖,既是本節(jié)課學習的關鍵內容,也是后面程序實現的重要依據。
3.項目初體驗,編寫程序語句實現枚舉算法
教師引導學生認識流程圖中算法步驟所對應的關鍵程序語句(如圖3)??紤]到學生的基礎,教師給出采用Python語言編程的具體語句示范。
師:計算機如何判斷古詩里面哪里是作者、題目、詩句呢?
教師以《春曉》這首古詩為例,講授計算機用列表的數據類型表示古詩的方法(如圖4)。
學生依據學習單,分組完善Python程序,查找詩人關系,并填寫表格(如下表)。
教師巡視并及時發(fā)現問題,針對共性問題進行講解。
設計意圖:本環(huán)節(jié)主要是根據設計好的算法進行程序實現??紤]到學生之前沒有接觸過Python語句,不太了解相關程序語句及功能,因此這是本節(jié)課的第二個教學難點。為了在短時間內有效突破難點,設計了兩個半成品程序,分別指向枚舉算法的兩個關鍵點,學生通過補全半成品的程序,關注枚舉算法的核心實現。
4.項目實現,修改枚舉算法完善程序
教師展示學生的程序運行結果并提出疑問:“杜甫提及李白的古詩為10首,但對比史料記載,杜甫提及李白的古詩為12首,這是為什么呢?”
生:很多詩人都有別稱,詩人乙出現在古詩中的方式可能會以別稱的方式出現。
師生確定結果遺漏的解決方案:需要加入對詩人別稱的檢驗,應該在枚舉過程中,增加一個判斷檢驗條件。
師:如何修改枚舉算法呢?
學生交流討論并結合任務單進行思考。
師:算法完善的位置應該是A還是B?(如圖5)
生:位置B。
師生共同修改完善程序,完成項目的研究。
學生圍繞程序運行結果進行討論。
師:根據表格中的數據,大家有哪些啟發(fā)和結論呢?
設計意圖:本環(huán)節(jié)結合對程序運行結果的問題分析,引導學生關注程序調試運行的作用,并進一步加深對算法作用的理解,在采用枚舉法解決問題的過程中,驗證條件至關重要。其中,對項目研究結果的討論,再次讓學生從技術學習回歸到真實的問題解決中,給學生一種基于數據研究唐詩的視角,激發(fā)他們后續(xù)綜合應用語文、歷史等學科知識進行深入探索研究的興趣。
5.項目總結,歸納枚舉算法拓展研究視角
教師總結本節(jié)課項目研究的過程以及枚舉算法的基本思想,提問:“那枚舉法可以解決生活中所有的問題嗎?”
學生嘗試歸納枚舉算法適合解決的問題的特點。
師:枚舉法適用于解決求解方案數量有限、答案可以按照某種規(guī)則一一列舉出來的項目。
枚舉算法是最簡單也是應用范圍最廣的一種基本算法,那你認為枚舉法還可以解決生活和學習中的哪些問題呢?
學生討論作答。
師:一起來看看下列這些應用中,哪些可以采用枚舉法來解決?分析其中對應的枚舉算法兩要素。(如圖6)
學生分析每個選項,教師引導分析兩個關鍵點對應的內容。
師:枚舉法可以完成很多項目,如導航地圖中的乘車路線規(guī)劃。需要注意的是,雖然用計算機實現枚舉算法比較高效,但如果確定枚舉范圍太大,數據量會很大,同樣會消耗大量運行時間,在這種情況下,我們還需要考慮算法效率,優(yōu)化算法,所以也期待大家進一步進行學習。
設計意圖:本環(huán)節(jié)的設計是對枚舉算法的延伸和總結。一方面,引導學生思考枚舉算法的適用特點;另一方面,引導學生思考在日常生活中的應用案例,幫助學生對枚舉算法有一個全面的認識。