数据是指计算机能够识别和处理的数字、字符及符号。在Pascal语言中,无论常量还是变量都必须属于一个确定的数据类型,数据类型不仅确定数据的形式和取值范围,而且还确定了它所能参加的各种运算。
Pascal语言提供了丰富的数据类型,这些数据类型可以分为三大类:
1、简单类型:分为标准类型(整型、实型、字符型和布尔型)和用户自定义类型(枚举型和子界型)
2、构造类型:包括数组类型、记录类型、集合类型和文件类型
3、指针类型:简单类型和构造类型都称为静态类型,它们在程序运行之前已经定义好了;指针类型是一种动态数据类型,它在程序运行时根据需要动态地产生。
整型、字符型、布尔型、枚举型和子界型称为顺序类型,所谓顺序类型是指在该类型的任意两个相邻常量中不可能插入第三个量介于这两个量之间,顺序类型的数据是用序的。
标准数据类型:
1、整数类型
整数类型包括正整数、负整数和零。
整数由正负号和数字组成,“+”号可以省略。例如:25,0,-38,+100都是合法的整数,而8.7(含小数点)、5a(含字母a)都是非法的整数。
FreePascal支持以下7种整数类型
名 称 占字节数 类型标识符 数据范围
短整型 1 shortint -128..127
整 型 2 integer -32768..32767
长整型 4 longint -2147483648..2147483647
字节型 1 byte 0..255
字 型 2 word 0..65535
整数类型 8 int64 -9 223 372 036 854 775 808..9 223 372 036 854 775 807
无符号整数 8 qword 0..18 446 744 073 709 551 615
注意:int64/qword不是顺序类型,不能用于for循环的循环变量。
2、实数类型
实数类型包括正实数、负实数和实数零。
实数的表示方法有两种:
(1)、日常表示法:就是我们平常使用的带小数点的表示方法。例如:2.5,-1.6,0.0都是合法的。必须注意小数点前后都应该有数字,例如:7.,.8都是非法的。一个整数可以当做实数使用,但反过来不行。
(2)、科学表示法:就是采用指数形式的表示方法。例如:6.1E3表示6.1*1000,即6100;-6.1E-3表示-6.1*0.001,即-0.0061。称6.1E3中的E3为指数部分,6.1为尾数部分。注意指数部分不能为小数,尾数部分不能省略,例如:1.8E1.1,E+7都是非法的。
我们需要了解以下3种实数类型:
single类型,数据范围是3.4E38,占4个字节,8位有效数字
real类型,数据范围是1.7E308,占8个字节,16位有效数字
double类型,数据范围是1.7E308,占8个字节,16位有效数字
extended类型,数据范围是1.1E4932,占10个字节,20位有效数字
3、字符类型
字符类型是指用单引号括起来的Pascal字符集中的任意一个字符。如:'A','6',':'分别表示字符A,字符6,冒号。
需注意,'7'与7是不同的,'7'为数字字符,而7为整数,它们属于不同的数据类型。对于单引号字符,因为已作为定界符号,所以它的表示规定为'''',而不是'''。
一个字符在内存中占一个字节,字符类型的标识符为char,而由多个字符组成的字符串(例如:'abcd')的类型标识符为string。
人们操作计算机时,经常会接触到字符,比如:英文字符、数字运算符号等。为了对大量的字符进行管理,不同的计算机系统采用不同的编码方法。ASCII码是一种常用的字符编码。ASCII码是美国标准信息交换代码,每一个编码对应一个字符。ASCII码由8个二进制位组成,通常用右边7位表示字符,第8位用于检验错误或空闲不用。在ASCII码表中,按每个字符在码表中的位置,将其编为0-127,称为对应字符的序号。在ASCII码表中,数字0的ASCII码是48,数字1的ASCII码是49,依此顺序类推,数字9的ASCII码是57。英文大写字母A-Z的码分布在65-90,英文小写字母a-z的ASCII码分布在97-122。例如:数字5的ASCII码是53,字符C的ASCII码是67,ASCII码是84代表字符T,ASCII码107代表字符K。
在Pascal字符集中,用字符序号(ASCII码)的大小来定义相应字符之间的大小关系。因此所有的字符都可以进行比较。常用的是数字字符之间或字母之间的比较,比较结果是布尔类型。例如:'2'<'6'结果为true,'a'>'b'结果为false。
4、布尔类型
布尔类型数据只有两个:真和假,分别用标准常量true(真)和false(假)来表示,false的序号为0,true的序号为1;布尔类型的类型标识符为boolean。