- 时间点:
- 时 分 秒 当前视频时间点
- 问题:
-
- 选项一
设为正确答案
新增选项 - 选项一
- 正确跳转时间:
- 时 分 秒 同锚点时间
- 错误跳转时间:
- 时 分 秒 同锚点时间
恭喜你,回答正确~
很遗憾,回答错误~
正确答案: ,您可以
本节课选自教科版《算法与程序设计》选修第三章的第二节。本节课讲的是现实生活中解决问题的一种算法:穷举法,实际上是使用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、穷举法的优化与应用
设为正确答案