改进和加强学生算法设计技能的做法与思考.docVIP

改进和加强学生算法设计技能的做法与思考.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
改进和加强学生算法设计技能的做法与思考.doc

改进和加强学生算法设计技能的做法与思考   摘要:算法是程序的灵魂,本文结合教学实践,提出了三点改进和加强学生算法设计技能的做法,有效地提升了学生的算法分析与设计能力,以及编程能力。   关键词:高职学生;算法设计;技能训练   中图分类号:G710 文献识别码:A 文章编号:1001-828X(2016)025-000-01   著名的计算机科学家N.Wirth曾经提出过这样一个公式:程序=数据结构+算法[1]。其中数据结构指的是数据与数据之间的逻辑关系;而算法指的是解决特定问题的步骤和方法。在一个程序当中,算法是整个程序的灵魂,数据结构是加工对象,而语言只是实现的工具。由此可见,算法在整个程序设计当中有着非常重要的地位。因此,教师在教学中,不能够仅仅只满足于让学生掌握好程序设计语言的基础,更关键的是要培养学生的计算思维,加强学生的算法设计能力,以及利用计算机处理和解决问题的能力。笔者长期从事程序设计类课程的教学和研究,下面就来谈一谈在程序设计教学中如何改进和加强学生算法设计技能的几点做法与体会。   一、利用阅读填空法来训练学生的算法设计技能,锻炼学生阅读算法的能力   目前,在教学过程中有关算法设计技能的训练方法仍然普遍采用的是非常传统的方法。即老师向学生布置算法设计作业,而学生根据作业题目的要求来设计算法,然后将算法用程序实现,并上机调试验证。这种传统方法的优点是可以充分地发挥学生在算法设计方面的主观能动性;但缺点是一旦学生遇到稍复杂一些的题目,算法设计难度较大,就会感到无从下手。而如果将这种传统的让学生把算法从头写到尾的训练方法,转变为算法阅读填空法,就可以弥补传统训练方法的不足。阅读填空法是将编写好的算法去掉若干语句或表达式,然后配上必要的一些算法说明,让学生在阅读过程中将这些空白填起的一种启发式的训练方法。实践证明,在学习的初、中期阶段,利用阅读填空法来训练学生的算法设计技能,既可以锻炼学生阅读算法的能力,又可以让学生在阅读的过程中体会算法设计的严密性和周全性,使学生形成良好的程序设计风格。   二、在训练算法设计能力时,要找到算法之间的相通点,提取共性,学会对算法进行归纳和总结   在程序设计的教学中会需要学生掌握许多的算法,每一种算法都有适合它使用的范围;虽然每种算法都是在特定条件下所提出的,但我们发现某些算法之间也仍然会存在有一些相通点。如果在介绍算法时,教师能够从这些共性上出发,将更有利于学生对相关知识的理解和掌握,提高他们的学习效率[2]。   例如,有序表中的数据查找,就可以采用折半查找、斐波那契查找、插值查找等多种查找方法来提高查找的效率。这些查找方法虽然在实现的过程中有所不同,但其算法思想是相通的,在学习的过程中就可以对它们进行归纳。   设某有序表的查找范围是[L,H],在L到H的范围内找一个点t,则[L,H]被分成了三个区间:[L,t-1]、t、[t+1,H],而要查找的数据必定存在在其中的某一个区间里。当点t等于要查找的数据时,则查找成功;否则缩小查找范围,在[L,t-1]或[t+1,H]中进行下一步的查找。如果对于点t采用不同的设置方法,就会得到不同的查找方法:(1)当将点t设置为区间的中点时,就是折半查找;(2)当将点t设置为区间的黄金分割点(斐波那契)时,对应的就是斐波那契查找;(3)当将点t设置为线性插值的分点时,就是插值查找;(4)当点t是区间里的随机点时,则对应的就是随机查找。如果将点t的选取用一个函数来表示,则上述这些查找算法从总体上来看都是基本相同的。可以利用C语言统一描述为:   int Search(STable T,KType k)   { int H, L,t;   H=ST.length-1;   L=0;   while(H=L)   { t=tpoint(L,H);   //tpoint()为点t的选取函数,不同的查找方法实现是不同的   if (EQ(k,T.elem[mid].k)) return(t);   else if(LT(k,T.elem[mid].k)) H=t-1;   else L=t+1;   }   return(-1);   }   三、从多角度去思考,对同一问题让学生寻找不同的算法去解决,从而培养学生的发散性思维,提高创新能力   在算法设计时,不但要求能够针对问题设计出一种正确的算法,还要追求算法的结构合理、可读性强和时空效率高等更高目标。因此,通过对学生的算法设计技能进行培训,能够培养他们的创造性的思维,提升其创新能力。对于一个问题,不仅仅只满足于找到一种解决的方法,而是要求学生能够从多方面、多角度地去思考,找出不同的解决方法,用不同的算法去实现,这样可以更加有效地开拓学生

文档评论(0)

yingzhiguo + 关注
实名认证
文档贡献者

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

版权声明书
用户编号:5243141323000000

1亿VIP精品文档

相关文档