浅谈C语言中的常量与变量
2014-04-29刘军
【摘要】在任何一种程序设计语言中,常量和变量是进行编写程序的基础之一。虽然有关程序设计语言的教材中对于常量和变量的概念都给出了明确的定义。但是,对于初学程序设计的绝大多数学生学习编程的瓶颈是:为什么要使用常量与变量?何种情况下使用他们?针对一个具体的题目,需要定义几个变量?
【关键词】常量 变量 内存地址 数据类型
【中图分类号】G642 【文献标识码】A 【文章编号】2095-3089(2014)04-0127-01
在任何一种程序设计语言中,常量和变量是进行编写程序的基础之一。一些我们认为学习中很容易理解的问题,对初学者而言,却经常感觉到很迷茫,拿到一个题目无从下手。刚开始有学生问这个问题的时候,我觉得这么简单的问题,有什么好多讲的呢。后来通过与大量学生的接触,发现在学生在初学编程时,都会存有这样的疑惑。有些同学随着以后的学习慢慢的也就懂了;还有一些同学,觉得好难啊,都不会用程序解决一个很简单的问题,从而在心理上对程序的学习产生了抵触情绪,进而使的很多学生在学习生活中,一提到程序就感觉“头大”了。所以,我希望本文对初学程序的学生有一些帮助。对于程序的初学者而言,为什么要定义变量?针对一个具体的题目而言,需要定义什么类型的变量?需要定义几个变量呢?要解决上述问题,我们首先要清楚地理解如下的几个概念:
1.内存
学习了计算机的基础知识后,我们知道:计算机在工作过程中,其用到的数据首先要被调入内存才能被CPU处理。而内存有三个最基本的属性,即内存地址、存储单元 和其存储数据。这就好比有一排抽屉,为了方便区分不同的抽屉,给每一个抽屉分配一个唯一的编号。尔后根据具体的编号来区分不同的抽屉,把抽屉的大小比作存储单元的大小,把抽屉里面存放的东西比作数据,把抽屉的编号比作内存地址(地址:存储器由若干个单元组成,每个单元都有一个唯一的编号,该编号称为地址)。
2.数据类型
在高级程序设计语言中引入了数据类型的概念,即把所有的数据加以分类。每一个数据(包括表达式)或每一个数据变量都属于其中确定的一类,称这一类数据为一个数据类型。 举例来说,人一看到20这个数据,则在头脑中首先形成一个基本认识:它是一个整数20,而看到20.0时,则是认为是小数;而用计算机解决问题时,它并不能分辨出一个数据是小数还是整数还是其他类型。所以在程序设计时首先必须要掌握的就是数据类型,即通过它告诉计算机这是一个什么样的数据。因此,数据类型是数据或数据变量类属的说明,它指示该数据或数据变量在什么范围内取值才有意义,它们在内存中占多大的存储空间,允许进行哪些运算等。根据数据的种类及编程需要,高级语言定义了一系列的数据类型。当然不同的高级语言所定义的数据类型也不尽相同:如C语言既提供了若干基本类型(整型、字符型、单精度型等),又有构造类型(结构体、共用体),还有作为C语言精华的指针类型。所以在编写程序时,需要通过数据类型告诉计算机需要申请一个多大的空间来存放什么类型的数据。
3.常量与变量的概念
系统中的内存地址,通常以十六进制数据表示,而十六进制地址方便計算机“记忆”及操作,不方便学习者的记忆和使用。为此在高级程序设计语言中提出了标识符的概念。十六进制地址和标识符是一一对应,同一个程序中不能有地址相同的两个存储单元,自然也就不能有相同名称的两个标识符。故编程时为了程序的可读性,标符的命名一般都遵循见名知义的原则。如想申请一个内存空间存放学生的年龄,一般取名为age或nl等。程序一旦编译,标识符就会分配到相应的存储单元,存储单元地址的十六进制与标识符之间就建立了映射关系。编程者用标识符编写程序,计算机用十六进制内存地址高速进行程序处理。
在程序的运行过程中有一些标志符的值会随着程序的执行发生变化,而有一些不会发生变化,这就是在编程时常说的变量和常量。其实,从字面上不难看出常量在程序运行过程中标识符的值不能改变的,而变量是指标识符的值会随着程序语句的不断执行会发生改变的。前面已经说了,储存地址、存储单元大小和存储单元内存放的数据是内存的三个最基本的属性,因此常量与变量当然也有三个最基本的属性,即其所分配到储存单元,该常(变)量占多大的存储空间及该地址所指的存储空间里面的数值。为便于区分,C语言中一般用大写来表示常量,用小写来表示变量。
4.简单的编程思路
那么在编写程序的过程中需要定义多少个常量和变量呢?这也是很多学生在初学程序时感到十分疑惑的地方。简单来说,一般都把已知条件定义为常量,未知条件和求解过程中用到的一些辅助量定义为变量。对于初学者而言,当看到一个具体的题目时,首先要分析题目中,哪些是已知条件,哪些是未知条件,哪些是解题过程中的辅助量。事实上,学生在初学程序时,很多学生都存在定义变量个数少于题目编程中实际应该定义的个数。在教学过程中总结了一下,发生这一现象的主要原因是:没有把题目求解过程中用到的辅助量定义出来。所以在初学程序时,掌握了基本概念后,接着应该是教给学生如何画出程序的流程图或者盒图,这一部分的内容要尽量的给出学生练习、总结的时间。建议在做教学日历的时候尽量的多出4个课时,以便于学生掌握程序流程图或盒图的画图技巧,然后再按照教材结构及知识的特点进行具体内容的学习。看到一个具体的题目,尽量让学生首先画出流程图或盒图,从而可以方便学生确定在编写程序的过程中用到的一些随条件变化的数值并将它们也要定义为变量;基础打牢了,学会编程也就成了水到渠成的事情了。一旦编程入门之后,为了程序编写的方便性与简洁性,我们通常会把比如圆周率π、自然对数的底数e等一些数学常数定义为常量,而有一些已知条件我们会直接在程序中使用。例:假设有一张足够大的纸,厚度为0.0001米,问对折多少次之后,厚度可以超过喜马拉雅山的高度 (8848.13米)。已知条件为纸的厚度和喜马拉雅山的高度,我们可以定义为常量:#define T 0.0001;#define H 8848.13;未知条件对折次数可定义为i,辅助量即每次对折后的高度定义为h。当对程序编写熟练之后,可以按照自己的编程习惯省略一些不必要的常量定义而直接使用数据本身。
学习程序并不难,难在找到正确的学习方法。在初学程序时,首先要对基本的概念有一个清晰的认识,接着学习用流程图或盒图来描述题目,最后,多阅读程序并能进行分析与改进,那么离自己独立的编写出程序也就不远了。总之,编程的编写是学习计算机相关学科的一个基础,也是在计算机方面有较深造诣的一个前提,希望本文能给刚刚学习编程的同学提供一点帮助。
参考文献:
[1]谭浩强.C语言程序设计.北京:清华大学出版社,2008年.
作者简介:
刘军(1979-),女,山东聊城人,讲师,硕士。