《C语言程序设计》教学的一点经验

2022-10-18

上大学时, 作者就听师兄师姐说学好C语言对以后无论是计算机等级考试还是一些电子设计都会有很大的帮助。于是决心学好它。可是开课不久就被什么算法、数据类型搞的一团糟, 当初的那份信心几乎荡然无存。根本无法想象现在自己却还能是一位教C的老师!

作者所遇到的麻烦应该是很多初学C的人都会遇到。现在经过了几年的教学和不断地学习, 写了这篇关于C教学方面的文章与各位同仁交流一下, 希望能对刚要学C语言或教C语言的朋友有所帮助。

首先, 根据实际情况, 适当调整教学顺序。高校的C教材普遍都采用的是谭浩强教授编写版本, 该书内容丰富全面, 但在教学顺序的安排上作者认为应稍作调整。比如算法这一章放在第6章之后来讲较为合适。因为这门课一般在大一下学期开设, 而在此之前学生根本也没接触什么程序设计, 一下子给他们讲程序设计的算法他们难以理解, 一团雾水, 严重一点可能打击了他们的信心。而当我们学完第6章循环语句, 而再回来结合一些具体的程序设计把算法的知识点容纳进来, 不再显得枯燥、空洞, 会给学生对算法豁然开朗。再比如第9章, 完全不必单独作为一次课来讲, 可以把它的内容渗透到其它单元进去:“宏定义”可以在讲字符常量的时候加以说明 (该课本例3.1就是) , 这个知识点其实不难理解, 而“条件编译” (这个在简单程序设计中用的少, 可以稍微提下就是) 和“‘文件包含’处理”的内容可以在讲解库函数和用户函数的时候分析, 这样既节省了课时, 又能将各个章节有机联系起来。另外, 把第8章的内容放在第7章之前讲授, 效果也会好些, 因为第8章的内容在第7章的许多地方都用得到。

其次, 课堂内容可以讲俗气一些, 一切以帮助学生理解为主。现以第一节课 (C语言概述) 为例, 各个知识点作者在课堂上是这样安排讲解的: (1) 历史背景 (几句话带过) 。自己看书, 还可以通过上网等其它资料去了解。 (2) 特点 (几句话带过) 。学习一段时间回来看就自然明白。 (3) 实用性 (简单举几个现实生活C应用的例子如银行ATM取款机系统) 。 (4) 通过实例让学生了解C程序的基本框架 (这是本次课的重要任务) 。首先把例1.3在黑板上作板书, 如下:

然后向学生说“C语言是由函数构成的, 函数又是由语句构成的, 这是本节课要大家理解和记住的两句话”。接下来就向学生讲什么是函数:由一个名称 (如本例的main、max) 后带一个括号“ () ”和一个花括号“{}”等组合在一起的形式就是一个C函数 (这里暂时不说库函数, 以后再给大家解释) , 那么本程序就是由两个函数main函数和max函数组成。而“函数是由语句构成”这点又是怎么理解的呢?大家可以看到每个花括号“{}”里边有很多“;”, 那么每一个“;”的内容就是一个语句 (当然函数体的声明部分不应当被看成是语句, 关于这一点等到讲第4章“C语句概述”再纠正过来) 。 (5) 帮助学生理解上面的程序。讲解之前给学生介绍这么一个通俗易懂的事例:假如我是班主任和全班X位同学组成我们这个班级, 我负责宏观管理这个班级的事务, 而班里的每个同学都有自己的特长, 当我要完成某一项工作的时候我可以随时利用有相应特长的同学来完成, 同学之间也可以相互帮忙利用他人的特长。比如我要整理某班学生的成绩, 这个过程可能要用到加、减、乘和除等运算, 而我们同学当中有些善于处理数据的加法, 有些善于处理数据的减法, 有些善于处理数据的乘法, 有些善于处理数据的除法, 那么这样当我要做数据的加法时, 我就可以把数据交给善做加法的同学, 等他做完直接把结果给我就行。毫无疑问, 学生很容易理解这个事例, 那么在这基础上来讲解例1.3学生也就很容易理解了:整个班级好比一个程序, 我和同学们一起即 (X+1) 个函数构成班级, 我是主函数, 每人的特长就是指每个函数各自的功能, 利用即“调用”之意……这样上完第一节课学生就对C语言有了一个大致的轮廓。

第三, 教学时注意由浅入深, 循序引导。在和学生沟通时, 作者了解到很多学生预习的时候一直搞不清楚数据类型是怎么回事, 总觉得很乱。这也是很多初学者都会遇到的麻烦。对于这样的问题, 作者是这样分析的:计算机经常处理的是数据, 而一说到数据大家第一反应就是象1、2、3或1.2、0.5等这样的数, 其实C语言的数据应该指整数、实数和字符 (如英文字母、“/”等一些符号也算) , 他们分别属于整型、实型和字符型。不同的数据类型在计算机中所占据的存储单元 (空间大小) 有所区别, 在说区别之前又给大家讲了个帮助理解的事例:假如我们系想办一个名称叫“通信0611”的班级, 那么我们得事先向学校申请了一个办学教室, 这个教室的地址是教学楼的102房间, 那么有了这个教室空间后, 属于我们通信0611班的同学就可以进来了。同样的道理, 我们可以向计算机申请一个存储空间, 这个空间的名称设是a (标识符的命名规则后面讲) , 注意a只是空间的名称, 空间的地址也像刚才“102”那样是一个数字编号, 作为用户来讲不必知道它的确切值, 但该确切值却可以用“&a”表示, 有了空间以后, 就可以把相应类型的数据装进来。那么怎么知道装进的数据是相应类型的呢?这在申请的时候就看出来了, 因为申请的格式是这样的:

数据类型空间名称。

举个例子给大家看更明了:比如我们像申请一个可以装整数的空间a, 可以这样写:

int a;

如果想申请的空间装的是实数, 那么“int”换成“float”;如果想申请的空间装的是字符, 那么“int”换成“char”。不同的数据类型所获的存储空间大小不一样, 整型两个字节16位, 实型4个字节32位和字符型1个字节8位。对数据有大有小, 以整型为例用“int”申请的空间也就16位那么大, 而实际当中可能有的数据很大超出了16位空间所能容纳的范围, 这时就应该向计算机申请更大的空间, 于是申请方式可这样写:

long int a;

这样a这个空间就变成4个字节32位, 扩大了一倍。而对于a这个空间所装的数除有大小之外还可能有正负之分, 又怎么去体现呢?同样在申请的时候可以看出:

[signed]int a;或unsigned int a;

前者表示a空间的数有正负之分, 该16位空间的第一位即是符号位, 该位为0表示数值为正;为1数值为负。此时, a的存数范围是“-215~215—1”。方括号内的部分是可以省写的。例如, signed int与int等价。后者表示表示a空间只能存放不带符号的整数, 此时, a的存数范围是“0~216—1”。因此, 如果看到这样的一个声明:

unsigned long int a;

那么我们一下子可以得到以下信息:

(1) 空间的名称是a;

(2) 空间的具体地址是“&a”;

(3) 空间的大小有4个字节32位;

(4) 空间能装的是无符号的整数, 范围“0~232—1”。

接下来可以向学生讲解数据在内存中是如何以二进制形式存放的, 这个知识点在理解数据存储空间后就显的比较简单了, 鉴于篇幅就不谈了, 对实型数据和字符型数据亦可类似教授。

第四, 善用一些“伎俩”巧记、理解。C语言的运算非常灵活, 功能十分丰富, 运算种类远多于其它程序设计语言。在表达式方面较其它程序语言更为简洁, 如自加、自减、逗号运算和三目运算使表达式更为简单, 但初学者往往会觉的这种表达式难读, 关键原因就是对运算符和运算顺序理解不透不全, 例如变量的自增有两种书写形式:

i++和++i

前者的意思是先使用i这个空间里的值, 而后把i里面的值加1;后者的意思是在使用i的值之前, 先使i里面的值加1。刚接触的人往往理解起来有点模糊。不妨利用书写形式来巧计:“++”在i前, 就让i里面的值先加后才使用该值, “++”在i后就先使用i里面的值后再加1。举个例子说明:

对于i++, 因为“++”在后, 所以先使用 (输出) i里面的值, 然后把i里面的值加1即为4;对于++j, 因为“++”在j之前, 所以要先把j里面值加1即为7, 后被使用 (输出) 。所以经这么分析例题的答案是:3, 7。而不管“++”是放在变量前还是放后对变量而言都加了1。因此上例中最终i的值为4、j的值为7。

第五, 关于指针, 作者在教学中也有些小小的体会。开始的时候学生对指针两个字有点别扭, 索性我叫他们看到“指针”两个字就用“地址”替换, “指针变量”即“地址变量”、“变量的指针”即“变量的地址”如此等等。一般变量与指针变量的区别在于:一般变量的空间装的是相应类型的数据, 而指针变量的空间装的是一般变量的空间地址;申请的时候指针变量比一般变量多了一个“*”。例如:

int a, *p;

其中, a是一般变量, 装的是是整型数据, 那么我们可以给a一个相应的值, 如a=3;而p在申请时带有一个“*”, 说明它是指针变量, 它应该装的是整型变量的地址, 如p=&a;在区分了一般变量和指针变量以后, 学生对学习指针的内容就有了一个良好的开始。

以上几点是作者的一些教学体会, 其实今天所说的只是站在一个过来人的角度, 来分析与解释学习C语言的过程中一些比较困难或可以借用技巧帮助理解的地方, 真正的学习应该结合一些实践来加强领会, 通过多上机练习来完善学习, 否则都只是纸上谈兵。

摘要:单片机作为最典型的嵌入式系统, 是校园里广大学生进行电子设计的核心选择, 而使用单片机就很有必要学习C语言来完成其软件编程, 在谈到开发速度、软件质量、结构严谨、程序坚固等方面, C语言的完美绝非汇编语言编程所可比拟的。因此, 教好学生学习C语言的基础知识非常重要。本文就C语言教学方面谈一下自己的经验。

关键词:C语言教学,数据类型,教学体会

参考文献

[1] 谭浩强.C程序设计[M].北京:清华大学出版社, 1999.

[2] Herbert Schild, 戴健鹏.C语言大全 (第二版) [M].北京:电子工业出版社, 1994.

[3] 谭浩强.C程序设计题解与上机指导[M].北京:清华大学出版社, 1992.

本文来自 99学术网(www.99xueshu.com),转载请保留网址和出处

上一篇:对普通高等学校开展民族传统体育的探索下一篇:奎因的逻辑方面的理论分析