穷举法算法案例《用穷举法解决问题》教学设计
    教学分析      1.教学目标  知识与技能:了解什么是穷举法及其特点,以及用穷举法设计算法的基本过程;能够根据具体问题的要求,使用穷举法设计算法。
 
    过程和方法:运用观察、发现、归纳、应用的方法,发展学生的归纳思维;培养学生独立探究与自主发现的学习能力。
 
    情感态度与价值观:了解算法和程序设计在计算机解决问题过程中的重要性;体验将算法转变为程序的过程,享受计算机解决问题的快乐。
 
     
 
    2.教学重点和难点
 
    重点:用穷举算法解决问题的一般步骤;能根据具体问题的要求,提高运用穷举算法解决问题的能力。
 
    难点:通过观察、类比多种方式培养学生归纳思维。
 
     
 
    教学过程
 
     
 
    1.创设情境激趣引入
 
    教师活动:某同学用自己的QQ号登录,可他记不清密码了,你能帮他回密码吗?他的密码是一个5位数,67□□8,其中百位和十位上的数字他不记得了,但他还记得该数能够被78整除,也能被67整除。你能帮他设计一个算法求出该密码吗?希望大家能在学习完下面这个例子后就可以解决这个问题。
 
    设计意图:成功的教学不是强制,而是激发学生的学习兴趣,该导入正是从学生感兴趣的事情着手的。
 
     
 
    2.观察―发现―归纳―应用
 
    (1)观察。
 
    教师活动:逐语句调试以下程序,分析程序的执行过程,让学生填写下表,指出此程序功能。
 
    For i=100 to 999
 
    a=int(i /100)
什么是编程举个例子 
    b=int(i /10) mod 10
 
    C=i mod 10
 
    If a^3+b^3+c^3=ithen
 
    Printi
 
    Endif
 
    Next i
 
    (2)发现。
 
    教师引导:在分析上一程序过程中,你能发现什么?
 
    学生发现:①通过分析程序的执行过程,可看出变量a存放的是一个三位的自然数百位上的数字,变量b存放的是其十位上的数字,变量c存放的是其个位上的数字;②一个三位的自然数,若满足百位的立方、十位的立方与个位的立方之和等于它本身,就输出;③此程序的功能是输出100~999之间的自然数。
 
    教师总结:此程序的特点是将求解对象一一列举出来,然后逐一加以分析、处理,并验证结果是否满足给定的条件。当穷举完所有对象,问题将最终得以解决。我们把这种算法称之为穷举法。
 
     
 
    教师引导:对于此题,某同学给出了另一种解法,请分析程序的执行过程,说出他采用的是什么算法,比较哪一种方法的效率更高,为什么?
 
    For a=1 to 9
 
      For b=0 to 9
 
    For c=0 to 9
 
      If a^3+b^3+c^3=a*100+b*10+c then
 
    Print a*100+b*10+c
 
      Endif
 
    Next c
 
      Next b
 
    Next a
 
    学生发现:第二种方法依然采用的是穷举算法。在第一个程序中,循环的次数是900次,每次循环要执行四条语句。而在第二个程序中,循环的次数是9×10×10=900次,但每次循环只执行一条语句,所以第二个程序的执行效率高。
 
    (3)归纳。
 
    教师活动:通过“输出自然数”这一例子,能归纳出用穷举法解决问题的步骤吗?
 
    学生归纳:①确定穷举对象及搜索范围:用循环或循环嵌套实现;②写出符合问题解的条件:用IF语句实现;③尽可能缩小搜索范围,减少程序运行时间,提高程序的执行效率。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。