APP下载

以计算思维为导向的C 语言教学研究与实践

2020-01-08

关键词:数据类型程序设计导图

崔 杰

(辽宁工业大学 计算中心,辽宁 锦州 121001)

C 语言程序设计是大学计算机基础教育的重要课程之一,能够最大而有效地开发和拓展学生的计算思维能力。C 语言是目前国内外得到迅速推广应用的一种程序设计语言,大多数高校将它作为计算机专业或非计算机专业的第一门入门语言。作为程序设计的入门课程,学生的计算机基础不牢和对计算机思维方式与传统思维方式的差异理解不够,没有用计算机求解问题的能力。传统教学过程中教师只注重语法知识和算法的讲解,学生只是为学习语言而学习,忽略了程序设计学习中计算思维能力的培养,缺乏分析问题、抽象问题、解决问题的能力。因此,在C 程序设计教学过程中有意识地将计算思维意识培养、计算思维方法应用贯穿始终,在程序设计课程中值得探索和实践。

一、计算思维

计算思维作为人类认识世界改造世界的三大科学思维之一,其概念由美国计算机科学家周以真(Jeannette Wing)教授提出,并得到国际上的广泛认同。周教授认为:计算思维是运用计算机科学的基本概念进行问题分析求解、系统设计,以及计算机领域所涉及的一系列思维活动[1]。计算思维将渗透到我们每个人的生活之中,它是一种普遍的认识和普适的技能,每一个人都应热心于它的学习和运用。将计算机技术用于自己从事的领域,这就是计算思维。当今时代没有人可以离开计算机独立生活,因此,周以真教授在他的论文中说:在计算机应用普及的时代,每个人都应具备计算思维能力,而不仅仅是计算机科学家。

纸笔的时代已经结束,我们应该使我们的学生在培养学习能力时不仅掌握阅读、写作、算术,还要学会计算思维。计算思维的概念一经提出,便引起教育界高度重视。在美国国家科学基金会的组织下,于2007年启动了“大学计算机教育振兴途径(CPATH)”研究计划,确定了以“计算思维”为核心的美国大学计算机教学改革研究的新方向,并资助了该国70 多所高校参与改革。美国科学基金会(NSF)于2008年启动了一个涉及所有学科的、以计算思维为核心的重大基础研究计划“计算思维的科学发现与技术创新”(Cyber-Enable Discovery and Innovation,CDI),进一步将计算思维的培养扩展到美国的各个研究领域。20 世纪初计算思维也得到我国计算机教育研究会的高度重视,在国内《九校联盟(C9)计算机基础教学发展战略联合声明》中,把培养大学生的计算思维能力作为大学计算机基础教学的核心目标[2]。作为计算机基础课程一线教师,如何将计算思维融入到教学中来,是新形势下教学改革面临的一个挑战。

二、以计算思维为导向的C 程序设计教学探索

随着计算机应用的普及,计算思维能力的培养得到教育界的高度重视。作为C 语言的一线教师,将计算思维融入教学中来,将计算思维方法应用到教学当中,从教学环节的设计、教学内容的组织、算法多样化的认知方式等方面提出了一种以计算思维为导引的、切实可行的教学模式。

(一)学生分组及分层次教学

教师要鼓励学生协同合作,自由组合组成学习小组,这样大家可以相互学习,取长补短,在遇到问题时大家可以共同研究、探讨,思路开阔,学生的学习热情也非常高涨。学习程序设计对于多数学生来说有些困难,对理解问题、语法问题、调试能力等问题都存在着很大的差异。有的学生理解力很强,对于这部分学生,可以给予进阶的题目,大赛的题目。通过这种方法,竟然带动了学习兴趣不高的学生。身边的榜样作用是无穷的,乐于参与其中进行探讨学习,自然形成了以个别学生为带头的学习C 程序设计的气氛。

(二)思维导图的引入

授课之初教师就下发制作全局思维导图和局部思维导图的任务,由小组成员共同完成。全局思维导图可帮助学生掌握课程的总体概况,局部思维导图可以让学生提前了解章节的知识,达到预习的目的。课后学生将自己绘制的思维导图进行完善细化,加入自己的理解和存在的问题。教师每次课的总结和期末复习也结合思维导图进行。每次课教师结合思维导图对所学知识进行梳理,学生对自己学习中存在的问题也就了如指掌。思维导图也用于期末总结,教师将思维导图发给学生,每组派一个学生总结一部分的思维导图,所有组最终将所学的内容能够全部总结完毕。在总结的过程中教师起到及时补充更正的作用,这样学生印象深刻。通过这种方式使学生前后知识点联系密切,对知识的掌握融会贯通。

(三)N-S 流程图的绘制

流程图对于程序设计的学习至关重要。每次实验前精选出1 道有代表性的典型程序来让学生绘制N-S 流程图。通过绘制N-S 流程图使学生更加清楚程序的流程,提高对编程的理解,使学生认识到编写程序只是开发过程的一个部分。让学生知道程序设计是由从需求分析、模块划分、代码编写以及测试和后期的维护组成,使学生清楚自己做的工作是哪部分,对问题的整体性把握更好。

(四)错误汇编

初学程序设计,调试程序中出现的各类错误是学生最头疼的问题,必须从根本上解决,否则将是后期的学习的最大阻力。因此在教学初期教师要求学生制作错误汇编。学生在调试程序时出现问题,除了系统原因由教师解决,一般应独立解决;如果不能独立解决,则寻求小组成员协助解决;本小组解决不了的问题提交给教师,由老师将问题发给其他小组,由其他小组解决;各小组都没能解决的问题,才能由老师解决。这种组间协作调动了学生的学习积极性。调试过程中要求学生记录程序调试过程中出现的错误,课后小组成员进行汇总,形成一份错误汇编。通过错误汇编,学生知道常出现的错误类型、错误原因及修改方法。错误汇编用于学习程序设计初期,使学生调试程序能力迅速提升。有了调试程序的坚实基础,后期程序设计的调试程序的过程就得心应手了。本次错误汇编的尝试使学生在调试程序能力方面得到了很大提高,小组组员之间协作密切,小组之间竞争意识增强。由于错误都是英文的,也提高了学生学习英语的兴趣。

(五)与专业相结合,激发学生后续学习热情

在课程后期针对讲解的知识点适当引入相关专业课程中包含C 语言的部分代码,让学生了解C程序设计在他们的专业方面的应用,提高他们的学习欲望,对后续课程的学习打下兴趣的基础。例如:在通信专业讲解位运算时,引入单片机中用C 程序进行红绿灯的控制,极大激发了学生的学习兴趣。

(六)计算思维方法的运用

C 语言教学改革,致力于实现计算思维在学习过程中得到潜移默化的培养,使学生养成用计算思维的方法解决学习工作中出现的问题,最终达到提高学生综合素质的目标。

1.系统思维的运用

系统思维方法就是从事物的系统性出发思考问题,以获得最佳处理方案为目标的思维方法[3]。即从系统的观点出发,从全局到局部的关系,从内部到外部的关系、相互作用关系、相互制约关系中,对对象进行系统而准确的考察。在程序设计中需求分析要求对软件的各个环节进行通盘考虑,需要解决硬件与软件的矛盾,开发商与用户的矛盾,软件模块之间的矛盾等,在矛盾中找到解决的方法。在整个系统分析过程中体现了科学的系统思维方法。

2.穷举思维的运用

穷举法也被称为暴力破解,就是通过把需要解决问题的所有可能情况逐一试验来找出符合条件的解的方法。对于没有任何规律的情况不失为一种可行的方法,比如数字密码破译,如果在不考虑时间的情况下都会得到最终的结果。穷举法在循环、数组中应用非常广,比如水仙花、素数、最大值、密码破译等问题都可以使用穷举法。让学生掌握这种方法,知道什么情况下可以使用这种方法对日后的学习和工作都有很重要的意义。

3.发散思维的运用

发散思维可以通过从不同方面思考同一问题,如“一题多解”“一事多写”“一物多用”等方式,培养发散思维能力。教师在教学中要多组织一些一题多解、多路思考的活动,引导学生发散性思维。发散思维在C语言程序设计教学之初就给学生留下了深刻的印象。例如,求3 个数的最大值问题。每个小组经过讨论,最后都可以想出几种不同的方法。虽然方法不够完善,但经过独立的思考,思路没有受到限制,加深了对问题的理解。然后教师和学生一起总结,归纳起来求三个数x、y、z 最大值的问题基本上有四种方法:

方法A:利用单分支结构实现

这四种方法不但体现了不同的思路,而且也用到了if 的单分支、双分支、多分支和if 的嵌套,使所学的知识也得到了更好的运用。最后提出对于数据量比较大的情况,哪种方法更加适合推广?最后一致认为A、B 两种方法适合推广,这两种方法在后续的数组中也会用到,为后续的数组讲解奠定了很好的基础。

4.逆向思维的运用

所谓逆向思维也叫求异思维,它是反过来思考的一种思维方式。就是沿着事物发展的反方向去思考问题并寻求解决办法。运用逆向思维去思考和处理问题,往往会收到意想不到的效果。在C 语言多年教学当中,发现很多学生在学习数据类型之初就掉队了,面对数据类型多样、输入输出格式多变等问题,对C 语言的学习就产生了畏难心理。针对该问题笔者提出了逆向解决该问题的方法。可以先不直接介绍数据类型,直接讲解1 道程序,设置不正确的数据类型会出现溢出,计算错误等情况,在调试的时候让学生去发现程序设计中设置不同数据类型的必要性,然后列出所有的数据类型及输入输出格式符,让学生自己去选择使用哪种数据类型及输入输出格式符。一旦理解了,记忆就不是问题了,这样数据类型就自然而然地接受了。

于是引出应根据数据的实际范围和参与的运算类型来确定数据的存储类型,那么数据类型的问题的引出及讲解已经是水到渠成了。该问题从问题产生的结果来引出问题,到最终解决问题,采用逆向的思维方法,解决了历届新生困惑已久的数据类型的问题,最后效果非常显著,为今后的程序设计打下了坚实的基础,也调动了学生学习语言的兴趣。同时也体现了逆向思维在教学中产生的突出效果,加深了学生对逆向思维的认识和理解。

三、总结

将“计算思维”融入C 程序教学中,在教授C程序设计的同时,加强计算思维意识培养,增强学生在学习、工作及生活中运用计算思维方法的能力。教师需要在教学中不断提炼教学内容,不断改革授课方式,使教学过程更趋于启发、引导、课内外互通,有意识地将计算思维能力的培养融入到程序设计教学的各个环节当中。学生用计算思维方法来求解问题的能力得到了提高,同时对创造性地解决问题的能力也有积极的促进作用。同时也启发老师在教学过程中恰当地运用一些思维方法则可以达到事半功倍的效果。

猜你喜欢

数据类型程序设计导图
医学专业“Python程序设计”课程教学改革总结与思考
基于Visual Studio Code的C语言程序设计实践教学探索
应用思维导图 提升学生化学学习力
思维导图在历史知识复习中的应用
从细节入手,谈PLC程序设计技巧
党的十九大报告思维导图
基于SeisBase模型的地震勘探成果数据管理系统设计
高职高专院校C语言程序设计教学改革探索
线上众筹产品的特征分析与研究
第6章 一次函数