文章链接:https://codemouse.online/archives/2020-03-04-153117
标识符
- 注意:不可以使用program、begin、end、const、var、read、write、if、then、else这些关键字作为名字
常量
-
格式:const 常量名=表达式;
const pi = 3.14;st = ‘t’;
变量
-
格式:var 变量名:变量类型;
var i,j:integer;
-
变量类型
- 整型(integer)
- 实型(real)
- 字符型(char)
- 布尔型(boolean)
一维数组
-
var 变量名:array[1…想要的长度] of 变量类型;
var stu:array[1…5] of integer;
多维数组
- 例子:
type
MonthTemps = array [1..24, 1..31] of Integer;
YearTemps = array [1..24, 1..31, Jan..Dec] of Integer;
运算符
-
算术运算符
+、-、*、/、mod、div
-
关系运算符
>、>=、<、<=、=、<>
-
逻辑运算符
not、and、or
声明语句
- 常量声明
格式:const 常量名=表达式
- 类型声明
格式:type 类型名= 类型定义
- 变量声明
格式:var 变量列表:类型
- 赋值语句
格式:标识符:=表达式
- read语句
read(变量列表)
-
write语句
write(输出列表)
分支语句
- 格式
If 条件表达式 then
语句1
[else
语句2 ;]
case 表达式 of
值表1:语句1;
值表2:语句2;
……
end;
注意:如果if下只有一条语句,不需要加分号,else下的语句一定要加分号
例:
if x>0 then
y :=1
else
y:= 0;
case number of
0:today:=sun;
1:today:=mon;
2:today:=tues;
3:today:=wed,
4:today:=thu;
5:today:=fir;
6:today:=sat;
end;
循环语句
- 格式
1:for循环
for 循环变量:= 循环初值
to | downto 循环终值 do
循环体;
2:while循环
while 条件表达式 do
循环体
3:repeat循环
repeat
循环体;
until 条件表达式
- 例:
1:for循环
for i:= 1 to 10 do
data[i]:= 1;
2:while循环
i:=0; sum :=0;
while i<100 do
begin
sum:= sum+i;
i:= i+1;
end;
3:repeat循环
procedure NumString(n:integer, var s:array[1..10] of char);
var v,j:integer;
begin
v:=abs(n);
j:=2;
repeat
s[j]:= chr(v mod 10 + ord(‘0’)) ;
v:= v div 10;
j:=j+1;
until v = 0;
if n<0 then s[1]:=‘-’
else s[1]:=‘ ‘
end;
过程
- 位置:在变量声明之后,主程序之前。
- 要求:实参的个数和类型要与形参匹配
- 格式:
procedure 过程名(形式参数表);
常量定义;
类型定义;
变量定义;
过程或函数定义
begin
过程语句体;
end;
- 例:
procedure NumString(n:integer, var s:array[1..10] of char);
var v,j:integer;
begin
v:=abs(n);
j:=2;
repeat
s[j]:= chr(v mod 10 + ord(‘0’)) ;
v:= v div 10;
j:=j+1;
until v = 0;
if n<0 then s[1]:=‘-’
else s[1]:=‘ ‘
end;
-
调用
…
NumString(-10, str);
…
函数
- 位置:在变量声明之后,主程序之前。
- 要求:实参的个数和类型要与形参匹配
- 格式:
function 函数名(形式参数表):类型;
常量定义;
类型定义;
变量定义;
过程或函数定义
begin
函数语句体;
end;
- 例:
function max(a,b:integer):real;
var m:integer;
begin
m:=a;
if(b>a) then m:=b;
max:= m;
end;
-
调用
…
x:=max(x,y);
…
枚举
-
类型定义
type day=(sun,mon,tues,wed,thu,fri,sta);
-
变量定义
var payday,today,firstday: day;
-
例:
program todaytomorrow(input,output);
type
day=(sun,mon,tues,wed,thu,fri,sat);
var
today,tomorrow:day;
number:integer;
begin
read(number);
case number of
0:today:=sun;
1:today:=mon;
2:today:=tues;
3:today:=wed,
4:today:=thu;
5:today:=fir;
6:today:=sat;
end;
if today = sat
then tomorrow =sun
else tomorrow = succ(day)
end.
子界类型
-
类型定义
子界类型定义了某种类型的取值范围 ,这种类型必须是有序类型(如整型、字符型)
-
说明
-
定义子界类型时,你不需要指定基类的名字,而只需提供该类型的两个常数。
-
所用基类必须是有序类型,定义结果将是另一种有序类型。
-
赋给子界类型变量的值必须是子界定义范围内的值 。
-
-
例子:
type
Ten = 1..10;
OverHundred = 100..1000;
Uppercase = 'A'..'Z';
记录(结构体)
- 概念
描述统一事物的不同属性
- 定义格式
type 名字 = record
属性1: 类型;
属性2: 类型;
属性3: 类型;
...
...
end;
- 例子:
type
Student = record
name:string;
age: integer;
sex: integer;
end;
var
p:Student;
p.name := 'codemouse';
p.age := 18;
p.sex := 1;
指针
-
概念
指针是存放指定类型(或未定义类型)变量内存地址的变量
-
类型定义
type PointerToInt = ^Integer;
-
变量定义
var
P: ^Integer;
X: Integer;
-
使用
指向某地址: P := @X; X := 10;
修改地址的值: P^ := 20;
-
释放与申请
var P: ^Integer; begin New (P); P^ := 20; ShowMessage (IntToStr (P^)); Dispose (P); end;