穷举法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

用穷举法解决问题教学设计

【教材分析】

本节课选自教科版《算法与程序设计》选修第三章的第二节。本节课讲的是现实生活中解决问题的一种算法——穷举法,实际上是使用for-next循环语句来解决实际问题。本节要求学生初步了解穷举算法的思想,总结出穷举法解决问题的一般步骤,总结出哪一类的、具有什么特征的问题适合用穷举法来解决。本课内容是对算法学习的引入,为高中阶段算法的学习打下了基础。

【学情分析】

本节内容的教学对象是高二年级学生,他们已经具备了一定的逻辑思维、分析问题、表达思想等能力。同时,通过前两个章节的学习与实践,学生已经历了用计算机解决问题的过程与步骤,学会了对计算机程序进行调试,并掌握了顺序、选择、循环三种程序结构,为本节内容的学习提供了良好的基础。前一节的学习,学生掌握了如何用解析法解决问题,但现实生活中也有很多问题往往无法用解析法找到答案,这时候我们可以尝试采用另外一种方法“穷举法”,从而引出本课内容。因此对此类问题的归纳求解,学生应该掌握。

【教学目标】

知识与技能:

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

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

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

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

过程与方法:

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

情感态度与价值观:

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

【教学重、难点】

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

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

【教学方法】

本节内容理论性和实践性都比较强,所以用演示、实践、讨论、任务驱动等多种形式的教学活动让枯燥的内容和生动有趣的任务结合起来。

【教学课时】

1课时

【教学环境】

硬件:机房一间,多媒体教学系统一套

软件:Visual Basic软件、自制的课件

【教学过程】

一、导入

上节课我们学习用解析法解决问题,用解析法解决问题的过程是:分析问题→抽取数学模型→导出解析表达式→设计算法→编写代码→调试运行程序。用解析法解决问题具有高效、快捷的特点,但是解析法也有“束手无策”的时候,有些问题即使可以用解析法,但求解过程和

步骤也很复杂。这个时候,我们可以尝试采用另外一种方法,就是我们今天要给大家介绍的穷举法。

二、新授

(一)什么是穷举法

教师活动:穷举法我们不难理解,它是将求解对象一一列举出来,然后逐一加以分析、处理,并验证结果是否满足给定的条件,穷举完所有对象,问题将最终得以解决。那我们说生活中你遇到过穷举法解决问题吗?

学生活动:遇到过。

教师活动:比如说?

学生活动:密码记不起来的时候,我们要一个一个去试;要开门却不知道是哪把钥匙我们也只能一把一把去试;警察办案的时候将犯罪嫌疑人一一列举出,然后逐个排查,最终确定罪犯是谁。

(二)用穷举法解决问题的一般步骤

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

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

1.分析问题

我们计算一下,假设公鸡数为x,母鸡数为y,小鸡数为z,可列出方程:

大家发现问题了没有?三个未知数,两个方程,没有办法求解。我们只能一一去试,具体到本题就是将x、y、z的各种可能的值代入方程,看是否满足两个方程,如果满足,就是一组解。2.确定穷举对象的范围那我们来看看x的值可能有哪些。根据题目的意思可知0≤x≤20。母鸡呢?0≤y≤33.小鸡呢?0≤z≤100。虽然确定了x、y和z的范围,但我们不可能毫无规律的随便取一个x、y、z的值进行尝试,一般总是按照一定规律来取值的,过程如右图。3.验证条件、编程实现我们每取一组解都要判断它们是否满足这两个方程。那么我们看一下,对于这一部分我们用什么语句来实现?循环语句。几层循环?三层循

环。最外层循环控制x的值,第二层循环控制y的值,第三层循环控制z的值。好我们写出来。For x=0到20配next x,For y=0到33配next y,For z=0到100配next z。那这一部分呢?用什么语句?判断语句。怎么写?if x+y+z=100 5*x+3*y+z/3=100,这两个条件要同时满足用什么连接?用and连接。满足这两个条件就输出x、y、z的值,然后end if结束。好下面我启动VB录入代码来解决这个问题,在我录入的过程中大家去思考这样一个问题:循环执行的次数是多少?能不能再少一些?也就是程序可不可以优化?

教师活动:问题解决了,那么现在请你思考我刚才提出的问题。

学生回答:循环执行72114次。可以再少一些。当母鸡和公鸡确定了的时候,小鸡就不用再穷举了,直接用z=100-x-y表示。

教师活动:你能不能用优化的思想改写这个程序?

学生活动:上台修改程序。修改后的代码如下:

dim x as integer

dim y as integer

相关文档
最新文档