转载自http://hi.baidu.com/liuzexin5847/item/6d7b004ef278cfeda4c0667b
1、PASCAL语言的字符表
是ASCII字符集,主要有:
⑴26个英文字母(不分大小写)
⑵十个数字符号
⑶特殊符号。如+-*/=><][:;.等
2、标识符
以字母开头的字母数字序列(大小写等效,可跟下划线_),用来标识常量、变量、程序、函数等。
自定义标识符时要注意遵循此规则。
3、标准标识符与保留字
标准标识符有40个,五类(false true maxint Boolean real integer char abs trunc read write)详见书P16。
保留字是Pascal语言中具有特定的含义的字符。在PASCAL7.0中书写保留字的时候,字符颜色会变为白色。
一共36个保留字:
(program function begin end procedure var const array if then else case for to do repeat until while and div in mod not or nil
4、常量和变量:
程序设计中经常要用到常量和变量,这些都必须先定义后才能使用。
PASCAL语言的常量与变量都必须在程序头部先加以说明,即说明常量、变量的的名称及数据类型。
PASCAL语言的数据类型很多,最常用的有以下几种:
INTEGER:取值范围 [-32768, 32767]。占用内存 2个字节( 16位)。
WORD:取值范围 [0, 65535]。占用内存 2个字节( 16位)。
BYTE:取值范围 [0, 255]。占用内存 1个字节( 8位)。
LONGINT:取值范围 [-2147483648, 2147483647]。占用内存 4个字节( 32位)。
SHORTINT:取值范围 [-128, 127]。占用内存 1个字节( 8位)。
特点:
REAL:取值范围 [2.9E-39, 1.7E+38]。占用内存 6个字节( 48位)。
实数的表示法有两种:
1、十进制表示法,如: -0.4576, 123.567, -234, 0
2、科学计数法,如: 1.234E-4, -3.546E12
表示 1.234乘 10的负 4次 .方; -3.546乘 10的 12次方。
特点:
CHAR:单字符型,即取 1个字符,如‘ A’, ‘ 1’。
STRING:字符串型,即多个字符,如‘ ABCD! 123’,‘ %¥ #DS12’。
如果一个常 /变量只要用到 1个字符,则可把它定义成 CHAR型;如果是多个字符,但不知确切多少个,则定义成 STRING型,如果知道确切有 N个字符,则定义成 STRING[N]型。字符串在 PASCAL中使用都是加上单引号。
特点:
BOOLEAN:布尔型即为逻辑型,取值为 TRUE、 FALSE, 即真、假。也有序,true 为1,false为0。
布尔型有三个运算符:and or not
常量:指程序运行过程中,其值不能改变的量。 在程序头部中说明,以 CONST引导。
分为四类:
⑴整型常量
⑵实型常量
⑶字符常量
⑷布尔型常量
格式:
const <常量标识符>=<常量>;
例:const pi:=3.14;
变量:是指在程序执行过程中,其值可以改变的量。 在程序头部中加以说明,以 VAR引导。
变量三要素:变量名、变量类型、变量值。
⑴变量名用一个合法的标识符来表示。
⑵变量在某一固定时刻是用来存放常量的,而常量是有类型的数据,因而变量也是有类型的。类型不能有两义性。
⑶变量值。在程序中由赋值语句来赋值。
var <变量标识符列表>:<类型>;
例:var a,b:integer; c,d:real;
5、表达式
由算术运算符( +,—, *, /)及数字、常量、变量、标准函数所组成的式子中心表达式。
如: 5+9; A*B-34*ABS( -34) /INT( B)
另外, PASCAL中有两个很有用的运算符, DIV:求商的整数值; MOD:求余数。如:
8 DIV 3 的值是 2, 10 DIV 3 的值是 3;
8 MOD 3的值是 2, 10 MOD 3的值是 1;
在 PASCAL的表达式中,不允许出现我们日常生活中的那种分式或根号等式子,我们必须按照 PASCAL的语法把它们改写成 PASCAL表达式。
Pascal语言中的运算符及其优先级
单目运算符 (最高优先级) @ 取变量或函数的地址(返回一个指针) not 逻辑取反或按位取反 乘除及按位运算符 * 相乘或集合交集 / 浮点相除 div 整数相除 mod 取模 (整数相除的余数) as 程序运行阶段类型转换 (RTTI运算符) and 逻辑或按位求和 shl 按位左移 shr 按位右移 加减运算符 + 相加、集合并集、字符串连接或指针增加一个偏移量 - 相减、集合差集或指针减少一个偏移量 or 逻辑或按位或运算 xor 逻辑或按位异或运算 关系及比较运算符(最低优先级) = 判断是否相等 <> 判断是否不相等 < 判断是否小于 > 判断是否大于 <= 判断是否小于或等于,或是否是一个集合的子集 >= 判断是否大于或等于,或是否是一个集合的父集 in 判断是否是集合成员 is 判断对象是否类型兼容 (又一个RTTI运算符)
具体优先顺序:
⑴括号内先算
⑵函数
⑶运算符优先顺序
⑷同级运算按从左到右的次序。
注意:
1、与大多数编程语言相反,Pascal语言中and和or运算符的优先级比关系运算符高。因此,如果你的代码为a < b and c < d,编译器首先会编译and运算符,由此导致编译出错。为此你应该把每个 < 表达式用小括号括起来: (a < b) and (c < d)。
2、 同一种运算符用于不同数据类型时它的作用不同。例如,运算符 + 可以计算两个数字的和、连接两个字符串、求两个集合的并集、甚至给PChar 指针加一个偏移量。然而,你不能象在C语言中那样将两个字符相加。
3、 另一个特殊的运算符是 div。在Pascal 中,你能用 / 计算两个数字(实数或整数)的商,而且你总能得到一个实型结果。如果计算两个整数的商并想要一个整型结果,那么就需要用 div 运算符。
这些要求希望大家记熟,这是我们编写 PASCAL程序的必要基础。
表达式的数据类型根据它的值来划分。(所以表达式分为算术表达式、字符表达式、布尔表达式)
6、标准函数的使用。
PASCAL语言提供数量非常大的标准函数供我们使用,这些函数有些可以直接调用,有些放在另外的单元( UNIT)中。 PASCAL也提供了大量的标准过程,和标准函数一样供用户直接或间接调用。
如果一个函数或过程不在 SYSTEM(即默认调用的单元)中,而在其它单元中话,即在程序头部的第一行正式行中加上 USES 单元名;如,如果要使用 CLRSCR(清屏过程,在 DOS单元中)的话,就必须在程序头部加上: USES DOS;
函数的调用:如: A: =ABS( -34),即把 -34的绝对值赋给变量 A;(注意:函数只能出现在表达式中,即赋值语句中)。此时: A的数据类型与括号中的参数 -34是一致的。函数的语法中都会说明,这个函数的参数的类型及这个函数的值(结果)的类型。
过程的调用:过程即命令,如: CLRACR; 程序运行结果是清屏。
常用标准函数与过程很多,这里只列出最常用的几个。
标准函数
函数名
语法
说明
Abs
Abs ( r:real/integer) :real/integer
返回参数 R的绝对值,类型与参数相同
Chr
chr ( i: integer): char
返回参数所对应的 ASCII码值,类型为 CHAR
Copy
Copy(s:string;n,m:integer):string
返回字串 S的第 N个字符开始的 M个字符
Cos
Cos(r:real):real
返回参数 R的余弦值
Exp
Exp(r:real):real
返回参数 R的以 e为底的幂
Int
Int(r:real):real
返回参数 R的整数部分,返回的值是实数类型
Length
Length(s:string):integer
返回字串 S的长度
Ln
Ln(r:real):real
返回参数 R的自然对数
odd
Odd(I:integer):boolean
判断参数 I是否奇数,如是,则返回 TRUE
ord
Ord(s:scalar):integer
返回任意有序量的序值
random
Random
返回 0至于间的任意一个小数(随机数)
round
Round(r:real):longint
返回参数 R的四舍五入取整值
sin
Sin(r:real):real
返回参数 R的正弦值
sqrt
sqrt(r:real):real
返回参数 R的平方根
sqr 返回参数 R的平方trunc
Trunc(r:real):integer
返回参数 R的整数部分,返回的值是整数类型
标准过程
过程名
语法
说明
Delay (CRT 单元 )
Delay(ms:word)
延迟发声 MS毫秒
Delete
Delete(s:string;n,m:integer)
把串 S中的第 N个字符开始的 M个字符删除
Exit
Exit
从当前执行的程序中退出
Gotoxy (CRT 单元 )
Gotoxy(x,y:integer)
把光标定位到第 X列 Y行处
halt
Halt
中断程序的运行
nosound
Nosound
关闭机器喇叭
Sound (CRT 单元 )
Sound(f:word)
让机器喇叭发出频率为 F的声音,直到 nosound
str
Str(I:integer;var s:string)
把数值 I转换为字符串 S
val
Val(s:string;var r:real;var c:word)
把字符串 S转换为数值 R,并返回错误代码 C