条件语句和即将介绍的循环语句都属于结构化程序语句。条件语句使程序根据不同的条件执行不同的操作,而循环语句用于重复执行某些操作。
条件语句的基本格式为:
if 条件1 then
操作1
else
操作2
end if
authorware在执行条件语句时,首先检查“条件1”,当“条件1”成立(其值为true)时,就执行“操作1”,否则执行“操作2”。如果不存在操作2,则条件语句可以写为:
if 条件1 then 操作1
即在满足“条件1”的情况下执行操作1,否则什么也不做,这是条件语句最简单的格式。条件语句也可以嵌套使用,用以对更为复杂的情况进行判断,其格式为:
if 条件1 then
操作1
else if 条件2 then
操作2
else if 条件3 then
……
end if
或者
if 条件1 then
操作1
else
if 条件2 then
操作2
else
if 条件3 then
……
end if
end if
end if
两种格式之间的区别主要是else 和后续的if语句是否处于同一行。如果两者不在同一行,则需要为每个嵌套的if语句准备一个相匹配的end if。
authorware在执行上述语句时,首先检查“条件1”,当“条件1”成立时,就执行“操作1”,否则检查“条件2”,当“条件2”成立时,就执行“操作2”,否则……依次类推,直至执行到最内层的条件语句,如果始终没有成立的条件,则执行最内层条件语句的“else”后的操作或结束条件语句。
系统函数test(condition, true expression, false expression)也能够起到条件语句的作用。
循环语句共有三种类型:repeat with,repeat with in,repeat while,下面分别对这三种类型进行介绍。
该循环类型用于将同样的操作执行指定次数,其使用格式为:
repeat with 计数变量:= 起始值 [down] to 结束值
操作
end repeat
执行次数由起始值和结束值限定,计数变量用于跟踪当前循环执行了多少次。例如以下语句:
myvariable:=0
repeat with times:=1 to 10
myvariable:= myvariable+1
end repeat
其执行结果为myvariable的值增加到10,每执行一次循环,变量times的值就自动加1,直到times>10成立时循环自动结束。如果将循环计数方式设置为由后向前,例如:
myvariable:=0
repeat with times:=10 down to 1
myvariable:= myvariable+1
end repeat
则计数变量times的值就从10开始,每执行一次循环,其值就自动减1,直到times<1成立时循环自动结束,其执行结果为myvariable的值增加到10。在这种类型的循环语句中,可以人为地修改计数变量的值,达到控制循环次数的目的,例如以下语句:
myvariable:=0
repeat with times:=1 to 10
myvariable:= myvariable+1
times:=times+1
end repeat
其执行结果为myvariable的值增加到5,这是因为实际上在每一次循环中,计数变量times的值增加了2。
该循环类型与repeat with类型相似,也是用于执行指定次数的操作,但是次数由一个列表控制:为列表中的每个元素执行一次循环,列表中的元素个数就是循环进行的次数。其使用格式为:
repeat with 变量 in 列表
操作
end repeat
例如以下语句:
times:= 0
repeat with n in [50,20,30,20,60,90,10,20,30,20,70,40]
if n=20 then
times:= times + 1
end if
end repeat
其执行结果是遍历列表中的元素,并将20出现的次数(4次)保存到变量times中。
该循环类型用于在某个条件成立的情况下重复执行指定操作,直到该条件不再成立为止,其使用格式为:
repeat while 条件
操作
end repeat
例如以下语句:
myvariable:=0
repeat while myvariable <10
myvariable:= myvariable +1
end repeat
其执行过程是当变量myvariable的值小于10时,就对其加1,直至myvariable=10为止。使用这种类型的循环语句时,要注意防止出现条件永远成立的情况,比如在上面的语句中将条件设置为myvariable >=0,在这类情况下该循环语句就形成一个死循环,程序一直在循环内部执行下去,永远不会结束。另外,不要使用依赖于用户操作的条件,比如capslock、mousedown等,因为authorware在执行循环语句时,不会执行【运算】设计图标之外的内容或者响应用户的操作,此时无论你单击多少次鼠标左键,capslock的值永远不会变为true,所以程序永远不会退出循环语句向下执行。
在以上三种循环语句内的任何地方都可以使用next repeat和exit repeat语句,next repeat语句用于提前结束本次循环(略过从它到end repeat之间的语句)直接进入下一个循环,exit repeat语句用于直接退出当前的循环语句。循环语句同样可以嵌套使用,用以进行更为复杂的计算或实现更为复杂的控制。
在使用程序语句编写程序时,可以在一行语句的末尾加上注释。必须在注释的正文前加上两个连字符“--”,例如
repeat with n in [50,20,30,20,60,90,10,20,30,20,70,40] --遍历列表
if n=20 then
times:= times + 1 --统计20出现的次数
end if
end repeat
向代码中添加注释是一个好习惯,这使你在经过数月之后仍然能够读懂你自己编写的程序
新闻热点
疑难解答