穷举法算法案例《用穷举法解决问题》教学设计
教学分析 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小时内删除。
发表评论