持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第46天,点击查看活动详情
- FOR与监视点使用,只能在FOR中使用监视点。如果为FOR命令索引变量建立监视点,则仅在对每个FOR命令参数进行初始求值时触发特定监视点操作。
ClassMethod For9()
{
s color(1) = "red"
s color(2) = "black"
s color(3) = "white"
s color(4) = "green"
zb *ID
s sum = 0
s ID = ""
for {
s ID =$o(color(ID))
q:(ID = "")
s sum = sum + ID
w "块语法:" _ color(ID),!
}
q "结束"
}
while命令
- WHILE expression,如果expression的计算结果为TRUE,则它将执行括号之间的代码块。只要expression的计算结果为TRUE,WHILE就可以重复执行。如果expression不为TRUE,则不执行括号内的代码块,并执行紧跟大括号的下一个命令。
WHILE condition {code}
- 必须小心避免WHILE无限循环。
ClassMethod While()
{
s x = 1
while x < 10 {
w x,!
s x = x + 1
}
q "循环结束"
}
- WHILE代码块可以嵌套,代码块内的GOTO命令可将执行定向到同一代码块内的标签;该标签可以在嵌套的代码块中。代码块可以将执行定向到循环外部的标签,从而终止循环。
ClassMethod While1()
{
s x = 1, y = 1
while x < 6 {
w !,"外部循环",!
s x = x + 1
label
w "外循环迭代 ", x - 1,!
while y < 4 {
w !," 内循环迭代 ", y,!
s y = y + 1
w " 返回到 "
goto label
w "此处永远不会被执行",!
}
w "内部循环完成",!
}
q "全部完成"
}
Do While命令
- DO WHILE执行代码,然后计算表达式。如果表达式的计算结果为True,则DO WHILE循环并重新执行代码。如果表达式不为true,则不重新执行代码,并执行Do While后面的下一个命令。
请注意,Do While始终以面向块的形式编写。要执行的代码放在do和While关键字之间,并用大括号括起来。
ClassMethod DoWhile()
{
s x=1
do {
w x,!
s x = x + 1
} while (x < 10)
q "循环结束"
}
- 循环多为数组,全局变量,进程私有变量
ClassMethod DoWhile1()
{
s color(1) = "red"
s color(2) = "black"
s color(3) = "white"
s color(4) = "green"
s ID = ""
do {
s ID = $o(color(ID))
q:(ID = "")
w color(ID),!
} while (ID '= "")
q "循环结束"
}
While、Do While和For之间的区别在于, While必须在执行循环之前测试表达式,但Do While必须在执行循环之后测试表达式,而For可以在循环内测试表达式。这意味着,如果代码块有两个部分,其中第二个部分的执行取决于表达式的求值,则for构造最合适;否则,选择取决于表达式求值应该在代码块之前还是之后。