資源簡介 第十課“韓信點兵”枚舉法的實現一、學習內容分析本課是浙江省小學信息技術六年級上冊第二單元《算法的效率》第3課。教材包括二塊內容:枚舉算法解決問題的一般過程,枚舉法的程序實現。解決同一個問題可能會有很多種算法,不同算法的效率也有可能是不一樣的,在利用算法解決問題時,要根據問題求解的需求設計出合適的算法。本章內容就是為了讓學生明白不同算法效率不同。本單元以“韓信點兵”為例,讓學生用枚舉法、篩選法、同余法實現,并且能依照算法的描述和問題實例評估算法的效率。二、學情分析本課學習對象為六年級的學生,在前面的9節課程里,學生已經掌握了算法解決問題的一般過程,并能用python對算法進行執行、驗證。他們了解算法的基本特征以及基本結構。同時,他們善于合作,樂于表達,初步具備用枚舉算法解決問題的能,但獨立算法設計以及用python的實現算法還是有一定難度。學習目標教學目標 核心素養指向1.理解枚舉算法的思想,掌握枚舉法解決問題的一般過程。 2.通過使用枚舉算法解決“韓信點兵”問題,掌握枚舉算法的程序實現。 【信息意識】 在完成任務過程中,有意識地尋求恰當的算法解決問題,了解枚舉算法的優勢和局限。 【計算思維】 理解流程圖的方式,描述求解簡單問題的算法,并對算法的正確性與執行效率進行討論和辨析。四、教學重難點教學重點:用枚舉法實現“韓信點兵”的算法。教學難點:利用循環結構和分支結構對“韓信點兵”進行python的算法實現。通過小組合作、實踐探究、分析歸納輔以教師指導等多種方式逐一突破。五、課前準備學習資源:教學課件,教學視頻六、學習過程(一)視頻引入 激發興趣學習內容與活動 設計意圖視頻引入,揭示課題 觀看視頻,了解“韓信點兵”的典故。 韓信將1500名將士與楚王大將李鋒交戰雙方大戰一場,戰后,死傷四五百人。韓信于是命令士兵3人一排,結果多出2名;接著,他又命令士兵5人一排,結果多出3名;再命令士兵7人一排,結果又多出2名。韓信馬上向將士們宣布:我軍共有1073名勇士。 提問:假如是你來“點兵”,你會采用哪種算法? 以“韓信點兵”的典故引入,引導學生思考為什么能這么快計算出結果,思考用什么算法解決問題。(二)抽象與建立模型學習內容與活動 設計意圖小組討論,抽象“韓信點兵”關鍵要素: 總人數:1500 死傷人數:四五百人 三人一排余二人 五人一排余三人 七人一排余2人 歸納:韓信點兵問題,實際就是在1000~1100范圍內,找出滿足條件的數。 學習活動一:用表示士兵可能的人數,列出所有滿足條件的數。 (3)由抽象出的表格,進一步抽象規則。 當X=1000時,條件“x除以3余2、x除以5余3、x除以7余2 “是否同時滿足? 當X=1001時,條件“x除以3余2、x除以5余3、x除以7余2 “是否同時滿足? …… 當X=1100時,條件“x除以3余2、x除以5余3、x除以7余2” 是否同時滿足? (4)想一想:“韓信點兵”問題適合用什么算法解決? 引導學生對枚舉法的范圍、順序、條件進行抽象建模。 枚舉范圍:1000-1100 枚舉順序:從1000到1100 枚舉條件:同時滿足x除以3余2、x除以5余3、x除以7余2三個條件。 抽象韓信點兵關鍵要素,以及分析典故里的變量,讓學生在后面能比較輕松建立模型。 利用關鍵要素,建立出枚舉法的模型。(三)探究過程,算法設計學習內容與活動 設計意圖1.用枚舉法,分析“韓信點兵”的算法結構 用條件循環實現:X依次取值1000-1100。 用分支結構判斷:“條件x除以3余2、x除以5余3、x除以7余2”是否同時滿足。 2.學習活動二:小組討論,并嘗試完善算法流程圖。 用枚舉法分析“韓信點兵”的算法結構,并嘗試進行算法設計。完整邏輯鏈,突破本課的難點。(四)算法的程序實現學習內容與活動 設計意圖學習小錦囊,將以下循環條件和分支判斷的步驟轉化為python語句。 2.學習活動三:嘗試編寫程序,運行并調試程序。 強調: 求余數的運算符為“%”,例如x%y,表示x除以y的余數多少。 遷移應用:如何用枚舉法解決修改后的“韓信點兵”?修改程序,并運行。 用兩個步驟,分層次嘗試算法的實現,根據流程圖,一一對應寫出python程序。 通過練習,鞏固枚舉法的代碼實現。(五)梳理小結,拓展應用學習內容與活動 設計意圖請學生說一說用枚舉算法解決問題的一般過程。 (2)教師總結本課知識點 梳理總結本節課的知識點,明確收獲,找出不足,引導學生課后再進一步學習。板書設計:《韓信點兵枚舉法的實現》(共15張PPT)“韓信點兵”枚舉算法的實現《信息科技》六年級上冊故事導入問題描述:韓信將1500名將士與楚王大將李鋒交戰雙方大戰一場,戰后,死傷四五百人。韓信讓士兵3人一排,結果多出2名;他讓士兵5人一排,結果多出3名;讓士兵7人一排,結果又多出2名。假如你來點兵,你將采用何種算法?問題描述:請你圈出問題中的關鍵要素。韓信點兵韓信將1500名將士與楚王大將李鋒交戰雙方大戰一場,戰后,死傷四五百人。韓信讓士兵3人一排,結果多出2名;他讓士兵5人一排,結果多出3名;讓士兵7人一排,結果又多出2名。韓信是怎么算出來的呢?抽象與建模:韓信點兵問題,實際就是在1000~1100范圍內,找出滿足條件的數。抽象與建模除3 除5 除7 是否滿足條件余 余 余用 表示士兵可能的人數,列出所有滿足條件的數.學習活動一:在1000~1100范圍內變量X抽象與建模當X=1000時,條件“x除以3余2、x除以5余3、x除以7余2 “是否同時滿足?當X=1001時,條件“x除以3余2、x除以5余3、x除以7余2 “是否同時滿足?……當X=1100時,條件“x除以3余2、x除以5余3、x除以7余2” 是否同時滿足?抽象與建模想一想:“韓信點兵”問題適合用什么算法解決?枚舉算法枚舉范圍:枚舉條件:1000 <= X <= 1100x除以3余2、x除以5余3、x除以7余2 三個條件。同時滿足循環結構分支結構枚舉順序:10001100算法設計開始X←1000x<1100 x除以3余2,且x除以5余3,且x除以7余2?x←x+1輸出X的值結束否是是否小組討論,并嘗試完善右邊的算法流程圖。學習活動二:算法程序實現開始X←1000x<1100 x除以3余2,且x除以5余3,且x除以7余2?x←x+1輸出X的值結束否是是否while x<1101 :if x%3==2 and x%5==3 and x%7==2:print(“剩余的士兵數為:”,X)小錦囊:要判斷多個條件是否同時滿足,需要用“and”邏輯運算符。算法的程序實現x=1000while x < 1101 :if x%3==2 and x %5==3 and x%7==2:print( “剩余的士兵數為:”, x )x=x+1嘗試編寫以下程序,運行并調試程序。學習活動三:遷移應用。假如:韓信將1500名將士與楚王大將李鋒交戰雙方大戰一場,戰后,死傷一二百人。韓信于是命令士兵3人一排,結果多出1名;接著,他又命令士兵5人一排,結果多出4名;再命令士兵7人一排,結果又多出3名。問剩下的士兵一共多少人?如何修改程序?python語言編寫的程序:x=1300while x < 1401 :if x%3==1 and x %5==4 and x%7==3 :print( “剩余的士兵數為:”, x )x=x+1課堂總結1、枚舉法解決問題的一般過程確定范圍、確定順序、確定滿足正確解的條件2、用枚舉法解決“韓信點兵”問題的程序實現。下課啦!請同學們關閉電腦,椅子歸位,排隊有秩序離開微機室。 展開更多...... 收起↑ 資源列表 10.“韓信點兵”枚舉法的實現.docx 10.“韓信點兵”枚舉法的實現.pptx 韓信點兵動畫.mp4 縮略圖、資源來源于二一教育資源庫