我是 Pascal 的新手,为此我想知道如何用“case”来缩短它 你好! Soy nuevo con Pascal y por eso me gustaría saber cómo acortar esto, tal vez con “case”.
program Coordenadas;
var
x,z : integer;
begin
writeln('Ingresa la coordenada en X.');
readln(x);
writeln('Ingresa la coordenada en Z.');
readln(z);
if (x=0) and (z=0) then writeLn('La coordenada 0 0 es el centro del mundo.')
else
if abs(x)=abs(z) then
if x>0 then if z>0 then writeln(x,' ', z,' se ubica en el Sureste') else writeln(x,' ', z,' se ubica en el Noreste')
else if z>0 then writeln(x,' ', z,' se ubica en el Suroeste') else writeln(x,' ', z,' se ubica en el Noroeste')
else
if abs(x)>abs(z)
then
if x>0 then writeln(x,' ', z, ' se ubica en el Este.')
else writeln(x,' ', z, ' se ubica en el Oeste.')
else
if z>0 then writeln(x,' ', z, ' se ubica en el Sur.')
else writeln(x,' ', z, ' se ubica en el Norte.')
end.
我测试了它并且已经可以工作,但是我觉得它太重复了。 Lo probé y ya funciona, pero siento que es muy repetitivo.
[…]我想知道如何用“case”来缩短它[…]
Pascal – 由 ISO 标准 7185“标准 Pascal”和 10206“扩展 Pascal”定义 – 具有数据类型
integer
。
integer
值是 −maxInt‥+maxInt
范围内的整数值。
这样
case myIntegerExpression of
−maxInt‥+maxInt:
writeLn('Ya1k');
end;
将always打印
Ya1k
不管myIntegerExpression
的具体值(假设它已定义)。
在您的情况下,您可以编写多个不重叠的 case
标签,−maxInt‥0
来匹配非正 integer
值和 1‥maxInt
。
但是,这不一定会减少代码的长度,但它可能变得更可读。 请记住,你是为人类编写代码。 人类应该能够阅读并理解您的代码。 这是一个小问题,(几乎)可以忽略不计,机器、计算机也需要能够处理您的代码。
例程一般来说,您使用
来执行重复性任务。
在您的特定情况下,值得注意的是您没有使用 write
(最后没有
Ln
)。
您可以使用 write
打印通用前缀,并使用 writeLn
书写最终单词。
writeln('Ingresa la coordenada en X.');
readln(x);
writeln('Ingresa la coordenada en Z.');
readln(z);
/read
readLn
接受
多个变量。 您可以将两个提示合并为一个提示。
建议您的提示消息告诉用户所有详细信息。 特别是,您的提示应强调,只有
integer
值(无 real
值)有效,因为 离散坐标系不太常见(= 不太预期)。 再次强调,为人类编写程序。 用 Pascal 代替书写
if (x=0) and (z=0) then
(顺便说一句更简洁)
更惯用写起来if [x, z] = [0] then
至少数学家大量使用集合。 (但是请记住,Pascal 仅支持具有序数基类型的集合。)