C语言教学

点赞:6705 浏览:29940 近期更新时间:2023-12-24 作者:网友分享原创网站原创

摘 要:为提高C语言教学质量,针对C语言课程内容和特点,在教学中结合实际应用激发学生的学习兴趣,运用知识点间联系帮助学生建立知识体系,通过实践训练提高学生编程操作能力,注重编程规范使学生养成良好的编程风格,取得了较好的教学效果.

关 键 词:C语言;程序设计;教学方法;编程规范

中图分类号:TP312文献标志码:A文章编号:1006-8228(2012)12-41-03

OnClanguageteaching

ShaAijun

(SchoolofCommunicationEngineering,NanjingInstituteofTechnology,Nanjing,Jiangsu211167,China)

C语言教学参考属性评定
有关论文范文主题研究: 关于课程设计的论文范文资料 大学生适用: 电大论文、本科毕业论文
相关参考文献下载数量: 43 写作解决问题: 写作参考
毕业论文开题报告: 标准论文格式、论文设计 职称论文适用: 论文发表、高级职称
所属大学生专业类别: 写作参考 论文题目推荐度: 优秀选题

Abstract:InordertoimprovethequalityofClanguageteaching,moreattentionhasbeenpaidinteachingtostimulatethestudents'interestbypracticalproject,helpingthemtoestablishknowledgeworkbyusingcontactbetweenknowledge.Practicetrainingisusedtoenhancetheirprogrammingability.Theprogrammingrulesareemphasizedtodeveloptheirgoodprogrammingstyle.Teachingeffectshebeenproventobegood.

Keywords:Clanguage;programming;teachingmethod;programmingnorms

0引言

C语言作为一种计算机程序设计语言,兼具高级语言和汇编语言的优点,在编写系统软件和应用软件方面得到了广泛的使用.因此,通信、计算机、信息等专业往往将其作为第一门专业基础课.C语言教学目标要求学生既掌握C语言的语法、结构、数据类型等内容,又要掌握软件工程思想,掌握常见算法,学会使用C语言编程解决实际问题并形成良好的编程风格,为后续课程及未来工作打下良好基础.

本课程知识点较多、使用灵活、实践性强、难度较大,且大部分学生是第一次接触编程,缺乏相关编程基础和思维,学时又有限(一般为48学时或64学时),如何提高C语言教学质量,是一个值得探讨的问题.本文从几个方面介绍笔者在教学中的一些体会.

1提高学生学习兴趣

学习兴趣是推动学生积极主动学习的直接动力,是最好的老师.C语言中语法规则较多,而且相对枯燥,要让学生学好C语言,最重要的就是激发其兴趣,让他们在学习中找到乐趣,在快乐中掌握相关知识点.

例如在第一次课程中,当介绍了C语言产生背景、发展历程等知识点之后,可向学生展示一些实用性的小程序,如“推箱子”、“五子棋”、“贪吃蛇”等游戏.通过生动、形象、直观的展示,让学生对C语言产生想学的强大动力.一旦学生产生兴趣,可以先让他们尝试编写输出简单的“Helloworld!”程序,在此过程中,顺势让学生了解简单的C语言程序的框架,使得语法、数据类型等知识点不再枯燥,成为程序中有血有肉的必要组成体.

在后续的课程中,也要不断地结合具体知识点的学习,选择具有趣味性、实用性和挑战性的小型案例,采取项目案例教学法,如超市购物系统[1],将其各部分的功能分散到各章去,从简单到复杂,让学生在快乐和兴趣中一步步地去学习和探索新的知识.

同时,还应鼓励学生利用所学知识,设计一些实用的小程序来解决身边的一些小问题.当学生有了目标,投入进去,遇到困难必然会想办法去克服,而当他们尝试到了成功带来的喜悦时,又会促使他们进一步爱上编程.

2运用联系法,帮助学生建立知识体系框架

C语言知识点很多,包括基本数据类型(整型、字符型、浮点型)、算法、基本的程序结构,数组、函数、指针、结构体和共用体、文件、位运算、预编译等等【2】.根据知识点之间的联系,上述内容可整合成数据类型、算法和程序结构、函数、文件及其他等几大部分,在课堂教学中,可运用联系法,帮助学生实现知识点的迁移,建立知识体系框架.

⑴数据类型

数据类型包括基本数据类型、构造类型中的数组、结构体、共用体,此外还有指针类型等.不同的数据类型将决定内存中占据的空间大小以及表示数的范围,可以此为线索,讲解基本数据类型和构造类型的含义和联系,比如同类型的基本类型数据构造在一起就成了数组类型,不同的类型的数据构造在一起,就成了结构体类型等.

再联系到现实中的例子,讲解变量和指针变量的含义和定义,进而讲解指针变量不仅可以存放普通变量的地址和数组元素的地址,还可以存放结构体数组变量的地址和结构体数组元素的地址.

⑵算法和结构化程序设计

编制程序的过程就是形成算法、实现算法到结构化代码转化的过程.

首先,针对学生感觉编程难的问题,教学中首先让学生形成正确的思维.当遇到一个问题的时候,让学生去思考一下不用程序是如何解决的[3,4].例如:先做什么,再做什么;可分几种情况讨论;有没有需要重复做的事情.引导学生进行一题多解,分析算法的步骤和运算量小,探讨算法逻辑严密性等方面的问题.一旦学生有了自己的思路,编程就会变得更容易:只要将上述偏文字化的思路(算法)转化成用流程图描述,并进行结构化编码即可.实际上,在上面的思考和讨论中,程序框架已经体现出来了.

其次,讲解常见典型算法,拓展知识点并建立联系,引导学生悟出其中的规律.讲解迭代法、递归法、穷举法、回溯法以及一些常用的程序段[5]:如求累加、累乘;判断一个数是否为素数;对一个数的各个数位进行分离;求最大公约数和最小公倍数;对数组元素的检索、排序、插值、删除、逆序;求矩阵的转置;对字符数组进行复制、连接、比较;对链表中结点的检索、排序、插值、删除等等,这些都是学生必须要掌握的.讲解上述算法和程序的时候,可以采取阶梯法,循序渐进.例如,先讲解累加、再讲解累乘,分析有何不同;再比如,讲解数组元素的检索、排序、插值、删除操作,当讲到链表时,分析链表中结点的检索、排序、插值、删除等操作和数组中的操作有哪些异同点等.⑶函数部分

函数是模块化程序设计中的基本组成单位.可以用一个小程序来引入,如:求学生平均成绩.在学习函数之前,学生喜欢将所有代码全放在main()中;而现在可以将输入、求平均成绩、输出等功能独立成函数,在main()函数中调用这些函数.让学生从总体格局上把握这两种形式有何不同,体会模块化的作用,了解耦合性和内聚性等概念,形成对模块化的初步印象.

为讲解函数的一些重要概念,可从现实生活中学生比较熟悉的数学中的函数概念入手,帮助学生理解函数名、函数定义和函数调用,理解函数的形参和实参,函数的返回值等概念,并结合已有的程序将这些知识点迁移到C语言中.

在C语言中,函数的实参可以是值或地址,这个知识点至关重要,两者区别如下:①当函数的实参为地址时,被调用时传递给形参(指针变量),若被调用函数中对形参所指向的内容进行了修改,其实质就是修改调用函数中的实参所指向的内容,即修改的结果能带回来;②其他情况,如函数的实参虽为地址,但被调用函数中是对形参(指针变量)进行修改,或者函数的实参为数值,其修改的结果都是不能带回的.上述参数中的地址,可从变量的地址推广至数组元素的地址、数组名、指针变量、结构体变量地址和结构体数组名.

⑷文件

文件中应首先让学生明白什么是文件,为什么需要文件,文件存储的位置和先前的变量有什么不同,文件的分类等基本概念.在缓冲文件系统中,对文件访问还要借助“文件类型指针”,让学生体会这和先前所学的变量访问等有哪些不同.此外,该文件类型又是一个结构体类型,描述的是打开文件的相关信息,则可以和结构体类型的定义等概念建立联系.

文件的操作主要包括文件的打开、文件的关闭、文件的读写、文件读写位置的定位、文件出错检测等.此处以讲解文件的读写为重点,可让学生明白读写前要打开文件,需提供文件名和读写方式,文件读写完后还要关闭等等;读写的过程中,可根据一个字符、一个数据块等选取不同的函数,还可以让学生将此处的fgetc()和getchar()建立起联系,明白设备文件的概念以及getchar()实质上来自于fgetc(),将前后知识融会贯通.当然,若要实现随机读写又引出fseek()等知识点,学生在联系和区别中建立框架,明白所以然.

⑸其他方面

如位操作、预处理等也要讲解,此部分内容相对简单,由于篇幅关系,不再进行探讨.

3理论联系实践,注重提高学生上机实践操作能力

C语言是一门实践性极强的课程,要让学生真正学会C语言,必须让他们经过大量的实践和编程训练,在实践中提高技能.我们把实践部分分为三大块.

⑴课内实验

在本学院教学中,作为64学时课程的一部分(46学时理论+18学时实验),一共有9次实验,对重要知识点,每学完一章内容,就安排一次上机实验课,尽量安排在紧跟理论课之后.

在实验中,我们侧重训练学生对所学知识的理解和掌握.每次实验,在内容上采用典型的案例;在层次和题型上采用循序渐进的方式;既包括验证性等基础性的实验,又包括分析填空、改错、独立设计等提高性的实验.在教学中,充分发挥教师的主导和学生的主体作用,上机前教师讲解算法及注意点;然后让学生动手编写程序、上机调试;教师在学生上机过程中,逐个座位巡视,帮助解决学生遇到的问题;上机结束后,要求学生提交实验报告,进行总结提高.

在实验课程中,一定要让学生掌握程序纠错的方法,“授人以渔”.第一,要引导学生学会纠正语法错误[2]:看懂编译错误的英文提示信息的含义,学会排除错误并进行总结.第二,要引导学生纠正逻辑错误:除学会静态检查外,还要学会调试程序的方法.一旦学生掌握了如何单步跟踪,如何观察数据的存储空间,何时需要在何处打上断点,何时需要进入函数内部跟踪等调试的方法和技巧,程序的运行状态就变得直观、清晰、可控,程序调试将不是难事.当学生能排除错误并调试成功,必定会获得成就感,也必定会加深对语法、数据类型、算法等知识点的理解,促进他们有信心学好这门课程.

⑵课外上机训练

课外上机训练,我们布置10道代表性强、综合性高、实用性好的题目,让学生利用课外时间,进行编程和调试,并提交程序和报告使学生的能力得到进一步提高.

⑶课程设计(1周时间)

在为期一周的过程课程设计中,我们要求学生将C语言课程中学到的知识综合运用到一个小的项目中,从选题到整体规划、模块划分、详细设计、编码、调试,再到撰写一个类似毕业论文的课程报告,对学生进行一个完整的训练.课程设计的题目可为职工信息管理系统或者通讯录这种类型的题目,鼓励学生用数组或链表两种不同的数据类型来实现,并比较其中的优缺点;学生也可以根据自己的兴趣和能力,经指导老师同意后,选择编程实现一些游戏项目.


4注重编程规范化训练,养成良好的编程风格

在C语言的教学中,还应从软件工程的角度,按照企业对程序员的要求,注重编程规范的训练,养成良好的编程风格[6].

⑴注意程序书写格式

要注意程序的书写格式,比如,程序中添加必要的空行,一行代码只做一件事,有正常的缩进,{}的匹配,正确的对齐,加必要的注释,使用括号确定表达式的操作顺序,这样可使程序美观、可读性好.此外,一些书写习惯有助于提示一些语法错误,比如,初学者将等于等于经常误写成等于,若if(a等于等于1)误写成if(a等于1),编译器并不提示出错信息;但若交换运算符两边的运算对象,即改写成if(1等于等于a),此时,若再误写成if(1等于a),则编译器就会提示出错信息.

⑵提高对内存使用管理方面的意识

C语言是一个可以对内存直接操作的语言,内存的概念在C语言中相当重要.从全局变量、局部变量的内存空间的分配,到利用malloc()等函数申请内存以及指针的运用,处处离不开内存,因此要强化学生对内存使用管理的意识.例如:全局变量、局部变量、malloc()申请的内存所在的区域有何不同,再如内存分配后要检查是否分配成功,在引用内存前要对其初始化、避免出现野指针、避免数组越界、避免内存泄露等.

⑶注重程序的出错处理

当程序出错时,应有正常的出错提示信息,有良好的交互性.比如对文件的打开要考虑文件打开失败的处理,比如申请一段内存时,要检查是否分配成功,再比如输入学生的成绩(0~100)时,要考虑误输入的情况等.

⑷形成重视软件文档的意识

文档是计算机软件产品的重要组成部分,应该适时的让学生初步形成重视软件文档的意识.比如课程设计中要求学生:学习包含软件需求分析、可行性分析、总体开发计划、概要设计、详细设计、系统测试等文档的标准和编制规范方面的内容.

5结束语

C语言是一门得到广泛使用的语言,该课程又是一门基础课,掌握该课程对学生学习后续其他课程,以及未来就业都有着十分重要的现实意义.如何让枯燥、难懂的课程学习变成集知识、趣味于一体的学习,如何让学生快速建立起知识体系、掌握重要的知识点,如何让学生动手操作能力得到切实的提高、编写出符合规范化要求的程序,为未来成为一名合格的软件编程工程师打下扎实的基础.本文对这些问题进行了探讨,并在近年的教学实践中加以运用,取得了良好的效果,学生的编程能力和综合素养得到了明显的提高.