2.3数据类型、常量、变量及说明方法数据类型不仅确定数据的表示和取值范围,而且还确定了它所能参加的各种运算。在Pascal语言中,无论常量还是变量都必须属于一个确定的数据类型。Pascal提供了丰富的数据类型,可以分为三大类:Pascal数据类型可以简单的分为:•(1)简单类型:分为标准类型(整型、实型、字符型、布尔型)和用户自定义类型(枚举型、子界型)。•(2)构造类型:包括数组类型、记录类型、集合类型、文件类型。•(3)指针类型:简单类型和构造类型都称为静态类型,他们在程序运行之前已经定义好了。指针类型是一种动态数据类型,它在程序运行时根据需要动态产生。•另外,把整型、字符型、布尔型、枚举型和子界型称为顺序类型,顺序类型的数据是有序的。2.3.1标准数据类型•1、整数类型整数类型包括正整数(+号可略)、负整数和零。例:168,+520,0,-1都是合法的整数。注意:1,024在会计学中是允许的,但在这里是非法的,应去掉“,”号。整数类型的标识符为integer。除了常用的integer(整型)外,TurboPascal还支持以下4种整数类型:整数类型名称类型标识符数据范围字节数短整型shortint-128~1271长整型longint-2147483648~21474836474字节型byte0~2551字型word0~655352Pascal语言规定,可以对整数类型的数据进行如下操作:•(1)算术运算算术运算符有+,-,*,div,mod,运算结果都为整数,其后3个运算符的优先级高于前两个。div:整除,可以求得两数相除后商的整数部分。mod:取余,可以求得两数相除后的余数。例如:•5div2=5mod2=•11div2=11mod2=•-16div5=-16mod5=TurboPascal对mod是这样解释的:AmodB=A-(AdivB)*B注意:mod运算结果的符号总是和被除数相同,而与模无关。-15mod6=-15mod-6=15mod-6=(2)关系运算•关系运算符有:=、、、、=、=。运算结果为布尔量:真(true)或假(false),他们是Pascal中的两个特殊常量。•例如:5=5,87结果都为true。•55,87结果都为false。2、实数类型•(1)日常表示法:小数点前后都应该有数字。•(2)科学表示法:就是采用指数形式的表示方法。例:6.1E3表示6.1*103,即6100;-6.1E-3表示-6.1*10-3,即-0.0061。称”6.1E3”中的“E3”为指数部分,“6.1”为尾数部分。注意指数部分不能为小数,尾数部分不能省略。例:1.8E1.1,E+7都是非法的。•一个实数在内存中占6个字节。2、实数类型•实数类型包括正实数、负实数和实数零。它的类型标识符为real。实数的表示方法有两种。•(1)日常表示法:就是我们平常使用的带小数点的表示方法。例:2.5,-1.6,0.0都是合法的。必须注意小数点前后都应该有数字,例:7.,.8都是非法的。一个整数可以当做实数使用,单反过来不行。Pascal语言规定,可以对实型数据进行如下操作:(1)算术运算运算符有+、-、*、/,运算结果为实数。/叫实数除,即使有一个数为整数,甚至两个数都是整数,系统自动将整数转换为实数后再运算,结果仍为实数。例:7/2=3.56/3=2.0(2)关系运算实数可以做关系运算,运算对象还可以有一个整数,但运算结果都是布尔类型。3、字符类型•字符类型指用单引号括起来的Pascal字符集中的任一个字符。•如‘A’,‘6’,‘:’分别表示字符A,字符6,冒号。•但要注意,‘7’与7是不同的,‘7’为数字字符,而7为整数,它们属于不同的数据类型。另外,对于单引号字符,因为已作为定界符号,所以它的表示规定为‘’‘’,而不是‘’‘。•一个字符在内存中占一个字节。字符类型的标识符为char,它是有序的。此外,由多个字符组成的字符串(例如:‘abcd’)的类型标识符为string。•Pascal语言规定,可以对字符数据类型进行关系运算。为了对大量的字符进行管理,不同的计算机系统采用不同的编码方法。ASCII码是一种常用的字符编码。•ASCII码使美国标准信息交换代码,每一个编码对应一个字符。•在Pascal字符集中,用字符序号(ASCII码)的大小来定义相应字符之间的大小关系。因此,所有的字符都可以进行比较。常用的是数字字符之间或字母之间的比较,比较结果是布尔类型。•如‘2’‘6’结果为true‘a’‘b’结果为false4、布尔类型•布尔类型数据只有两个:真和假,分别用标准常量true(真)和false(假)来表示。布尔类型的类型标识符为boolean,它是顺序类型。规定falsetrue,false的序号为0,true的序号为1。Pascal语言规定,可以对布尔类型数据进行如下操作:•(1)关系运算结果为布尔类型。如:truefalse结果为truetrue=false结果为false•(2)逻辑运算逻辑运算符有not(非)、and(与)、or(或),结果为布尔类型。(2)逻辑运算•not:表示对原值进行逻辑否定,假设x为布尔量,其值为false,则notx的值为true。好像电灯的开关钮,按一下开,再按一下关。•and:表示对两个逻辑量(如x,y)进行“与”运算,即xandy,只要x,y有一个为false,则运算结果也为false,好像串联电路的开关。•or:表示对两个逻辑量(如x,y)进行“或”运算,即xory,只要x,y有一个为true,则运算结果也为true,好像并联电路的开关。2.3.2常量•所谓常量,是指在程序执行过程中其值不能改变的量,他们可以是整型、实型、字符、字符串。如5,6.8,‘F’,‘gj’,1E6都是常量。•常量定义的一般形式:const常量标识符=常量;其中const是保留字。如constpi=3.14;t=true;Pascal对常量定义要求如下:①要放在程序说明部分。②必须遵循先定义后使用的原则。③不允许重复定义或一次定义多个常量。如:consta=1;a,b=10;c=1or2;是错误的,a重复定义,a,b不能同时被定义,C不能即表示1又表示2。2.3.3变量•变量指在程序执行过程中其值可以改变的数据。变量名是用户自定义的标识符,变量类型可以是标准类型,也可以是自定义类型,变量必须先说明再使用。•变量说明的一般形式为:var变量名表:类型标识符;其中变量名表是以逗号分隔的变量标识符。2.3.3变量•如vara,b:integer;x,y:real;ch:char;t:boolean;但下列说明是非法的。Vara,b=integer;ch:char;ch:boolean;a,b后边不能用=,ch不能重复定义。