一、 基本命令
COS中命令不多,我们先介绍最常用的。注意:所有COS命令不区分大小写,同时大部分都有缩写。既然COS不是强类型,那么我们不需要事先声明变量。我们就从设定变量开始:
设定变量
SET是设定变量的命令,缩写为S,语法为Set x=value。
例如,在Terminal里执行
Set x=“Hello, World”
如果需要同时将很多变量赋为相同的值,这是你可以Set (x,y,z)=value:
Set (x,y,z) = “yes”
有时,你也会看到这样的写法:Set x=value1, y=value2。这是缩写,等同于
Set x=value1
Set y=value2
输出结果
WRITE命令将结果输出到当前设备,缩写为W,语法为 Write x。
例如,在Terminal里执行
Set x=“Hello, World”
Write x
也可以一次输出多个变量,变量间用,分割,如
Write "The value is: ", x
虽然WRITE命令在今后面向对象编程中很少用到,但在调试时很常用。有
时需要将结果按格式输出时,可以加入控制字符,如!# ?等。!表示回车,#表示刷出新屏,?后面跟数字表示在那一列输出。
在Terminal里执行
Write "Current time is",!,?15,$ZT($ZTS)
执行代码
DO用来执行代码,缩写为D,语法为 Do routine。例
如,在Terminal里执行
Do $System.OBJ.ShowObjects(“d”)
IF判断
IF判断缩写为I,语法为:
IF expression1 {
. . .
}ELSEIF expression2 {
. . .
}ELSE {
. . .
}
例如:在Terminal里执行
if 2=1 {w “2=1”} else {w “2<>1”}
FOR循环
For循环的缩写为F,语法为
FOR start:increment:end {. . .},start表示循环变量初始值,increment表示酶每次循环变量增值,end表示循环变量值达到该值跳出。
例如,在Terminal里执行
FOR i=2:1:10 {w i,!}
有时,你会看到没有end条件的For循环,这时需要指定循环退出条件。
如下面的例子里当i大于10时会退出循环:
FOR i=1:1 {if i>10 {quit} else {w i,!}}
WHILE循环
While循环没有缩写,语法为:
WHILE expression,… {}
例如,在Terminal里执行
Set y=1 WHILE y < 10 { Set y=y+1 WRITE y,! }
终止执行
QUIT是终止执行命令,缩写为Q。可以带返回参数,语法为:
QUIT expression
条件执行
顾名思义满足条件后执行,经常会看到command:(expression) 的语法。
如Set :(x=1) y=2。该语法是当expression表达式为True时,执行相应命令,等同于
if (expression) command。
所以
Set :(x=1) y=2
等同于
if (x=1) {set y=2}
二、 操作符
COS里操作符主要分为3类:算术操作符、逻辑操作符、字符串操作符。下面介绍常用的操作符。
注意,COS里的操作符没有优先级,严格从左到右,必要时使用()来分隔操作顺序!
算术操作符
加减乘除: + - * /
例如,下面的表达式将返回6。
W 2+3*5-1/4
幂: **
例如,下面的表达式将返回8。
W 2**3
整除: /
例如,下面的表达式将返回0。
W 2/3
余数: #
例如,下面的表达式将返回2。
W 2#3
逻辑操作符
与: & &&
&和&&都是与操作符,区别在于&&在左操作数为0时就立刻返回0,而不去判断右操作数了。
例如,下面的表达式将返回0。
W 0&&2
或: ! ||
!和||都是或操作符,区别在于||在左操作数非0时就立刻返回1,而不去判断右操作数了。
例如,下面的表达式将返回1。
W 1||0
非: ’
COS里非是’例如,下面的表达式将返回0。
w '1
由于操作符严格从左到右,所以下面的表达式返回0。
SET x=1,y=0
WRITE x=1!y=0
数值关系运算符
大于: >
例如,下面的表达式将返回0。
W 2>3
小于: <
例如,下面的表达式将返回1。
W 2<3
等于: =
例如,下面的表达式将返回0。
W 2=3
大于等于: >=
例如,下面的表达式将返回0。
W 2>=3
小于等于: <=
例如,下面的表达式将返回1。
W 2<=3
字符串操作符
连字符: _
例如,下面的表达式将返回"Hello World"。
W “Hello”_" World"
注意,正是因为_是连字符,所以_不能出现在包名、类名、属性名和方法名里;
但可以出现在表名、字段名里。