摘要:由于C语言的知识点很零碎,初学者存在着较大的困难,笔者从教学的实践出发,给出学习C语言的方法,帮助初学者解决学习中的一些问题,寻找到适合自己的学习途径。
关键词:C语言;程序;学习
中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)25-1497-03
Discussion about C Language Learning
YING Shi-yong
(Yancheng Textile Vocational and Technical College, Yancheng 224005, China)
Abstract: In regard to fragmentary knowledge of C language, the beginner have difficulty in learning it. The author puts forward some methods of studying C language from the teaching practice. It helps the beginner to solve some problems in the process of studying and seek for study methods that suit themselves.
Key words: C language; procedures; learning
1 问题的提出
随着计算机技术的普及,学习语言程序设计的人也越来越多,尤其是学习C语言的人更是多。但是不少人对计算机语言的学习比较头疼,感到力不从心。平心而论,对于初学者而言,这属于正常现象。请看下面用C语言编写的一道程序:
#include "stdio.h"
#definePI 3.1415
main()
{ float r,area;
printf("%please input the value of r:");
scanf("%f",&r);
if(r>0) s=PI*r*r;
else { if(area==0) return(0);
ease return(-1); }
printf("area=%f",area); }
这个程序的功能是通过键盘输入一个实型数,经过程序的运行后,在屏幕上显示以这个数作为半径的圆的面积。这虽然是一个比较简单的程序,却包含了C语言的很多重要的知识点。因此,对知识点的学习就显得很重要了。
2 C语言的特点
每一种语言都有自己的特点,C也不例外。它的特点如下:
2.1 语言简单,使用方便
它采用类似自然语言的语法来书写程序代码。所谓自然语言就是接近于人思维习惯的语言。用C语言编写程序的过程往往就是反映了编程者思考问题的过程。
2.2 运算符丰富
C语言总共有34种运算符号。从而使得C的运算类型很丰富,表达式类型多样化,灵活使用各种运算可以实现其他高级语言中很难实现的运算。
2.3 数据结构丰富
C本身数据类型多,如整型、单精度型、双精度型、字符型、数组型、指针型、结构体型、共同体型等,并且能实现各种复杂的链表、树、栈的运算。
2.4 具有结构化的控制语句
常用的有if……else语句、while语句、do……while语句、switch语句、for语句等。用函数作为程序模块以实现程序的模块化。
2.5 移植性好
“基本上不作修改就能用语各种型号的计算机和各种操作系统。”[1]
3 C语言入门要点
3.1 注意C语言的书写
比起经典的教学语言PASCAL来讲,C语言的书写是相对比较随便,而且具有很灵活性。但是,从易读性的角度出发还是要遵循一些规则。往往有条有理的程序在视觉上有一种美的享受。如果书写的程序没有一定的规律可寻,语句没有层次感,读者就会没有耐心去读了。书写结构就如同框架、基本轮廓。养成良好的书写习惯,对于培养严谨的思维很有帮助。在书写时要尤其要注意以下几点:
(1)一行中最好是以一个语句为佳。虽然一行中可以书写很多的语句,但在读的时候很烦琐,而且在调试程序时也不容易发现错误;
(2){}的配对。在书写时尤其要注意配对,对于要配对的{}尽量书写在同一列中。
3.2 掌握C语言的结构
C语言的程序从程序结构上看主要有顺序结构、选择结构、循环结构。程序的结构也就是程序的骨架和轮廓,对程序的执行过程有着很大的影响。
3.2.1 顺序结构
顾名思义,就是程序顺序地从第一个操作开始,一直执行到最后一个操作[2]。流程图如图a。
3.2.2 条件选择结构
例如:“如果明天下雨,我就不去看电影;如果不下雨,我就在家看电视。”我“去不去看电影”是由“天下不下雨”这个条件决定的,同时,“天下不下雨”这个条件决定了我有两中选择:“看电影”还是“在家看电视”。这就是条件选择的一个模型。
对于程序设计语言来讲,选择结构是一种很重要的结构。就文章开头的这个例程序,里面就是用了条件选择结构。首先判断r是否大于0,因为半径是负数就没有意义,所以它不可能是个负数。当半径为0是就表示是一个点圆,面积自然就是0了。
下面来看看程序中这种结构的程序执行过程:
首先判定条件是否成立,如果成立就说这个条件是真,程序就执行条件问真的子句,如果条件不成立就是说这个条件是假,程序就跳转执行它下面的条件为假的子句。
用流程图来表示,如图b。
对于这个流程图用语言可以这样描述:
if (P成立) A
else B
如果语句A或者是语句B中也是一个条件选择结构结果又会怎么样?用语言就可以这样描述了:
if(条件P1){ if(条件P2)语句A;
else语句B;}
else{ if(条件P3)语句C;
else语句D;}
这就是条件结构的嵌套。注意嵌套在C中是很重要的一种结构,不仅是可以在条件选择之间有嵌套,还可以和下面的要提到的重复(循环)之间构成嵌套。
3.2.3 循环结构
所谓循环结构就是:有一条或者是几条语句在重复执行,直到它不满足某种条件为止。典型循环结构有:当型循环和直到型循环。它们的代表语句分别是:while语句和do…while语句。当型结构的流程图如图c。
语句的执行过程就是:首先判定条件是否为真,当条件是真时,就重复执行语句,直到条件为假为止。特殊情况,条件永远为真时,就会变成死循环。
3.3 注重C语言的零碎知识点
零碎的知识点就是血肉,C语言本身的特点就是知识点很零碎,不太容易做到面面俱到,但是我们应力求不要放过每一个知识点。要在细节上多花工夫。
例如:
(1)printf函数和scanf函数。这两个函数的格式比较复杂,不同的格式要求就会有不同的输出形式。它们都是C的库函数。在需要使用标准I/O库中的函数时,就要包含#include "stdio.h"这个宏定义。
(2)编译预处理。C的编译系统对程序进行通常的编译之前,先对程序中的特殊命令进行预处理。特殊命令有:宏定义、文件包含、条件编译。编译预处理也是C语言中常用的写程序的方法。
(3)数据构造方式可以分为基本类型的数据和派生类型的数据。
(4)算术表达式、关系表达式和逻辑表达式。例如:x+y、x>y和x&&y 分别是是算术表达式、关系表达式和逻辑表达式。算术表达式的结果是根据x,y的取值不同而不同,而关系表达式和逻辑表达式的结果只有两个:1、0。另外,还要注意表达式的优先级。
3.4 要注重上机操作练习
C也是一个操作性很强的语言。编写好的程序必须要通过调试。在调试程序的过程中可以学习到很多东西。因为机器是很“无私的”,会无情地指出操作中的错误。只要有错就不能通过编译,程序就无法运行下去。上机操作的主要目的就是要通过调试程序来验证你编写的程序。程序调试是一项很细致的工作,是需要下工夫、积累经验的过程。上机调试程序不仅仅是 “验证程序的正确性”,而更重要的是“掌握调试方法和技巧”。因此上机过程中要注意经验的积累。
4 C语言提高关键
学好、用好C语言光靠入门知识还好似不够的,必须学习好它的提高部分,也是C的精华部分:数组、函数和指针。
4.1 数组
数组是一组类型相同的数据的有序集合。它是一种简单实用的数据结构。数组是用一个具有特定意义的名字代表顺序排列的一组数,顺序号就是下标变量的值。[3]在学习数组时,应该重点掌握:一维数组、二维数组和字符数组的定义、初始化和引用。尤其是基本的概念。如:int a[10]和a[8]的区别,二维数组的存放形式等。
4.2 函数
函数是实现语言模块化结构的重要体现。在设计程序的过程中,经常会在不同的程序段中出现有相同或相似功能的小块程序。如果在每个不同的程序段中都反复出现这样的小块程序,那么对整个大程序来讲它的可读性会降低,同时也会给设计者和读者带来不必要的麻烦。这就好比建造一座大楼,我们主要要做的工作是结构的设计,对于门窗、水泥和钢材等施工材料,直接可以从厂家购买使用即可,而没有必要再专门的成立门窗生产厂、水泥生产厂和钢材生产厂来生产这些施工材料。因此,我们就可以将反复出现的小块程序组成在一起形成一个模块,然后其他的函数就可以通过语句直接调用这些模块即可,这是函数的主要思想。
想要学好函数还得在这些方面下工夫:函数的定义、函数的参数、函数的值、局部变量和全局变量的一些基本概念;同时对于函数的调用(嵌套调用、递归调用等)过程要特别注意,一定要理清调用的关系及参数的正确传递。
要学好函数。善于利用函数减少重复编写程序代码的工作量。
4.3 指针
指针部分是C语言精华中的精华,主要是因为指针的应用可以使程序更加简洁、紧凑和高效。指针使用的好处是显而易见的,但是要学好用好它却不是很容易的,学好指针的关键是要深入理解基本的概念,如指针、变量的指针、指针变量等;另外还要注意与前面的知识相联系,如指针和数
5 结束语
C语言的应用很广,著名的UNIX操作系统就是用C语言来写的。现在的C++也是在C语言的基础上发展起来的。本文粗浅地谈了C语言的学习,由于篇幅所限,只是提供了学习的方法和途径。所以有兴趣的初学者应在入门之后反复练习,悉心揣摩,由浅入深,循序渐进,就一定能熟练地掌握和运用好C语言。
参考文献:
[1] 谭浩强. C程序设计[M]. 北京:清华大学出版社,1997.
[2] 张福炎, 孙志挥. 大学计算机信息技术教程[M]. 南京:南京大学出版社,2007.
[3] 胡橘, 刘忠. 浅析C语言的学习[J]. 中国西部科技, 2006,29:33-34.