循环命令

简介: 循环命令

IF中使用GOTO

  • 如果在IF代码块中使用GOTO,注意以下死循环。
ClassMethod IF5()
{
  s x = 1
Loop
  if x >= 1{
    w "无限循环",!
    s x = x + 1
    goto Loop
  } 
  w !,"结束"
}
复制代码

循环命令

For命令

FOR是面向块的命令。通常,它由一个计数器和一个用大括号括起来的可执行代码块组成。此代码块的执行次数由计数器确定,计数器在每个循环体的顶部进行测试。for命令不指定递增计数器。它可以是无参数的(无限循环直到退出),也可以指定一个表达式作为其参数(循环一次)。

FOR var=forparameter { code }
F var=forparameter { code }
FOR var=forparameter1,forparameter2,... { code }
F var=forparameter1,forparameter2,... { code }
复制代码
expr
start:increment
start:increment:end
复制代码
  • 不带参数的for无限执行循环代码块,直到由代码块内的命令退出。重复括号内的命令,直到遇到退出循环的Quit、Return或GOTO命令。
ClassMethod For(x)
{
  for { 
    w "x=", x,!
    s x = x - 1
    q:(x = 3)
  }
  q "结束"
}
复制代码
  • 错误也会中断for循环。此for循环由CATCH块捕获的被零除错误退出:
ClassMethod For1(x)
{
  try {
    for { 
      s y = 4 / x
      w "4/", x, "=", y,!
      s x = x - 1
    }
    w "FOR代码块之后的下一个命令"
  }
  catch exp {
    w !,"异常处理模块",!
    if 1 = exp.%IsA("%Exception.SystemException") {
      w "Name: ", exp.Name,!
      w "Location: ", exp.Location,!
      w "Code: ", exp.Code
    }else {
      WRITE "其他异常",! 
    }
  }
  ret "结束"
}
复制代码
  • 使用 FOR var=expr时,执行for循环的次数等于expr中逗号分隔值的次数。
ClassMethod For2()
{
  s val = 4
  for num = val {
    w num*3,! 
  }
  q "结束"
}
复制代码
  • for的参数设置为值列表的变量。
ClassMethod For3()
{
  for color = "red", "black", "white", "green" {
    w color,!
  }
  q "结束"
}
复制代码
  • 使用 FOR var=start:increment:end ,参数START、INCREMENT和END分别指定起始值、增量值和结束值。
  • 当第一次进入循环时,它会将起始值分配给var,并将var值与结束值进行比较。如果变量值小于结束值(如果是负增量值,则大于该值),则执行循环命令。然后,它使用增量值更新var值。(如果使用负增量,则var值会递减。)
  • 循环继续执行,直到var值的增量超过结束值(或者直到遇到QUIT、RETURN或GOTO)。为了防止var超过end,Caché取消变量赋值并结束循环执行。如果增量导致var值等于结束值,则Caché最后一次执行for循环,然后终止该循环。
ClassMethod For5()
{
  s str = "The darkness of the night is not black"
  s len = $length(str)
  for i = 1 : 1 : len - 1 {
    w i," ",$e(str, i),!
  }
  q "结束"
}
复制代码
  • 使用 FOR var=start:increment,在这种形式的for命令中,没有结束值;循环必须包含QUIT、RETURN或GOTO命令才能终止循环。
ClassMethod For6()
{
  for i(1) = 0 : 7 {
    q:$length(i(1))=3
    w i(1),! 
  }
}
复制代码
  • 使用 FOR 多值参数,依次执行多个参数循环体。
ClassMethod For7()
{
  for i = 1 : 1 : 10, 10 : 10 : 100, 100 : 100 : 1000 {
    w i,!
  }
}
复制代码
  • 点语法(不推荐,废弃结构),传统的FOR命令是面向行的。它执行的循环由在同一程序行中跟随它的命令组成。不使用花括号,并且行格式是固定的。
ClassMethod For8()
{
  s color(1) = "red"
  s color(2) = "black"
  s color(3) = "white"
  s color(4) = "green"
  s ID = ""
  f  s ID = $o(color(ID)) q:(ID = "")  d
  .w "点语法:" _ color(ID),!
  s ID = ""
  for {
    s ID =$o(color(ID))
    q:(ID = "")
    w "块语法:" _ color(ID),!
  }
  q "结束"
}
复制代码
  • 注意:经常犯错误的写法。
ClassMethod For4()
{
  s color(1) = "red"
  s color(2) = "black"
  s color(3) = "white"
  s color(4) = "green"
  s ID = ""
  f ID = $o(color(ID)) q:(ID = "")  d
  .w color(ID),!
  q "结束"
}


相关文章
|
7月前
|
Java 大数据 数据处理
获取到数据循环写文件
这段代码是一个Java方法,用于分批处理数据。它定义了初始值和每批处理的数量,然后通过`PageInfo`对象获取数据。如果总数小于1,则直接返回空列表。否则,循环处理数据,防止环境中的多次空跳过,并在处理完一批数据后更新页码。代码中还提到,这个过程可以用于减少大数据操作带来的风险。此外,配有一张动图,可能表示数据处理的过程。
50 1
|
7月前
|
Shell 开发工具
while do done, until do done(不定循环)
【1月更文挑战第7天】。
66 0
|
7月前
while循环和do while循环有什么区别
while循环和do while循环有什么区别
89 0
while循环和do while循环有什么区别?
while循环和do while循环有什么区别?
149 0
|
JavaScript 前端开发
For Of 循环
For Of 循环
65 0
|
JavaScript 前端开发
For/In 循环
For/In 循环
73 0
BAT中for循环如何执行多条命令
BAT中for循环如何执行多条命令
529 0
|
Python
Python 中的条件判断、循环以及循环的终止
Python 中的条件判断、循环以及循环的终止
190 0
Python 中的条件判断、循环以及循环的终止
|
Shell
shell for if 循环中判断条件来执行命令
备份所有 .pid 的文件为 .pid.backup
1086 0