【问题标题】:confused about Pascal syntax对 Pascal 语法感到困惑
【发布时间】:2019-10-22 03:08:55
【问题描述】:

我遇到了这段帕斯卡代码。我很好奇这不会无休止地重复。

repeat
  if xs>(torgx+xlim)
    then begin
      x:=xlim;
      BREAK;
    end;

  if xs<(torgx-xlim)
    then begin
      x:=0-xlim;
      BREAK;
    end;

  x:=xs-torgx; 
  BREAK;
until 0<>0; 

我对零如何大于或小于零感到困惑。

【问题讨论】:

  • “break”实际上不会跳出重复直到循环吗?所以我读了它,因为作者想要一个无限循环,有 3 种简单的退出方法。但是自从我写任何帕斯卡以来已经有几十年了......
  • 与写“until false;”类似,有时在保证从内部退出循环时使用,例如使用break。这个在到达直到之前退出,为此使用任何循环都没有意义。

标签: pascal


【解决方案1】:

一直持续到0 &lt;&gt; 0 的循环应该是无限的。 但是在循环内部有一些条件会破坏循环,因此使用关键字break

事实上,repeat..until 循环只会运行一次。进行比较,如果一个值大于或小于另一个条件,它将跳出循环。如果这些条件都不满足,无论如何它都会中断。

【讨论】:

  • 无限循环并不少见,但它们通常在循环内有转义条件。该规则的例外情况可以在嵌入式环境的主循环中找到,其中循环在通电的整个生命周期中持续存在。在此处介绍的情况下,根本不需要循环。
  • 它看起来像是为了避免使用 goto 而拼凑起来的。有些东西比 goto 更丑:-)
猜你喜欢
  • 2023-03-17
  • 1970-01-01
  • 1970-01-01
  • 2019-08-26
  • 1970-01-01
  • 1970-01-01
  • 2016-12-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多