基础编程与高阶应用——常量与变量
常量:
“常量”的广义概念是:‘不变化的量’(例如:在计算机程序运行时,不会被程序修改的量;数学函数中的某一个量,例如每一个具体的圆的半径、直径数值;物理学中的靠近地面的重力加速度;真空中的光速数值;不同的微粒的各自的质量)换言之,常量,在计算机技术方面虽然是为了硬件、软件、编程语言服务,但是它并不是专门为硬件、软件、编程语言而引入的概念。
根据常量所代表的不同数据类型,常量可分为数值型常量和字符型常量,数值型常量又分为整型常量,实型常量等,如:25、0为整型常量,6.8为实型常量,‘a’、‘b’为字符常量。数值型常量的表达形式与数学中的形式保持一致。字符型常量根据语言格式的要求需要有的用单引号,有的用双引号将字符信息括起来表示。常量一般从其字面形式即可判断。这种常量称为字面常量或直接常量。
变量:
变量来源于数学,是计算机语言中能储存计算结果或能表示值抽象概念。变量可以通过变量名访问。在指令式语言中,变量通常是可变的。
变量概述
变量在内存中的存储状态
由于变量让你能够把程序中准备使用的每一段数据都赋给一个简短、易于记忆的名字,因此它们十分有用。变量可以保存程序运行时用户输入的数据、特定运算的结果以及要在窗体上显示的一段数据等。简而言之,变量是用于跟踪几乎所有类型信息的简单工具。变量声明后没有赋值的话,编译器会自动提示并赋予默认值。
首先,我们必须给变量取一个合适的名字,就好像每个人都有自己的名字一样,否则就难以区分了。不同的计算机编程语言,对于变量的命名格式要求也不尽相同。变量的命名通常遵循以下规则:
(1)变量名通常必须以字母打头,名字中间只能由字母、数字和下划线“_”组成;
(2)变量名的长度一般不超过个字符;
()变量名在有效的范围内必须是唯一的。有效的范围就是引用变量可以被程序识别、使用的作用范围。例如,一个子程序,一个函数,一个过程,一个窗体等等。
(4)变量名不能是VB中的保留字(关键字)内容,可以把保留字嵌入变量名, 关键字是指计算机语言中的属性、事件、方法、过程、函数等系统内部的标识符信息。如已经定义的指令语句名称(if、endif、while、loop等)、函数名称(len、format、msgbox等)。非法格式的变量命名,像Print、Print$是非法的,而Myprint是合法的。 例如: strName1,intMax_Length,intLesson,strNo等是合法的变量名,而AB,allright,M, _Number等是非法的变量名。
命名注意事项
(1)变量名在有些计算机语言中是不区分大小写的(如ABC、aBc、abc等都是一样的)。在有些计算机语言中区分大小写。不同的语言有不同的规范、规则。
(2)定义和使用变量时,通常要把变量名定义为容易使用阅读和能够描述所含数据用处的名称,而不要使用一些难懂的缩写如A或B2等。例如:假定正在为水果铺编一个销售苹果的软件。我们需要两个变量来存储苹果的价格和销量。此时,可以定义两个名为Apple_Price和Apple_Sold的变量。每次运行程序时,用户就这两个变量提供具体值,这样看起来就非常直观。具体方法是:通过用一个或多个单词组成有意义的变量名来使变量意义明确。例如,变量名SalesTaxRate就比Tax或Rate的意义明确得多。
存活期
变量存在的时间称为存活期。对于函数、子程序中的变量,其存活期仅仅是该段程序运行的时间,程序运行结束后,变量随之消失。在执行过程时,局部变量是理想的临时存储空间。可以在不同函数或子程序中使用同名的局部变量,这是因为每个局部变量只被声明它的函数或子程序识别。
作用域
变量的作用域由声明它的位置决定。如果在函数中声明变量,则只有该函数中的代码可以访问或更改变量值,此时变量具有局部作用域并被称为函数变量。如果在函数之外声明变量,则该变量属于主程序中的变量,也称为全局变量。该变量可以被所有的函数和子程序所识别。
声明变量
变量在使用前,必须在代码程序中进行声明,即创建该变量。
在使用变量之前,大多数计算机语言通常首先需要声明变量。就是说,必须事先告诉编译器在程序中使用了哪些变量,及这些变量的数据类型以及变量的长度。这是因为在编译程序执行代码之前编译器需要知道如何给语句变量开辟存储区,这样可以优化程序的执行。
声明变量有两种方式分别是隐式声明、显式声明。
隐式声明:
变量可以不经声明直接使用,计算机系统给该变量赋予缺省的数据类型和数据值。通常是指系统中的系统变量,系统变量的名称不能作为定义变量的名称来使用。
显式声明:
即用声明语句创建变量。
变量范围
变量的范围确定了能够识别该变量存在的那部分代码。在一个子程序内部声明变量时,只有子程序内部的代码才能访问或改变那个变量的值;它有一个范围,对该子程序来说是局部的。但是,有时需要使用具有更大范围的变量,其值对于程序内的所有子程序都有效。这样的变量就是全局变量。在变量的使用中,充分考虑变量的使用范围,同时在声明该变量时,也要明确设定该变量的使用范围。
存储类型
我们在程序中会经常定义一些变量来保存和处理数据。从本质上看,变量代表了一段可操作的内存,也可以认为变量是内存的符号化表示。当程序中需要使用内存时,可以定义某种类型的变量。此时编译器根据变量的数据类型分配一定大小的内存空间。程序就可以通过变量名来访问对应的内存了。
如果说变量的数据类型决定了对应内存的大小,那么存储类型则影响着对应内存的使用方式。所谓使用方式,具体说就是在什么时间、程序的什么地方可以使用变量,即变量的生命周期和作用域。即变量保存在哪一类型的存储区间中。
先了解一些基本常识。
一、在程序运行时内存中有三个区域可以保存变量:静态存储区、栈(stack)和堆(heap)。
二、根据变量定义的位置可分为全局变量(定义在函数体外的变量)和局部变量(定义在函数体内的变量,包括形参)。
所有的全局变量和静态局部变量(定义时使用关键字static)都保存在静态存储区,其特点是:在编译时分配内存空间并进行初始化。在程序运行期间,变量一直存在,直到程序结束,变量对应的内存空间才被释放。
而所有的非静态局部变量(又称为自动变量)保存在栈(stack)中,其特点是:在变量所在的函数或模块被执行时动态创建,函数或模块执行完时,变量对应的内存空间被释放。换句话说,函数或模块每被执行一次,局部变量就会重新被分配空间。如果变量定义时没有初始化,那么变量中的值是随机数。
所有用动态内存分配的内存都存放在“堆”中,其特点是:一般通过指针来访问动态分配的内存。即可以手动释放动态内存,也可以在程序结束时由系统自动释放。
以上讨论的是变量的生命周期,下面来看作用域。作用域指的是变量的可见范围,即在变量的生命周期内,程序的哪些部分可以使用该变量。
全局变量的作用域从定义点开始一直到源文件的结束。
对于局部变量来说,无论是静态局部变量还是自动变量,作用域都仅限于定义该变量的函数或模块。
动态内存只要没有被释放就可以在程序的任何地方使用,前提是要知道动态内存的地址。
变量类型
变量分为全局变量和局部变量。也可以这样分类,自动变量和静态变量。前者是按变量作用范围来分的,而后者是按变量存储方式来分的。
如果按存储占用空间来分,包括:整型变量(代码为int),其中整型变量又包括长整型变量(代码为longint)和短整型变量(代码为shortint)。字符型变量(代码为char),浮点型变量(代码float)等。当然还有数组,结构体变量等。
有些计算机语言还有一个重要变量:指针变量。它存放的值是一个内存地址。
有些计算机语言中变量名是有大小写之分的,如SUN与sun就是两个不同的变量名。有些则不区分大小写,不同的计算机语言系统有不同的使用规则、规定。
Linkboy软件编程语言中的常量与变量
Linkboy软件编程语言是专门针对中小学生学习计算机而开发的模块化编程的计算机编程语言系统。是同学们学习计算机语言的入门级编程软件。所以在常量与变量的设计方面,并没有象代码编程那样复杂。或者说,在此部分内容方面,进行了一定的精减。
在Linkboy软件编程语言中,如果要使用相应的常量内容,可以象定义变量一样,将常量信息进行命名。然后直接使用命名后的变量即可。
变量中的数据类型只有整数类型。如果想要实现相关的小数计算操作,通常会先将小数放大后,再进行计算,得出整型数结果。在对该数据显示时,可以在相应的位置上加入小数点,以表现出小数的效果。本质是还是对整型数的计算过程。
可以说在常量与变量的命名上,Linkboy软件编程语言对其进行了一个通用性的合并设计。方便于我们学习和使用。也简化了,内容的复杂性。在变量的存储空间方面,主要有内存数据空间和非易失数据空间两部分空间区域。如果变量规划在内存数据空间中,则程序运行完成后,不会保存变理的数据信息。如果变量规划在非易失数据空间中,则程序运行完成后,变量数据信息会被保存下来。在一次上程序运行时,仍然可以被调取使用。