SCI、SSCI、EI、SCOPUS指导服务
论文翻译润色 论文预审评估 质量分析报告 期刊匹配推荐

与学术顾问沟通

铺垫与转化在程序设计教学的应用

分类:应用电子技术论文发表 时间:2019-12-02 10:28 关注:(1)

  算法教学是程序设计教学中的一个难点。由于学习的主体和教学任务不同,程序设计课程中所涉算法教学与专业的计算机算法课教学方法有所不同。在讲解程序设计所涉及到的算法问题时,应该形象、直观,要尽量避免抽象的论述,要充分利用已经掌握的知识作为学习新算法的铺垫,逐步引出需要掌握的新的知识点,同时要注意把问题进行分解,转为为一个或若干个容易理解问题,以此降低学生学习的难度,增强学生学习的兴趣。

铺垫与转化在程序设计教学的应用

  关键词:算法;教学;铺垫;转化

  1引言

  《C语言程序设计》是高等学校普遍开设的公共基础课程。各高校一般选择在大一开设这门课程。大一学生对办公软件比较熟悉,但对计算机编程普遍陌生。而这门课程本身就是语法规则繁杂、知识点多、逻辑思维严密,学生学习时普遍感到困难[1]。老师在介绍基本语法的时候,不可避免地要介绍与基础知识相关的各种算法,以算法为载体介绍程序设计语言各个知识点应用。这又加重了学生学习的负担,所以学生在学习过程中畏难情绪严重,从而使得教学过程面临较多困难[2]。

  2教学中存在的问题

  2.1问题的提出

  根据计算机科学家沃思提出的公式,程序是数据结构和算法的有机结合。对数据的描述涉及到的是数据结构,对数据的操作涉及到的是算法。在学习编程的过程中,如果说基本语法通过“死记硬背”还能部分解决问题的话,那么对算法的理解,若缺少相关背景知识的帮助,就会是一块硬骨头,严重影响学生的学习热情。本文拟就程序设计课程中遇到的算法问题,给出一点思考。

  2.2问题的成因

  在程序设计课程中学习算法,不宜机械套用计算机算法专业课程中的方法。首先,学习的主体不同。算法专业课的学习主体不是计算机专业背景的学生,就是高年级理工类的本科生甚至是研究生。他们在学生计算机算法的时候,已经有了较为深厚的计算机编程背景知识,有比较强的计算思维能力,也有相当底蕴的分析问题和解决问题的逻辑思维能力,所以对算法的理解要深刻得多。对他们来说,以抽象化、形式化的方法介绍算法时,理解起来不困难。而学习程序设计的学生,基本上是大一新生,专业思维、计算思维的能力大多还比较薄弱。而程序设计语言中却偏偏包含了大量的解决问题的算法及思维模式[3]。这两者之间的矛盾导致了学生学习C语言时步履维艰。其次,学习的关注点不同。计算机算法课程所关注的算法,专门针对分门别类的数据结构,代表着用系统的方法描述解决问题的策略机制,系统性、科学性都极强。而在程序设计课程中涉及到的算法,基本上是为了说明、拓展某种语法现象的应用而引入的,体系性并不强。比如,在程序设计讲述数组时,引入了“起泡法”排序和“选择法”排序算法,但也仅仅是为了说明数组的用法,并不涉及排序算法本身的存储和时间效率问题。因此,面对大量低年级、非计算机专业的学生,在讲述程序设计语言特别是与设计语言相关的算法时,有必要另辟蹊径,找到切实可行的教学方法。

  2.3问题的解决

  在教学过程中,要注重知识的累积,并灵活运用到以后的教学中,使前后的教学联成一体。学习当前知识点,要注意使用已学知识点的铺垫。铺垫在汉语教学中是指对文章中故事发生的背景、缘由及故事发展情况所做的必要交待[4]。程序设计尤其是难度较大的算法教学,做好铺垫工作,充分利用已学知识,往往能起到事半功倍的效果。问题转化的教学方法,也可以运用到教学过程中。转化的思想,数学教学中使用较多。比如,要想证明结论A,必须要证明结论B,要想结论B成立,又要证明结论C,所以最后的问题转化为证明结论C,而结论C的证明往往比较简单。在算法讲解时使用转化思想,可以把复杂难懂的问题转化为一个或几个较简单的问题,降低学生学习的难度。本文根据铺垫和转化的思想,介绍“选择排序”的讲解过程。

  3应用举例

  3.1铺垫的引入

  在数组的相关应用算法中,寻找出数组中的最值(最小值或最大值)及其在数组中的位置,是很经典的一个应用算法,且难度低。解决这个问题的方法一般被称为“打擂台”[5]。该算法可以简单描述为以下几个步骤(以寻找最小值为例,定义数组为a[10]):(1)设置变量min_v和index,min_v=a[0],index=0;(2)for数组中的每一个元素,ifmin_v>=a[i],{min_v=a[i];index=i};(3)最后变量min_v的值是数组中的最小值,index的值是最小值在数组中的下标。从寻找最值的角度看,prog1程序的重点当然是变量min_v。它实际上是相关资料中提到的“擂台”,在当前情况下(下标从0到index),符合条件的最值就存放在变量min_v中。但是此时要特别提醒学生:min_v与a[index]的值是相等的,其实质就把a[index]的值赋值给了变量min_v,理解这点对于引入选择法排序时将起到很关键的铺垫作用。

  3.2铺垫的展开

  在学生掌握了prog1之后,尤其是理解了变量index的作用后,就可以给学生指出:在程序prog1的基础上,可以把a[index]与a[0]交换位置。学生会发现最小的元素不但被找到了,而且还被放置到了数组a[0]位置上。为了强化学生对这个过程的理解,让学生继续在a[1]到a[N]中寻找到最小值,然后与a[1]交换位置,输出结果。学生很容易发现数组的前两个元素已按升序排列。程序如下(prog2)在理解“选择排序”的算法过程中,程序prog2非常重要,它起到了承上启下的作用,原因在于:(1)该程序以prog1作为铺垫。学生对这个程序不陌生,有助于帮助他们摆脱学习新程序的“恐惧感”,从意识上做好了接受下一个新知识的准备。(2)通过两次寻找最小值并交换,使学生很容易理解“选择法排序”的基本思想:选择排序可以通过反复地寻找最小值,并与前面某一位置的元素交换来实现。(3)进一步分析prog2程序,可以得到几个排序程序的小细节。比如,第0次找到的最小值a[index]是与a[0]交换,第1次找到的最小值a[index]是与a[1]交换,可推得第k次操作,应该是a[k]与a[index]交换;又比如,第k次操作时,min_v的初始值应该是多少?显然第0次操作时,min_v=a[0],第1次操作时,min_v=a[1],以此类推,容易想到第k次操作时,应该是min_v=a[k]。

  3.3问题的转化

  有了前面几点的铺垫,就比较自然就引出:如果操作继续进行,即寻找最小值并与某位置的元素交换的操作是一个反复的过程,那么引入循环结构理所当然。至于循环的次数很容易确定:通过prog2可知,每次操作可以完成一个最小值并让其“归位”。那么假定有N个数需要排序,只需要N-1次操作也就是N-1次循环就可以让所有数“归位”了。通过以上分析,可以发现,所谓的“选择排序问题”,实际上就转化成了“反复寻找最值,然后交换”的操作。该操作在prog2程序中已大致解决,从而大大降低了学生理解选择排序算法的难度。

  3.4应用举例小节

  应用铺垫和转化思想,把prog1转化为prog2,非常自然地引出了“排序”的思想和处理排序问题时需要注意的细节,为正式推出排序算法prog3奠定了坚实的基础。算法prog3已经与严蔚敏、吴伟民介绍的选择排序算法基本一致[6]。

  4结束语

  针对学生在学习程序设计各种算法时面临的困难,本文提出新的教学方法。该方法以学过的、学生较为熟悉的算法作为出发点,做好铺垫,逐步引入新的算法思想,尽量将问题转化为比较熟悉的问题模式,从而降低了学习难度,易于学生掌握。

  参考文献

  [1]台海红,许鑫,郑光.《C语言程序设计》课程教学改革探讨.现代计算机(专业版),2018(33):74-77

  [2]杨文耀,陈文波,李杰.“理实一体化”在应用型本科院校C语言教学中的应用探讨.信息与电脑(理论版),2017(13):223-224

  [3]唐彩红.基于计算思维的计算机程序设计课程教学改革研究——以C语言为例.教育现代化,2019,6(29):100-101

  [4]黄保余.语文阅读得高分策略与技巧.北京:化学工业出版社,2018

  [5]谭浩强.C程序设计.第5版.北京:清华大学出版社,2017.

  [6]严蔚敏,吴伟民.数据结构(C语言版).北京:清华大学出版社,2007

  作者:李环宇 林晓霞 刘新颖 单位:山东科技大学信息工程系

期刊目录网是一家专业从事国内国外期刊学术论文发表指导,著作出版,发明专利的权威平台,提供文章翻译、文章润色、文章预审、期刊推荐、发表支持、书号申请、出书指导、专利申请等评职称相关学术成果服务。是您评职称学术成果指导首选权威平台。

AllSet微信公众号
说明:1、微信扫码或搜AllSet学术并关注
2、发送SCI/SSCI期刊全名告知分区
3、按提示可下载SCI、SSCI、EI期刊目录
Copyright © 2013-2022 www.qikanmulu.com,All Rights Reserved