while命令

600 阅读1分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 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构造最合适;否则,选择取决于表达式求值应该在代码块之前还是之后。