加强《C语言程序设计》课程中编程理念的培养

2012-04-29 00:44夏一行
教育教学论坛 2012年1期
关键词:C语言程序设计C语言教学方法

夏一行

摘要:本文分析了目前高等院校中《C语言程序设计》课程教学中存在的问题,从教学实践、算法设计、综合性项目练习、创新思维培养以及编程风格等多个环节提出方法,从多个方面加强学生的编程思想和能力的培养。

关键词:C语言;程序设计理念;编程实践;教学方法

中图分类号:G642.4文献标志码:A文章编号:1674-9324(2012)01-0043-02

在众多高校的本科教学中,《C语言程序设计》课程是各个专业的一门重要公共技术基础课,它为其他的专业课程奠定了程序设计的基础,在本科教学计划中占有重要的地位和作用。C语言作为程序设计中的一个工具,是很多后续专业课程的基础。掌握C语言的词法、语法和结构,更重要的是培养学生的程序设计思想和方法,这才是《C语言程序设计》课程的最终目的。本文作者结合课程特点和教学过程中的实践经验,从多个方面来讲解如何培养学生的编程理念。

一、目前课程教学过程中存在的普遍问题

《C语言程序设计》课程一般都针对大一新生,学生从小接受的是“应试教育”,考试成绩是教师考查评价学生的主要依据。在这种教学模式下,课程教学就存在很多局限性。

1.侧重于语法结构,忽略程序设计思想的培养。该课程一般都是面向高校各个工科类专业的,选择同一本教材,课程结束统一进行考核,这样必然就导致教师上课时需紧扣教材;课程考核一般侧重于要求学生掌握C语言的词法、语法和结构,能解决一些简单的编程问题;而程序设计最主要的编程思想和能力的培养往往被弱化了,教师经常会反复强调书本上的知识点和示例,而真正程序设计中的编程环节花的时间比较少,这也是课程设置的局限性。

2.算法设计中数学思维能力薄弱。计算机程序是按照实际的工作步骤而事先编制好的、具有特殊功能的指令序列。而程序的核心是算法,它是程序所要解决问题的规则、顺序和步骤,在程序编制过程中有着重要的地位。算法提供一种思考问题的方向和方法,算法设计的过程往往需要用到大量的数学知识,需要用一种数学的思维来将问题转化成一系列的步骤。在教学过程中,发现学生编程时往往卡在数学问题上,而有数学基础的学生会具有较大的优势。

3.缺乏综合性项目的练习。C语言课程的知识点繁多,一般按照课程大纲设置,整个教学过程时间比较紧张,所以教学模式上,是按知识点逐个讲解,围绕每个知识点结合示例加强理解。这些示例都比较简单,包含的知识点比较单一,这样导致学生无法很好地将各个知识点融合。一般要到课程过半时,会进行一些简单的综合性项目练习,但这些项目编程实现也比较简单,实现代码几十行而已。而且课程后期,知识点难度加大和期末考试的临近,学生压力增大,对综合性项目的练习缺乏激情。而综合性项目的联系是锻炼学生思维能力和编程能力的有效途径。

二、加强课程教学环节中编程理念的培养

大部分学生在开始《C语言程序设计》课程时,对程序设计概念知之甚少,在使得学生掌握这门语言的同时,激发他们的兴趣,培养编程思想和能力,这样才算学好了这门课程。那如何培养学生的编程理念,从哪些环节来提高学生的编程能力,是每个任课教师需要考虑的问题。

1.加强实践环节。C语言词法语法结构复杂,需要学生记忆的内容很多;而且很多学生是首次接触程序设计,这个课程与以往的数理化课程不同。如果教学时一味地强调知识点内容的灌输,那会引起学生的恐惧和反感。这样,随着后续内容的难度加大,学生学习这门功课会越来越累。程序设计课程都会结合实践环节,一般是上机。这个环节在学习程序设计语言的过程中起着至关重要的作用。教师需要通过这个环节,将课堂上枯燥乏味的概念应用到实际编程中,让学生在自己的编程结果中体会到课程的神奇,激发学习的兴趣。

那如何来更好地利用实践环节呢?具体主要从两个方面入手:一是结合有意思的程序示例来激发学生的兴趣。怎样让学生喜欢程序设计,主动去学习C语言?那就要能让学生体会到通过C语言能实现的奇妙结果。从学习这门课程开始,就可以通过一些简单有趣的例子,让学生对有趣现象背后的C语言产生好奇心。比如,学生比较喜欢游戏,课程开始时,可以演示“猜数字”这个小游戏。这个游戏早期在文曲星、掌上电脑上比较流行,学生能从这个示例中体会到简单的人机交互,当他们看到跟计算机的较量产生输赢时,能形象地体验到程序设计带给他们的小小冲击。又比如,学习多重循环时,外层、内层循环嵌套,不同的循环变量的变化……这些概念会是学生倍感困惑。这时,我们可以通过一些身边熟悉的示例来演示:“百钱买百鸡”,这是一个有意思的例子,100元钱去市场买100只鸡,包括公鸡、母鸡和小鸡,公鸡5元1只,母鸡3元1只,小鸡1元买3只,用多重循环实现。假设公鸡x只,母鸡y只,那么小鸡就是(100-x-y)只,编程时,可以将x作为外层循环变量,y作为内层循环变量,对每一组x和y进行100元钱的判断。这样学生通过感性的例子,理解多重循环的流程。从实际的课堂效果来看,学生对这类例子会表现得比较兴奋,课堂气氛同时也被调动起来了。二是改变学生上机环节的方式。传统的程序设计上机环节,一般是采用某些编程环境,让学生完成编程作业。学生面对单一的编程环境,程序设计就成了一件枯燥的事情。学习《C语言程序设计》课程的学生一般都是大一新生,在现在的“应试教育”模式下,已经习惯了以考试来衡量自己学习的结果。所以在上机环节引入考核模式,让学生马上能得到一个上机成绩,来激发他们的积极性。所以在上机环节,采用本校计算机学院教师开发的在线测试系统(http://acm.hdu.edu.cn)提供的C/C++模块,作为学生上机练习的手段。这个在线测试模块突破了传统的考试系统只能对选择、填空、判断对错等客观题进行自动评分的模式,可实现对C语言主观编程题的自动评分,根据学生程序的语法、语义和运行结果,衡量学生程序的正确程度。而且教师可以结合课程内容和进度,添加自己的题库,让学生更好地理解课堂内容。经过连续几个学期的使用,受到了师生的普遍欢迎,大大提高了上机效率。以往上机环节学生忙于上网玩游戏的现象基本杜绝。

2.从多角度扩展算法设计的思维。使用C语言程序设计解决问题,要分析问题,用算法对问题进行描述,然后才是具体的数据类型、变量定义、结构选择等。计算机解决问题的方法和思想与我们解决问题的传统习惯及想法是不一样的,这就是我们在学习程序设计时,去学会、去思考计算机的想法,逐步适应计算机的编程思想。教学过程中可以从多个方面来加强这方面的理念。一是掌握多个算法描述方法。算法描述有很多种方法,比如自然语言描述、程序流程图、伪代码等,复杂的问题经过这些算法描述会变得清晰简单。但是在教学过程中,由于课堂时间限制,这些方法的介绍和使用介绍得比较少,经常课程结束了,学生还无法完成一个完整的流程图。所以在实际程序设计过程中,很多学生忽略了算法设计,只能做到模仿,首先考虑的是有没有可以类似的参考例子,然后可以仿照着写代码。所以在课堂讲授示例时,应该时时体现算法设计在程序设计中的重要性。解决一个问题的时候,不是先把代码展示给学生,而应该现在分析问题,从计算机思维的角度设计相应的算法,并用合适的方法进行描述,然后再引出代码。让学生更清楚代码的来龙去脉,而不是去阅读代码、理解代码。二是学会算法设计的灵活性。现实生活中解决一个问题的方法是多种的,比如要从A地到B地,路径可以有很多条,选择的行进方式也可以多种。计算机程序也一样,比如求1-100的平均值,算法设计可以先将1-100累加然后除以100,也可以1-100每个数除以100再累加。而实现的代码也可以灵活多变,比如涉及到的100个数的累加环节,用循环来实现,可以灵活选择while/do-while/for任一个循环结构来编写代码。所以C语言词法语法方面是有约束规则的,但是算法设计是灵活多变的。在示例讲解时,可以有意识的“小题大做,一题多解”,通过讲解一种方法,提示启发学生用其他方法解决问题,激发学生考虑问题的灵活性。

3.加强综合性项目的练习。除了改变上机环节的方式,还应该加强综合性项目的练习,对所学的词法语法能融会贯通。可以在课程开始时,给学生布置一个较大型的综合性项目,作为学期结束时需要上交的大作业。另外在平时的上机过程中,有意识地增加综合性项目的练习。随着课程进度,将学过的知识点逐点加入练习项目,防止将各个知识点隔离独立开。

4.培养创新思维能力。C语言是一门成熟的编程语言,但是学生如果死记硬背这些词法语法,是无法真正学好这门课程的。我们应当致力于培养学生运用C语言解决实际问题的编程能力,将成熟的C语言知识应用到多变的实际问题中,要求学生具有创新思维能力。教学过程中要开拓视野,不能局限在教材上,如果将书本上的知识对学生进行填鸭式灌输,学生一方面会对教学产生排斥,更重要的是会限制了学生的思维。在教学各个环节,应该有意识培养学生的创新思维,鼓励学生的创新想法。学生的想法很多时候是天马行空,但要相信“存在即合理”。学生最开始学习编程,首先考虑的是实现,而不是代码的效率问题。当学生设计了一种新算法时,先不要带着评判的眼光去看代码,而应该是鼓励的态度。

5.培养良好的编程风格。学生在学习程序设计的过程中,还应该养成良好的编程风格。一是有意识培养编程的完整过程,包括分析问题、算法设计、代码编写、调试程序和编写文档等。二是代码编写的良好风格,虽然C语言对书写格式没有严格要求,但一个良好的、规范的书写方式,可以提高程序的可读性。初学C语言更应该注意养成这方面的好习惯。

一个良好的编程理念不是简单形成的,需要教师有效地培养和训练。学习《C语言程序设计》课程,要使学生掌握C语言的词法、语法、结构以及结构化程序设计的基本思想和方法,要使学生认识到算法、实践以及良好的程序设计风格在本课程学习中的重要性,更要培养学生熟练使用C语言编程分析和解决实际问题的能力,培养学生在以后学习、工作中,无论使用什么语言编程,都能灵活应用这些思想和方法的能力,为学生进一步学习其他专业课程和今后从事软件开发工作打下坚实的基础。

参考文献:

[1]何黎霞.传统教学和案例教学在C语言程序设计教学中的应用[J].电脑知识与技术,2010,6(10).

[2]韩春成,邢鹏飞,燕扬.C语言程序设计教学改革实践[J].长春师范学院学报(自然科学版),2010,29(5).

[3]袁柳,路纲.程序设计语言教学过程中的学生思维能力培养[J].计算机教育,2011,(12).

[4]陆蓓.C语言程序设计[M].北京:科学出版社,2009.

猜你喜欢
C语言程序设计C语言教学方法
初中英语写作教学方法初探
基于Visual Studio Code的C语言程序设计实践教学探索
教学方法与知识类型的适宜
基于C语言的计算机软件编程
高职高专院校C语言程序设计教学改革探索
以“学生为中心”的《C语言程序设计》教学设计探究
基于翻转课堂的《C语言程序设计》课程教学系统的实现与研究
浅谈《C语言程序设计》课程的教学改革
《C语言程序设计》课程的教学改革与实践
论子函数在C语言数据格式输出中的应用