43非数值计算教学设计-教科版高中信息技术必修一第四单元.docx

43非数值计算教学设计-教科版高中信息技术必修一第四单元.docx

教学设计

太仓市明德高级中学赵斌

课题

非数值计算

教学目标

1.运用合适的算法形成解决问题的方案

2.了解算法中的分治思想,运用二分法查找来解决实际问题

3.体验递归算法,结合具体问题进行编程实践。

教学内容

教学重点:

1.在实际问题解决过程中理解分治思想

2.掌握二分法和递归法的原理

教学难点:

1.理解二分法和递归法并尝试解决实际问题

2.正确分析问题并形成与之匹配的问题解决的方案

教学过程

一、课堂导入:展示流程图如下:

引导学生分析,描述该流程图实现的功能是:(猜数字)。

从读流程图的过程中了解学生对计算机解决问题的过程的认知情况,为后续课堂开展做好铺垫。

语句1:cai==num

语句2:cainum

(请学生上台将判断语句拖放在正确的目标区域,完善流程图后能正确实现所需的功能)

二、二分法学习

1.执行“while循环猜数字.py”程序,尝试猜数字游戏,观察游戏过程,进一步理解导入中的流程图所描述的问题解决过程,根据学生的运行情况,引导应用二分法来完成数字游戏。(程序代码如下)

猜数字游戏,随机生成1到10之间的数字(含1和10000),每次输入一个数字,

如果与随机生成的数字相同,则退出,否则重新输入,输入1表示退出游戏。

importrandom

jznum=random.randint(1,10000)

normal=True#设置条件的初始值

count=0

whilenormal:

number=int(input(请输入你要猜的数字[1,10000],退出程序请输入1\n))

ifnumber==1:

normal=False#设置条件的值,使得退出循环

print(程序已退出,游戏结束)

ifnumber==jznum:

count+=1

print(你猜中了,本次数字为:,number,猜了:,count,次,本次游戏结束,程序将退出)

print(游戏结束)

normal=False

else:

ifnumberjznum:

count+=1

print(你猜了:,count,次,大了,请继续猜)

else:

count+=1

print(你猜了:,count,次,小了,请继续猜)

input(回车可退出程序)

2.执行“循环猜数字提示过程.py”,理解并描述二分法的运行思路。(程序如下)

在“while循环猜数字.py程序中,”,将提示语句修改为加粗部分语句。

ifnumberjznum:

count+=1

maxnum=number

print(你猜了:,count,次,大了,请继续,建议猜,math.ceil((minnum+maxnum)/2))#表示向上取整

else:

minnum=number

count+=1

print(你猜了:,count,次,小了,请继续,建议猜,math.ceil((minnum+maxnum)/2))

引导学生思考二分法的设计四步骤:

1.确定查找区间的左侧边界和右侧边界

minnum=1maxnum=10000

2.寻找中间数

number=math.ceil((minnum+maxnum)/2)

在这个实现过程中使用了math数学库中向上取整函数ceil,使得求得的中间数有一个规律性的处理。

3.中间数和目标数进行比较,以确定下一步的查找区域

ifnumberjznum:#jznum是随机产生的让用户去猜测的数

maxnum=number#右边界左移

else:

minnum=number#左边界右移

4.重复上述的2、3步骤,直到找到目标数

以上四个步骤归纳后就是二分法的运行思路和设计技巧,在实际应用的过程中,我们还要做临界点的处理。

课堂练习:在网站中完成“翻页游戏”程序调试,观察学生表现。

三、递归法学习

(请学生上台在课件中尝试选择游戏步骤,完成将木块从A搬到C,且最底层最大)

具体实施过程如下图所示

ABCABC

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档