• 请登录
  • 免费注册

如何使用贝壳网教学资源

3.2 用穷举法解决问题

王维媛
第一中学
高中
信息技术
算法与程序设计
教科版
  • 469
  • 11
  • 举报

    恭喜你,回答正确~

    很遗憾,回答错误~

    正确答案: ,您可以

    回退查看

    也可以

    继续播放

    • 课例教学设计
    • 听课笔记
    • 课例资源
    • 同课异构
    • 问题锚点
    • 跳转锚点

    教学准备

    学情分析

           

       

        本节课选自教科版《算法与程序设计》选修第三章的第二节。本节课讲的是现实生活中解决问题的一种算法:穷举法,实际上是使用for… next循环语句来解决实际问题。本节要求学生初步了解穷举算法的思想,总结出穷举法解决问题的关键点,总结怎么优化穷举法,总结出哪一类的、具有什么特征的问题适合用穷举法来解决。



    教学工具

          本节内容的教学对象是高二年级学生,他们已经具备了一定的逻辑思维、分析问题、表达思想等能力。同时,通过前两个章节的学习与实践,学生已经历了用计算机解决问题的过程与步骤,学会了对计算机程序进行调试,并掌握了顺序、选择、循环三种程序结构,为本节内容的学习奠定了一定的基础,但对计算机编程中相关知识掌握还不是很深刻,学起来还是有一定的难度,尤其是对于偏文科的学生来说,所以在课堂讲授时,应尽可能基于学生实际,尽可能精心选取一些贴近学生的生活与经验的案例来讲述,这样不仅可激发学生的学习兴趣,教学效果也会好很多。另外特别注意理论与实践相结合,在做中学,在学中做,提高学生分析问题、解决问题与动手实践能力,同时提升其信息素养!


    教学设计

    教学目标

    知识与技能:     

         1、巩固 for…next循环语句的格式和运用。

         2、了解什么是穷举法以及用穷举法解决问题的一般步骤。

         3、了解穷举法具有一定的适用范围。

         4、 能够根据具体问题的要求,使用穷举法设计算法。

    过程与方法:   

       本节以“韩信点兵”和“百鸡百钱”问题入手,由浅入深讲解了穷举算法的思路。通过讨论、对比,熟练掌握穷举算法求解问题的方法。在编程实践之后,对各种方案进行对比试验,加深穷举算法的理解。

    情感态度与价值观:   

       了解算法和程序设计在计算机解决问题过程中的重要性;体验将算法转变为程序的过程,享受计算机解决问题的快乐;培养学生发现、探索和创新的能力。



    教学重难点

    教学重点用穷举法解决问题的一般步骤;能根据具体问题的要求,提高运用穷举法解决问题的能力。

    教学难点哪一类问题适合穷举法,确定穷举的范围以及评价穷举效率的高低。


    教学方法

    一、穷举法的定义     

           穷举法就是将求解对象一一列举出来,逐一加以分析、处理并验证结果是否满足给定的条件。

    二、穷举法应用案例(韩信点兵)程序代码

           计算机中是怎样解决“韩信点兵”的:

          Private Sub Command1_Click()

          Dim m As Integer, n As Integer

          m = 1: n = 0

          For m=1 to 100

              If m Mod 3 = 2 Then

                   If m Mod 5 = 3 Then

                       If m Mod 7 = 4 Then

                          n = m

                      End If

                   End If

               End If

          Next m

          Print n      

         End Sub

          注:此代码只适应求出满足三个条件的最后一个数,也就是n,它不能求出符合条件多个结果。

    三、穷举法的优化

        展示两段代码,请学生进行对比,讨论可以从哪些方面进行优化?

         代码一:

              Dim a,b,c As Integer

              For a=1 to 100

              For b=1 to 100

              For c=1 to 100

                    If a+b+c=100 and a*5+b*3+c/3=100 then

                        print a,b,c

                    end if

               next c

               Next b

              Next a

           代码二:

                Dim a,b,c As Integer

                For a=1 to 20

                For b=1 to 33

                C=100-a-b

                      If a+b+c=100 and a*5+b*3+c/3=100 then

                           print a,b,c

                      end if

                 Next b

               Next a

           注:穷举法的优化一定要让学生自主讨论,说出算法优化在何处,不能由老师讲授出来。

    四、穷举法的拓展与应用

        “百鸡百钱”问题程序代码如下       

          Dim a As Integer, b As Integer,c As Integer

         For a=1 to 100 

         For b=1 to 100

         For c=1 to 100

              If a+b+c=100 and a*5+b*3+c/3=100 then

                  print a,b,c

              end if

         next c

         Next b

         Next a



         


    教学过程

        

       “韩信点兵”问题引入

          基础版:韩信说:“如果每3个人编为一队,那最后剩下2个人;如果每5个人编为一队,那最后剩下3个人;如果每7个人编为一队,最后剩下2个人。请你自己算一下,我有多少士兵?(假设士兵总数不超过100人)

    进阶版:韩信说:“如果每3个人编为一队,那最后剩下2个人;如果每5个人编为一队,那最后剩下3个人;如果每7个人编为一队,最后剩下4个人。请你自己算一下,我有多少士兵?(假设士兵总数不超过100人)

          穷举法就是将求解对象一一列举出来,逐一加以分析、处理并验证结果是否满足给定的条件。穷举完所有对象,问题将最终得以解决。



    (一)用穷举法解决问题的关键

             1、确定问题求解时可能的搜索范围:利用嵌套循环结构实现;

             2、写出问题满足的条件:用if语句实现。

    二)提出任务,动手编程

          计算机中是怎样解决“韩信点兵”的。程序代码如下:

               Private Sub Command1_Click()

               Dim m As Integer, n As Integer

               m = 1: n = 0

               For m=1 to 100

                      If m Mod 3 = 2 Then

                          If m Mod 5 = 3 Then

                             If m Mod 7 = 4 Then

                                 n = m

                              End If

                           End If

                       End If

                Next m

                 Print n      

                 End Sub

    三)、规律总结

        利用穷举法解决问题的基本思路

              1、确定枚举对象、枚举范围和判定条件;

               2、枚举可能的解,验证是否是问题的解。


    (四)、合作探究    

        要学生解决“百鸡百钱”问题

        公元前5世纪,我国数学家张丘建在《算经》一书中提出了一个“百钱买百鸡问题”。问题如下:鸡翁一值钱5,鸡母一值钱3,鸡雏三值钱1。百钱买百鸡,问鸡翁、鸡母和鸡雏各几何?

        那么对于此题,用现代文是这样描述的:一只公鸡值五文钱,一只母鸡值三文钱,三只小鸡值一文钱,问一百文钱买一百只鸡,可以买多少只公鸡、母鸡和小鸡。当然这个题它还有一个隐性条件就是说你买回来的公鸡、母鸡和小鸡必须是一个整数。程序代码如下:

           Dim a As Integer, b As Integer,c As Integer

           For a=1 to 100 

           For b=1 to 100

           For c=1 to 100

                 If a+b+c=100 and a*5+b*3+c/3=100 then

                      print a,b,c

                 end if

           next c

           Next b

           Next a


    (五)、穷举法的应用

        穷举是用计算机求解问题最常用的方法之一,常用来解决那些通过公式推导、规则演绎的方法不能解决的问题。采用穷举法求解一个问题时,通常先建立一个数学模型,包括一组变量、以及这些变量需要满足的条件。问题求解的目标就是确定这些变量的值。根据问题的描述和相关的知识,能为这些变量分别确定一个大概的取值范围。在这个范围内对变量依次取值,判断所取的值是否满足数学模型中的条件,直到找到全部符合条件的值为止。

         1、有明显的穷举范围且求解对象应该是有限的;

         2、可以按某种规则列举对象;

         3、一时找不到解决问题的更好途径时。

       思考:穷举法在生活中还有哪些应用?

    六)、拓展延伸

       提问:我们使用信用卡在柜员机上取钱时,为什么系统要限制输入密码的次数?


        1、穷举法的定义

        2、穷举法的讲解

        3、穷举法的优化与应用

    其他同步教学设计

      设置问题锚点

      时间点:
      当前视频时间点
      问题:
      • 选项一

        设为正确答案

      新增选项
      正确跳转时间:
      同锚点时间
      错误跳转时间:
      同锚点时间

      设置跳转锚点

      时间点:
      当前视频时间点
      提示:
      • 跳转一
        跳转时间:
      新增跳转