以下 Pascal 示例是在一本专门介绍编程基础知识的书中给出的。函数ReadLongint应该检查输入是否以 char 类型编码为 0-9。然后该函数根据检查结果返回真或假,以及用于计算的变量,通过运算符ord()呈现为整数。作为一个新手,我很难弄清楚这段代码是如何工作的。但对我来说,更大的谜团是第 9 行的必要性。
'repeat
read(c);
position := position + 1;
until (c <> #32) and (c <> #10);'
我可以看到这是一个循环,如果您输入 Space 或 Enter,它会自行重复。但是,我检查了没有这些行的程序,用简单的read(c);代替它。,并且该程序似乎运行良好。有人可以解释一下这条线在示例中的作用吗?
这是完整的程序:
function ReadLongint(var check: longint): boolean;
var
c: char;
number: longint;
position: integer;
begin
number := 0;
position := 0;
repeat
read(c);
position := position + 1;
until (c <> #32) and (c <> #10);
while (c <> #32) and (c <> #10) do
begin
if (c < '0') or (c > '9') then
begin
writeln('Unexpected ''', c, ''' in position: ', position);
readln;
ReadLongint := false;
exit
end;
number := number * 10 + ord(c) - ord('0');
read(c);
position := position + 1
end;
check := number;
ReadLongint := true
end;
var
x, y: longint;
ok: boolean;
begin
repeat
write('Please type the first number: ');
ok := ReadLongint(x)
until ok = true;
repeat
write('Please type the second number: ');
ok := ReadLongint(y)
until ok = true;
writeln(x, ' times ', y, ' is ', x * y)
end.