标题 | 以培养计算思维为主的C程序设计课程教学改革 |
范文 | 李敏 摘要:随着信息技术的进步,计算机学科与其他学科的交叉发成为新的趋势。在程序设计类课程教学中,培养计算思维的能力与讲授专业知识同等重要。本文阐述了计算思维的重要性,并以C程序设计课程为例,探讨了以培养计算思维能力为主的教学改革方法与思路。 关键词:C程序;教学改革 中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2019)12-0111-02 1 计算机思维的重要性 计算思维是运用计算机科学的基础概念进行问题求解、系统设计、以及人类行为理解等涵盖计算机科学之广度的一系列思维活动。[1]计算机技术作为21世纪发展最快的技术,许多领域与其结合都得到了重大的突破,未来的计算机将会成为人们最常用的工具之一。无论是计算机专业的毕业生还是非计算机专业的毕业生,将来都要面临使用计算机处理实际问题的情况。因此,在程序设计类课程的教学中,激发学生学习计算机语言的兴趣,培养学生对计算机语言的认知能力及利用计算机语言处理实际问题的能力是非常重要的。 目前,计算思维的培养在国内外都受到了普遍重视。在美国,不仅有卡内基梅隆大学的专题讨论,更有众多科研组织的参与。在英国的爱丁堡大学,人们在一连串的研讨会上探讨与计算思维有关的主题。研讨会上所涉及的学科已延伸到哲学、物理、生物、医学、建筑、教育等各个不同的领域。[2]在我国,部分中小学及高校都开展了以培养计算思维为核心的教学改革,希冀通过计算机课程的学习,使计算思维成为每个人的基本技能。 2 融入计算思维的C程序设计课程教学改革 传统C程序设计教学通常按照C程序设计经典教材的顺序讲授知识点,学生往往容易陷入语法知识的细枝末节而忽略了程序设计的本质。而且传统讲授式方法难以调动学生的学习积极性,容易导致理论与实践脱节,学生的实践能力不足。特别对于非计算机专业的学生而言,重点应是要培养他们分析问题、解决问题的思维方式和创新能力。 (1)改革传统教学模式,以培养计算思维为主线设计教学活动 由于C语言偏向计算机底层的抽象特性,学生很难建立起从自然语言到符合计算思维的C语言程序之间的转换。因此,C程序设计教学中计算思维的训练成为教学中的难点。[3]基于计算思维提炼课程知识点,将计算思维方法和现代教学模式相结合,设计课堂教学内容和实践教学环节,重点突出学生应用能力和创新能力的培养。 (2)设计出基于计算思维的C程序设计课程教学案例 以学生为主体、教师为主导,突破传统教学以知识为本位的培养模式,从培养计算思维角度编写教学案例。利用教学案例,鼓励学生从多方面思考问题,探寻问题解决方法,让学生从被动接受知识的“观众”变为主动参与者。[4] (3)建立以培养计算思维为主的评价机制 探索在C程序设计课程教学中计算思维培养的教学评价与学习评价,建立激励学生学习、促进学生“学会学习”和全面发展的评价机制。 3 以培养计算思维为主的教学方式 在对河套学院2014级和2015级数学与应用数学班学生的C程序设计课程问卷调查中显示:58.73%的同学表示“课程上能听懂,但让自己编程就不会了”,50.79%的同学表示“语法会了,但遇到编程题,不知道该用什么算法”,导致这一现象产生的根本原因还是计算思维的缺失。有的学生在面对问题时不能找到有效的解题思路,有的学生找到了解题思路却又不知道如何使用C语言来实现,因此在程序设计课程教學中应该注重培养学生应用计算思维的解题能力。 3.1 鼓励学生创新 在教学中教师不能“讲”得太多,至少不能直接把解题思路和过程都提示给学生,要让学生学会独立思考,鼓励学生使用不同的、新颖的方法来解决问题。集体的智慧是伟大的,要引导学生分享他们的思路,这样会有更多的学生得到启发。例如在求100以内能被13整除的最大的数时,学生的想法百花齐放,下面以最典型的三种解法为例。 解法一:for (i=1;i<=100;i++) if (i%13==0) max=i; 解法一利用最基本的定义,从1-100中遍历所有的数找到能被13整除的数赋值给max,当循环结束后,max中存放的就是100以内能被13整除的最大的数。显然这样解法体现了我们使用循环程序设计的初衷。 解法二:for (i=13;i<=100;i+=13) max=i; 在解法二中,学生分析后认为13是一个质数,所以能被13整除的数应是13的倍数,这样初始值可以从13开始,每次让i的值以13递增,于是取到的每一个i就是能被13整除的数,当循环结束后,max中存放的就是100以内能被13整除的最大的数。相比第一种算法,第二种的效率更高一点,体现了在循环次数上的创新。 解法三:i=100/13; max=i*13; 解法三最让人惊奇,虽然该同学没有在程序中使用循环,但是通过对C语言程序设计中,除号“/”两端的操作数都是整数时结果取整的理解,准确地求得了结果。我想解法三应该是三种解法中效率最高的一种,也是更应该得到表扬的。从解题的方法可以看出学生没有局限于程序设计的一般思路,在解题时充分考虑了之前所学习的语法知识,再结合自己的思考,得出了一种创新的解法,这正是学习程序设计语言要倡导的计算思维。我们有时往往过于强调程序设计的语法和语句,而忽略了实际问题的不同解决方法。计算思维应该是利用计算机帮助我们来解决实际问题,如果这个问题可以由简单的办法解决,我们为什么要让问题变得更复杂呢?在程序设计的教材中为了说明一个语法而给出一个示例,但这样的程序有时只是为了说明一种结构,并不是代表这种问题应该这样处理。学生在学习程序设计语言时应该在掌握语法的基础上打破常规思维,灵活运用所学知识,培养分析问题、解决问题的能力和创新能力。 3.2善于利用设疑 授人以鱼,不如授人以渔。授人以渔,不如授人以欲。在教学中如果学生不愿意听,那即使教师讲得很好,学生也不一定能掌握。但如果把学生的兴趣调动起来,让学生主动地去寻找答案,可能会收到意想不到的效果。例如,在讲解完顺序结构和选择结构时,让学生开发简单的计算器程序,可选择实现加、减、乘、除四种运算中一种。学生通过输入两个数,和想选择的运算类型,用switch语句实现了分支选择。 这时学生会发现此时的程序不管选择哪一种运算,只能运行一次,如果想再次执行必须要重新运行程序。如何才能让程序可以依据选择执行多次运算呢?带着这个疑问,为学生引入循环程序设计的知识,启发学生思考简单的计算器程序能否根据用户的选择而确定。如果用户不选择退出,程序就可以一直计算下去。 兴趣是最好的老师,再比如说“猜数游戏”。即由计算机随机生成一个1到100之间的数请人猜,每人有十次机会猜测,如果猜对了,则计算机给出提示:“正确!”并结束游戏,否则提示用户所猜的数是高还是低,如果十次都没有猜对也结束游戏。对于这个问题教师可以提出三个疑问,通过设疑来充分调动学生的学习兴趣。 第一个问题:如何生成随机数num? 我们都知道在C语言中,使用rand()函数会生成一个伪随机数,但如果没有一个可变的量做种子,生成的数是不变的。那么如果找到一个不断变化的量呢?经过思考,不断变化的时间就成了我们最好的选择。 处理方法:首先用当前和系统时间生成随机数的种子srand(time(0)),再利用这个种子生成随机数num,num = rand(),这样得到的num就会因为运行时间不一样,而得到不同的随机数。 第二个问题:如何把随机数限制在1-100之间? rand函数的原型为int rand(void),它会返回一个[0,RAND_MAX]间的随机整数。利用所学的知识如何把一个随机整数限制在100以内,可以引导学生联想到水仙花数或类似习题,模运算符自然就被委以重任。 处理方法:利用模运算符取余的特性,使用num=num%100,会把随机数num限制在0-99之间,再把num加1就会得到一个1-100的整数。于是,最终的语句为num=num%100+1。 第三个问题:如何选择程序结构? 首先,需要分支结构来实现比较运算。当用户输入猜测的数后,比较用户的猜测与随机数是否相等,如果相等,则提示“正确”,并结束游戏;如果不等,则比较猜测随机数的大小,并提示用户结果。其次,需要循环结构实现十次猜测的机会。但是在控制循环的条件时,应该分为两种情况:一种是用户猜测十次都没猜对,结束循环;另一种是用户在十次之内就猜对了,这时也要结束循环。 在猜数游戲中,涉及的主要操作有:生成随机数;限制随机数在一个指定的范围;判断猜测与随机数是否一致;给10次猜测机会,猜测正确时退出。对应的知识点分别为rand()函数、模运算、选择结构、循环结构和break。通过这个案例,让学生学会综合运用所学的知识处理实际问题,在其中培养了学生的计算思维。 作为提高部分,可以让学生思考如何利用随机数生成小学数学100以内加、减法测试程序,用户能够输入测试的算式数目,并分别给出算式,要求输入答案,并能判断结果是否正确,最后给出得分率。依据题目让学生充分地发挥自己的想象,鼓励程序的创新,让学生提高综合实践能力。 4 总结 基于计算思维的C语言课程教学改革主要探究基于计算思维的C程序设计课程教学模式,以培养计算思维为主线,结合先进的教学理念,先确定教学重点,再针对重点教学内容设计可行的教学活动,提出具体的课堂教学内容设计方案,并应用于C程序设计课程的教学活动。最终通过评价和反馈机制,不断地完善C程序设计课程教学设计和教学案例。旨在通过C程序设计课程的改革激发学生学习兴趣,提高学习效率,培养学生良好的计算思维能力。 参考文献: [1] Jeannette M. Wing.Computational thinking[J].Communications of the ACM,2006(3):33-35. [2] 董荣胜,古天龙.计算思维与计算机方法论[J].计算机科学,2009,36(01):1-4+42. [3] 郑冰,宁鹏飞.基于JiTT模式的C语言教学中计算思维的培养[J].计算机教育,2018(10):101-104. [4] 解红,刘建.基于计算思维的大学计算机课程改革与实践研究[J].福建电脑,2018,34(10):60+119. 【通联编辑:朱宝贵】 |
随便看 |
|
科学优质学术资源、百科知识分享平台,免费提供知识科普、生活经验分享、中外学术论文、各类范文、学术文献、教学资料、学术期刊、会议、报纸、杂志、工具书等各类资源检索、在线阅读和软件app下载服务。