网站大量收购独家精品文档,联系QQ:2885784924

基于计算思维能力培养的算法与程序设计教学策略.docx

基于计算思维能力培养的算法与程序设计教学策略.docx

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

基于计算思维能力培养的算法与程序设计教学策略

在当今的信息社会中,培养和提高信息素养是对初中生的基本要求,而信息素养表现为个人对信息工具的应用以及处理信息和解决问题的能力,计算思维则包含了信息工具的使用和解决问题能力,所以计算思维的培养是初中生信息素养的一种体现。

●利用算法和图形,落实学生的计算思维

1.借助流程图,直观表达解决问题思路

流程图是使用图形表示算法思路的一种直观方法。例如,面对求两个正整数m、n的最大公约数的问题,学生可以采用辗转相除法即欧几里德算法:对于任意两个自然数m和n,用m、n、r分别表示被除数、除数、余数,那么m和n的最大公约数等于n和r的最大公约数。即第一步求m除以n的余数r;第二步若r不等于0,执行第三步,若r等于0,则n为最大公约数,算法结束;第三步将n的值赋给m,将r的值赋给n,再求m除以n的余数r;第四步转到第二步。而利用流程图(如图1),能减少繁杂的文字,更加明确问题关键,提取问题特征,快速直观地表达学生解决问题的思路,最后借助编写程序解决问题。

2.培养学生算法思想,高效解决问题

计算思维是人的思维,是人求解问题的一条途径。针对需要大量计算的问题,引导学生在提出解决问题的方法后,理解计算思维涵盖的计算概念和方法,落实学生的计算思维。例如,递推问题“Fibonacci数列”:有雌雄一对兔子,假定过两个月便可繁殖雌雄各一的一对小兔子,过n个月后共有多少对兔子?“兔子繁殖问题”看似复杂,其实只需要清楚第x-2个月的所有兔子到第x个月都有繁殖能力就能解决问题。设满x个月共有兔子F(x)对,其中当月新生的兔子数目为N(x)对。第x-1个月留下的兔子数目设为F(x-1)对,则F(x)=N(x)+F(x-1),N(x)=F(x-2),那么F(x)=F(x-1)+F(x-2)。所以,由上面的递推关系可依次得到F(2)=F(1)+F(0)=1,F(3)=F(2)+F(1)=2,……。当n=90时,F(n)已经达到2880067194370816120。这样的问题如果没有计算机很难得知结果,所以,在培养学生算法思想的过程中,借助计算机有效落实计算思维,能够解决很多计算规模超大的问题。

3.使用思维导图,概括解决问题的算法

学生细化提出的问题解决方法,通过思维导图的使用(如下页图2),呈现出细化的方案,这种方法往往应用于难度系数较大的复杂题目。例如,设计五子棋的程序,其功能包括绘制棋盘、交替出现黑白棋、移动棋子、判断胜负等。学生利用思维导图能概括其学习的知识要点,清晰明了地组建知识网络,训练计算思维。

●借助多种学习技巧,强化学生的计算思维

1.一题多解,多面思考

一题多解是指针对一道习题,能从不同角度去思考问题,寻找到不同的解题方法,并对这些不同解题方法进行总结和归纳。

例题1:观察下面的数字金字塔(如图3)。写一个程序查找从最高点到底部任意处结束的路径,使路径经过数字的和最大。每一步都可以从当前点走到左下方的点,也可以到达右下方的点。

在上面的样例中,从13到8到26到15到24的路径产生了最大的和86。

输入:第一行包含R(1≤R≤1000),表示行的数目。后面每行为这个数字金字塔特定行包含的整数。所有的被供应的整数是非负的且不大于100。

输出:单独的一行,包含可能得到的最大的和。

5//数塔层数

11?8

12?7??26

6?14??15??8

12?7??13?24??11

样例输出:86。

①方法一:搜索。问题要求从最高点按照规则走到最低点的路径的最大权值和,路径起点终点固定,走法规则明确,可以考虑用搜索来解决。

定义递归函数voidDfs(intx,inty,intCurr),其中x,y表示当前已从(1,1)走到(x,y),目前已走路径上的权值和为Curr。

当x=N时,如果Curr比Ans大,则把Ans更新为Curr;否则向下一行两个位置行走,即递归执行Dfs(x+1,y,Curr+A[x+1][y])和Dfs(x+1,y+1,Curr+A[x+1][y+1])(如下页图4)。

该方法实际上是把所有路径都走了一遍,由于每一条路径都是由N-1步组成,每一步有“左”“右”两种选择,因此路径总数为2N-1,所以该方法的时间复杂度为O(2N-1),超时。

②方法二:记忆化搜索。方法一之所以会超时,是因为进行了重复搜索。记忆化搜索需要对方法一中的搜索进行改装,需要记录從一个点开始到终点的路径的最大权值和,因此重新定义递归函数Dfs。

定义Dfs(x,y)表示从(x,y)出发到终点的路径的最大权值和,答案就是Dfs(1,1)。在计算Dfs(x,y)时考虑第一步是向左还是向右,笔者把所有路径分成两大类:第一步向左、第一步向右。

为避免重复搜索,笔者开

文档评论(0)

std360 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档