关于C语言教学几个问题的探讨

时间:2022-10-17 11:35:01

关于C语言教学几个问题的探讨

摘要:计算机语言学习是大学工科学生的重点学习内容,作者分析了C语言的教学特点,以自动化专业为例,探讨了如何改善C语言教学的若干方法和途径。作者将所教的专业特色、学生前期基础和兴趣特点和C语言结合起来。在充分挖掘学生已有基础的前提下加强学生的专业技能培养。在这其中,C语言不仅仅是一门所教课程,而且是一个贯穿整个专业学习始终的工具。师生间的互动,教学相长,有力地提升了教学的效果。

关键词:C语言教学;自动化专业;专业技能;专业特色

中图分类号:GDP42 文献标识码:A 文章编号:1009-3044(2013)13-3111-03

随着信息技术在全社会的进一步普及,就业单位对大学生的计算机技能有了更高的要求。作为计算机教学的主要方面—计算机语言的讲授,也成为了高等院校教学改革的一个重点内容[1]。计算机语言已不再是一门孤立的课程,而是渐渐地作为一个必不可少的工具渗透到所在专业的整个学习进程中来。随着中小学阶段计算机课程的开设,大学新生的计算机基础也在日益提升。同时,由于我国人口素质的进一步提高,对计算机应用已不再满足于传统的简单编程,而是希望将计算机作为一个真正的工具,为生产生活服务。因此,高校计算机语言教学改革的迫切性进一步增强。如何适应新时期下学生、社会、用人单位对计算机语言水平的要求,是摆在教学人员面前的一个重要课题[2,3]。

该文以C语言为例探讨计算机语言在自动化专业学生中教学的一些改革途径[4]。作为一门适应性很广的计算机语言,C语言有着很强的生命力。它具备丰富的教材来源、大量的可参考教案和程序实例[5]。是在我国从985重点高校到各类职业技术学院中工科学生学习最广的一门计算机语言,具有很强的代表性。对自动化专业的学生而言,学好C语言有助于加深对计算机程序设计思想的理解,为学习汇编语言和其他计算机高级语言打下良好的基础。同时为学习后续专业课程以及进行相应的课程设计做好专业知识的储备。

当然,应该指出的是,该文所列举的很多方法并不仅适用于C语言。不同计算机语言具有大量的共性,该文所提出的不少思路完全可以在作适当增删之后移植到其他计算机语言的教学中。同样,适应专业也不一定局限在自动化专业,很多方法也可供其他专业参考。

1 教学过程的组织实施(Plan of teaching process)

1.1 C语言思想的引入

作为C语言教学的开始,教师有必要向学生介绍C语言的特点,培养学生对程序设计的兴趣。同时需要解答学生在学习C语言初期遇到的一些常见问题,使他们不至于一开始就对C语言的学习产生畏难情绪。就笔者的教学经验而言,教学初期一般会面临如下问题:

1)学了它有什么用?

这个问题可能是大学新生问得最多的一个问题?这时,教师并不一定说:“到时候你们就知道了”,而是可以从学生所在专业特色开始深入浅出地谈一下C语言的特点和一些容易理解的直观的应用。可以给学生介绍一下计算机程序在工厂过程自动化控制中的应用。因为学生将来都要去工厂进行实习的,事先给他们介绍一下这些背景知识可以有效地提高他们对C语言学习的好奇和渴望。同时也是为他们的专业课程学习做好铺垫。

2)我能学好吗?

由于我国一些农村中学计算机教学的局限,一些新生在看到其他有些同学具备较为熟练的计算机操作能力可能会产生焦虑情绪。这时,教师在课堂举例时,应当多举浅显易懂的例子。兴趣是最好的老师。C语言教学不是数学学习,不应该拿复杂的公式编程来使学生望而生畏。例如:如果要使学生熟悉条件语言、循环语句的使用,用最简单的数学四则运算举例即可。不要让学生把注意力过多地放在数学背景上。

3)考试怎么考?

关注自己的成绩是每个学生的权利,作为老师也有义务向学生讲述考试的题型和方式。在这里,我们的经验是鼓励学生多看其他的讲授C语言的书籍。大学不像中学,由于知识的经典性,中学的教材一般是统一的。而大学教材则体现了不同专业,不同编者的个性风格。在这里,我们希望学生能汲取各家之长。如果某个知识点在一本教材里没有看懂,那么就试图去另外一本教材里去找找。这种做法另一个好处是破除了学生对知识会一成不变的迷信。让学生明白:知识是不断发展的,必须不断学习才能不断地充实自己。

4)今后还会用到吗?

在中学,虽然每个学期所学的知识在不断的变化,但课程名却总是那么几个。但是在大学,课程名会随着所学内容的变化在不断地更新。如果说新生对大一的英语、数学、政治理论等课程名还似曾相识的话,那么面对高年级的一堆陌生的课程名就有点迷茫了。面对这个问题,我们可以在讲授C语言各个章节时用适当的时间举例讲授一下该部分内容在未来的哪些课程里面会有所涉及。通过这样的讲述,学生不但从感性上认识了将来要学习的课程的一些特点,也更进一步加深了对目前学的C语言的理解。

1.2 注重论述C语言和其他课程的相关性

作为自动化专业的一门课程,C语言既是整个自动化专业课程体系的一部分,同时也是一个贯穿专业学习始终的工具。我们在讲授C语言时,没有将它与其他课程割裂开来,而是时而不时有目的地贯输了C语言如何在其他的知识领域中的一些应用。在这里所需要指出的的,或许有老师认为对新生谈及一些专业课内容可能会使他们无所适从(因为他们尚无太多的专业基础)。就我们的实践经验来看,这种担心没有太多必要。现在大部分学生的自学能力和理解能力较过去已大大增强,而且目前高校给予学生的专业熏陶较之过去也已不可同日而语。新生完全有能力理解老师所讲的一些简易的专业内容。现举一些C语言与其他专业课结合的例子如下:

《数字电子技术》的一个基础内容是与门、或门、非门等逻辑门电路的讲解。而这部分内容又恰好对应了C语言中的与、或、非三种逻辑运算。我们在讲授C语言逻辑运算的同时也介绍了该部分内容与《数字电子技术》内容的吻合性。同时,电子技术中又涉及到数/模、模/数的转化问题。我们在讲循环语句时就要求学生尝试编一个十进制数和二进制数转化的程序(其算法在更早的《大学计算机基础》课程里就已经讲授到)。使学生对硬件逻辑和软件逻辑的概念具有了直观的概念。

计算机控制的一个特点在于它控制指令的离散性。《计算机控制》课程中一个很重要的知识点是控制量的递推运算。我们在讲述一维数组时有意识地强化了数组元素的递推编程。并且通过设置标志位,对某些具有特定意义的元素进行了定位标示。使学生在今后接触到相关课程时感到有章可循。

《微型计算机原理》是自动化专业中一门重要课程。在这门课程中,指令地址的概念是一个较难理解的问题。我们在讲C语言的指针部分时有意识地涉及到了该部分内容。试图通过讲述指针为今后学习指令寻址打下基础,反之,也试图通过介绍指令地址,使学生明确指针一节的地位和重要性。

作为一门工具性与理论性兼备的课程,《数据库技术》里面的内容较为繁杂。在讲述结构体这一章时,我们有意识地介绍了数据库的基本组成思想。要求学生用结构体知识编一个小型的数据管理程序。任务虽然简单,但已经涉及到了数据库组成的主干思想。使学生对这门课程不再神秘。

MATLAB语言的讲授是《计算机仿真技术》课程的骨干内容。考虑到仿真技术对于自动化专业的重要性,我们在讲授C语言语句的同时,也适量介绍了它在MATLAB语言中所对应的代码。这样做的目的是为学生破除“世界上只有C语言”这一误解。为他们更好地理解程序员的含义打下基础。

通过诸如此类内容的引入,学生学习C语言不再感到单一乏味。同时,由于我们对相关内容点到为止,并没有增加学生的负担。而当学生将来接触到对应的知识点时,就会享受到以前学习的基础了。

2 教学案例分析

本节就我们讲述C语言时的相关案例进行探讨。意图抛砖引玉,进一步完善C语言教学。如前所述,兴趣是最好的老师。如果学生有了学习的兴趣,自然教学会事半功倍。因此,我们将兴趣的培养贯穿了C语言教学的始终。

计算机编程的一个核心思想之一是通过不断循环执行一些简单的语句来实现对目标的搜索,并且在搜索的过程中需要判断搜索的终止条件是否已经达到。因而条件语句和循环语句的教学是C语言教学的一项重点内容。为了培养学生的兴趣,结合学生理工科的专业背景,我们在教学中引入了不少数论名题作为例子,要求学生编程予以验证。例如:3x+1猜想是一个很有趣的问题[6]。这个猜想是:任意给一个自然数,如果它是偶数,则除以2;如果它是奇数,则乘以3再加上1.所得结果再按如上规则进行运算,最终结果一定是1.例如,对数字7,其后续的运算结果是;22,11,34,17,52,26,13,40,20,20,5,16,8,4,2,1.针对这个问题,我们要求学生用条件语句判断数字的奇偶性,然后用循环语句实现这个数列的计算。更推广一步,我们还要求学生用随机数发生器生成一个随机整数,然后分别用while循环和do-while循环来实现这个过程,并且要学生记录下达到1时一共产生了几个数?如何实现到1就退出循环?在这一循环过程中的最大值是多少?由于3x+1问题的浅显易懂,且因为其尚未得到证明所具有强大挑战性,使学生对编程产生了浓厚的兴趣。不少学生纷纷试图去验证自己所提出的数的正确性。还有学生则试图进一步通过函数调用的方式来改善程序。也有学生在程序中插入了各种有趣的提示性语句。这个例子的提出,满足了不同层次学生的不同要求。一下子就把他们带进了丰富多彩的代码世界中。

输入输出语句的编写是人机交互的关键环节。总所周知,英语学习是我国广大大中学生学习的一个主要课程。几乎所有的大专院校都把学生能否通过某种英语水平考试作为其能否顺利毕业的核心条件之一。我们也注意到个别学生由于担心英语的压力而在课堂上记忆英语单词。对此,我们采用了引导的办法。在针对3x+1问题编程的训练中,我们要求学生用英文写出对应代码的提示和答案。在此之前,不少学生是用汉语拼音或简单的“yes”、“no”,甚至仅是“?”来表示问题的。通过我们的这一要求,学生积极地去寻求许多词汇的英文表述。这样一来,他们希望看懂C语言编译器所给出的英文错误提示的热情也越来越高了。通过这样的训练,有些学生开始渐渐能尝试看一些关于C语言的英文著作了。如此不断循环,学生的计算机能力、英语能力都得到了提高,应该说是实现了双赢。

3 结束语

计算机语言的教学工作是工科专业教学的一个重点环节。科技发展的客观要求使得我们更加重视教学课程的一体化。作为一门在专业学习初期阶段开设的课程,C语言有它自身的一些教学特点。我们在总结自己的一些教学经验的基础上,试图更好地将C语言这个工具融入到学生的整个专业学习体系中。让学生从享受编程的快乐开始,无形中回答了自己前期的一些疑惑,同时也不知不觉地为将来的其他课程学习以及自己专业素质的培养打下了良好的基础。

参考文献:

[1] 谢宝荣.计算机教学设计艺术[M].清华大学出版社,2007.

[2] 陈国良,董荣胜.计算思维与大学计算机基础教育[J].中国大学教学,2011(1):7-12.

[3] 冯博琴.计算机基础教育新阶段的教学改革研究[J].中国大学教育,2004(9):7-10.

[4] 王鹏远,苏虹.高校非计算机专业C语言教学改革与实践[J].计算机教育,2011(2):15-18.

[5] 谭浩强.C程序设计[M]. 3版.清华大学出版社,2005.

[6] Jeffrey C. Lagarias, The Ultimate Challenge: The 3x+1 Problem [M].American Mathematical Society, 2010.

上一篇:数字信号完整性测量的示波器选择 下一篇:混合学习在计算机教学中的应用