对于pl/0程序的编写,初学者可能会出现许多的错误,例如分号的错误添加抑或是遗漏,对于数据类型的错误理解,都可能导致运行出错。现在简单说一下题主所犯的错以及改正方法。
在pl/0程序中数据类型只有整型,用var声明;数据结构只有简变和常数;标识符的有效长度为10;过程调用中是没有参数的,并且最多能够嵌套三层;一层由begin和end标志,最后一个end要加“.”(非常重要)。这些规则都是在我们编写时要注意的,我就在实验中犯过if语句前一个end没有加“;”的错误。
下面是一个实例,用于比较n!与2^m次方的大小的pl/0程序:
var n,m,c,a,b;
procedure p;
begin
while n>0 do
begin
a:=n*a;
n:=n-1;
end;
end;
procedure q;
begin
while m#0 do
begin
b:=2*b;
m:=m-1;
end;
if a > b then
begin
c:=1;
end;
end;
begin
read(n);
read(m);
a:=1;
b:=1;
c:=0;
call p;call q;
write(a);
write(b);
write(c);
end.
代码运行方式如下:先读取输入的数字n和m,然后初始化一众变量,先后调用procedure p以及procedure q,分别求出n的阶乘 以及2的m次方,然后输出n的阶乘 以及2的m次方两个数字以及它们比较的结果,当前者大于后者时,输出数字1,另外所有情况输出数字0。