1. 常量:固定值,不可变数。
1) const
常量名 = 常量值(表达式);
2) resourcestring
常量名 = 字符串(常量);
2. 变量
1) 定义
Var 名字1,名字2,…名字n:类型;
2) 命名原则(参考)
变量名字 = 类型(缩写) + 作用域(简称) + 确切含义名称
3) 三种赋值格式
变量名:= 值;
变量名1: = 变量2;
变量名:= 过程或函数的调用;
3. 类型常量
1) 类型常量是全局变量并不是一个常量,它进行了预初始化值。
2) 定义
Const
名字:类型 = 值;
3) 种类
简单的类型常量
数组类型常量
记录类型常量
集合类型常量
指针类型常量
过程类型常量
4. 数据类型
简单类型(Simple) |
|
|
|
| 有序类型(Ordinal) |
|
|
|
| 整数(Integer) |
|
|
| 字符(Character) |
|
|
| 布尔(Boolean) |
|
|
| 枚举(Enumerated) |
|
|
| 子域(SubRange) |
|
| 实数(Real) |
|
|
结构类型(Structured) |
|
|
|
| 集合(Set) |
|
|
| 数组(Array) |
|
|
| 记录(Record) |
|
|
| 文件(File) |
|
|
| 类(Class) |
|
|
| 类指针(Class Reference) |
|
|
| 界面(Interface) |
|
|
字符串类型(String) |
|
|
|
指针类型(Pointer) |
|
|
|
过程类型(Procedural) |
|
|
|
可变类型(Variant) |
|
|
|
5. 用户自定义类型
子域类型
Type 名称 = 初值…终值;
枚举类型
Type 名称 = (值1,值2,值3…值N);
数组类型
Type 名称 = Array[下标定义]of类型名
Type 名称 = [下标定义1,下标定义2…下标定义N] of元素类型
或名称 = [下标定义1of…Array [下标定义N] of元素类型
集合类型
Type 名称 = set of 元素类型
指针类型
Type 名称 = ^结点类型
记录类型
Type 名称 = Record
域名1:类型;
域名1:类型;
……
域名N:类型;
end;
文件类型
Type 名称 = file of 元素类型
语句
简单语句
X := Y + Z; // assignment
Randomize; // procedure call
复合语句
begin
A := B;
C := A * 2;
end;
end之前的最后一条语句末尾分号不是必需的,你可以写成:
begin
A := B;
C := A * 2
end;
赋值语句
在Pascal 语言中赋值语句用冒号-等号操作符“:=”,
条件语句
If语句
对if-then型语句,仅当条件满足时,语句才执行;
if CheckBox1.Checked then
ShowMessage ('CheckBox1 is checked')
对if-then-else型,if语句在两条语句中选择一条执行
if CheckBox2.Checked then
ShowMessage ('CheckBox2 is checked')
else
ShowMessage ('CheckBox2 is NOT checked');
要注意的是,不能在第一句之后、else 关键词之前加分号,否则编译器将告知语法错误。实际上,if-then-else 语句是单纯的一条语句,因此不能在语句中间加分号。
if 语句可以很复杂,句子中的条件部分可以是一系列条件(用and、 or 、 not等布尔操作符联接起来),if语句又可以嵌套另一个if语句
begin
// compound if statement
if CheckBox1.Checked then
if CheckBox2.Checked then
ShowMessage ('CheckBox1 and 2 are checked')
else
ShowMessage ('Only CheckBox1 is checked')
else
ShowMessage (
'Checkbox1 is not checked, who cares for Checkbox2?')
end;
Case语句
case语句包括用来选值的表达式、可能值序列或一个取值范围。这些值应该是常量,并且它们必须唯一,而且应属于有序类型。
Case语句最后可以带一个else 语句,当没有一个标签与选择器的值一致时,执行else语句。下面是两个简单的例子:
case Number of
1: Text := 'One';
2: Text := 'Two';
3: Text := 'Three';
end;
case MyChar of
'+' : Text := 'Plus sign';
'-' : Text := 'Minus sign';
'*', '/': Text := 'Multiplication or division';
'0'..'9': Text := 'Number';
'a'..'z': Text := 'Lowercase character';
'A'..'Z': Text := 'Uppercase character';
else
Text := 'Unknown character';
end;
Pascal语言中的循环
其它编程语言中使用的循环语句,Pascal语言中都有,它们包括 for、 while 和 repeat 语句。如果你用过其他编程语言,你会发现Pascal中的循环语句没什么特别的,因此这里我只作简要的说明。
For循环
Pascal 中的for循环严格地建立在计数器基础上,循环每执行一次,计数器不是增加一个值就是减小一个值。下面是一个for语句的简例,用来将前十个数加起来:
var
K, I: Integer;
begin
K := 0;
for I := 1 to 10 do
K := K + I;
同样的for语句可以用正好相反的计数器来写:
var
K, I: Integer;
begin
K := 0;
for I := 10 downto 1 do
K := K + I;
Pascal 中的for循环语句其灵活性比其他语言小(它不能指定1之外的步长),不过简单也容易理解。如果需判断的条件比较复杂,或想自定义计数器,你可以用while语句或 repeat 语句,而不是for循环语句。
注意:for循环计数器不必非是数字,它可以是任何有序类型的值,例如一个字符或一个枚举类型值。
while语句和repeat语句
while-do 循环语句和 repeat-until 语句的不同点在于repeat 循环语句的代码至少要执行一次。从下面的简例很容易理解这一点
:
while (I <= 100) and (J <= 100) do
begin
// use I and J to compute something...
I := I + 1;
J := J + 1;
end;
repeat
// use I and J to compute something...
I := I + 1;
J := J + 1;
until (I > 100) or (J > 100);
从上可见即使 I 或 J 的初始值大于100,repeat-until循环中的代码也仍会执行一次。
注意:两种循环另一个关键的不同点是,repeat-until 循环的条件是反向的条件,只要不满足这个条件,循环就执行;当条件满足时,循环终止。这正好与while-do 循环相反,while-do 循环当条件是真值时才执行。为此,我不得不在上面代码中用反向条件来获得相同的结果。
注意:用 Break 和 Continue 系统过程可以改变循环执行的标准流程。Break 中断循环;Continue直接跳至循环测试句,或使计数器增加一个步长,然后继续循环(除非条件为空或计数器达到最大值)。还有两个系统过程 Exit 和 Halt,让你立即从函数或过程中返回,或者终止程序。
With语句
with BirthDay do
begin
Year := 1995;
Month := 2;
Day := 14;
end;