实用的枚举算法教案

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

《实用的枚举算法》教案

上课时间:班级:技术1班授课教师:徐飞翔

一、教学目标:

1、知识与技能:

(1)理解枚举算法的概念。

(2)通过枚举算法,理解循环中嵌套分支的结构特点,执行过程。

(3)在理解流程图的基础上,初步实现VB代码的编写,并上机用VB语言实现程序的功能。

2、过程与方法:

(1)培养同学自主探索研究、解决问题的能力。

(2)能通过实际问题的分析、求解过程,尝试归纳出利用枚举算法解决问题的思路和方法。

(3)培养同学用计算机程序解决问题的思维能力。

3、情感态度与价值观:

(1)通过解决任务,培养同学勇于尝试,不怕困难的精神。

(2)积极参与、主动探究;合作学习,体验成功。

二、教学设计思想:

《学科教学指导意见》中对枚举算法的教学目标是使学生能了解枚举算法的概念,并用枚举算法来解决实际问题。根据这两次信息技术选考考试的难度,此课例不要求同学独立地画出流程图,而仅要求学生在理解枚举算法设计思想的基础上,读懂循环中嵌套分支的流程图,并完成主程序关键处的选择或填空(其中填空比选择对学生思维的要求又高一些)。

三、学情分析:

通过前几个章节的学习与实践,VB中几个相关的函数已经讲解并上机实践过了,对于3种基本控制结构大部分同学已理解,对于用流程图描述算法也非常熟悉,VB上机操作已有一定的实践,为本节内容的学习提供了良好的基础。

对于简单的程序段也有一定的认知意识,那么在本课中学生会觉得设计思想比较容易掌握。困难之处在于如何将题目的设计思想转化为流程图,根据流程图写出相应的代码,并通过自己编制程序上机实践来体验。那么在课堂分析过程中学生将从听课--理解--体验--探究,这些过程中全面掌握枚举算法的设计思想,并能用此算法来解决日常生活问题及与其他学科有所关联的一些简单问题。

四、教学重点:

理解枚举算法的概念和基本特征。

五、教学难点:

a)熟练掌握循环结构、分支结构的嵌套使用。

b)枚举算法思想的理解与实现(流程图转化为VB代码并上机实践)。

六、教学准备:

计算机机房、教学课件(枚举算法.ppt)

七、教学过程:

(一)新课导入

小明不小心把寝室门钥匙丢了,他去寝室管理员那里去找钥匙开门。寝室管理员那里总共有100把钥匙,其中配套的钥匙有若干把,但钥匙上只有1到100的编号没有寝室编号,请问小明如何才能找出能开自己寝室门的所有钥匙?

设计算法画出流程图。

(二)学习新课

1.枚举算法:按问题本题的性质,一一列举出该问题所有可能的解,并在逐一列举的过程中,检验每个可能解是否是问题的真正解,若是,就采纳这个解,否则就抛弃它。

例题1:使用枚举算法解决问题,在列举问题可能解的过程中做到()

A.不能遗漏,但可以重复

B.不能遗漏,也不应该重复

C.可以遗漏,但不应该重复

D.可以遗漏,也可以重复

例题2:鸡兔共笼问题,若有腿共60条,问鸡、兔各有多少只?下面鸡和兔只数最合理的范围是()。(范围确定了循环的起始值和终止值)

A.鸡:1到28,兔:1到14

B.鸡:2到28,兔:1到14

C.鸡:1到28,兔:2到14

D.鸡:2到28,兔:2到14

例3.一份单据中被涂抹数字的推算(体验数字推算算法)

有一张单据上有一个5位数的编号n,如图1所示,其百位数和十位数处已经变得模糊不清,但是知道这个5位数是37或67的倍数。现要设计一个算法,找出所有满足这些条件的5位数,并统计这些5位数的个数。

图1

1)算法分析

这个5位正整数n中的百位和十位数有00、01、02、…、97、98、99共100种可能,分别填入,从而产生出n的全部可能解:25006、25016、25026、…、25986、25996。使用枚举算法解决问题时,必须逐一地给出所有可能解并对它们逐一进行检验,既不应遗漏任何一个可能解,也不应重复地产生和检验可能解。因而将每个可能解n逐一进行判断是否是一个真正解,即n是否能被37或67整除。

若n是真正解,则输出n的值,并在计数器c中加上1,表示找到了一个真正解。

2)算法表示

图2 寻找单据中被涂抹数字算法流程图 3)完成算法运行体验“涂抹数字推算” 程序并补完整程序代码。

提高:把程序中的 for循环换成 Do While循环

For j=1 to 99

n = 25006 +j*99

If n Mod 37 = 0 Or n Mod 67 = 0 Then

Str(n)

c = c + 1

End If

Next j

2.枚举算法解题过程:

解题过程分两步:

逐一列举可能的解的范围。这个过程用循环结构实现。

对每一个列举可能的解进行检验,判断是否为真正的解。这个过程用分支结构实现。

枚举算法=循环结构+分支结构,循环结构内嵌套选择结构

(三)课堂训练:

有30个人,其中有男人、女人和小孩。他们在一家饭馆里花去500元。已知,每个男人花30元,每个女人花20元,每个小孩花10元。问男人、女人和小孩各为多少人?VB程序如下,在划线出填入合适的语句或表达式。

Private sub command1_click()

Dim man , woman , children , s As Integer

For man=1 to ( 1 )

For woman=1 to 23

children= ( 2 )

s = 30*man + 20*woman + 10*children

If ( 3 ) then

(str(man)+str(woman)+str(children))

End if

next woman

next man

End sub

(四)课堂总结:

1.枚举算法=循环结构+分支结构

2.做到既不遗漏任何一个解、也不重复.

3.枚举算法效率较低.

注:并不是所有的问题都可以使用枚举算法来求解,只有当问题的所有可能解的个数不太多时,并在可以接受的时间内得到问题的所有解,才有可能使用枚举算法。

(五)课后作业

完成《学生活动手册》实践活动八找出1000以内的所有素数

相关文档
最新文档