函数
数值函数:用于计算不同的数值量。
函数名后面都要求跟一对圆括号( ),如果有参数则置于括号内,无参数则括号内不填。所有的函数都只有一个返回值。
字符串函数:其返回值为字符串。
我们将在后面对字符串函数作进一步介绍。
关键词
用于控制程序流、输出结果、执行一些重要任务(修改镜头参数、进行光线追迹等)。
关键词的基本用法为:
KEYWORD argument1, argument2,argument3…
有些关键词不带参数,而另一些有多个参数。参数可能为数值表达式、字符串常量或字符串变量。还有一些关键词接受数值与字符串的混合变量。
一、程序流控制
1、FOR-NEXT用于定义一段需要重复执行多次的程序,其用法如下:
FOR variable, start_value, stop_value, increment
(commands)
NEXT
在此语句中,需要定义一个变量variable 作为计数器(此变量不一定为整数),还需要定义计数器的起始值start_value、中止值 stop_value及增量 increment。在 FOR-NEXT 之间的语句,则是需要重复执行的程序段,其重复执行的次数由 FOR 语句中定义的参数来控制。
也可以写成FOR variable = start_value, stop_value, increment,有许多编程者偏爱这种形式,认为这样程序更加清晰。
FOR-NEXT 关键词可以多层套用。
NEXT 后面的字符不影响程序运行,可加入循环变量名,特别是在多重循环套用的时候,这使程序结构更加清晰。
当程序运行到 FOR 语句时,此语句中的起始值、中止值及增量将被存储起来不再改变。所以在程序段中不能再对其进行赋值。
2、IF-THEN-ELSE-ENDIF 为条件执行语句,其用法如下:
IF(expression)
(commands)
ELSE
(commands)
ENDIF
或
IF(expression) THEN (command)
当逻辑表达式 expression 结果为真时,执行 IF 后面的 commands 命令语句,否则执行 ELSE 后面的 commands 命令语句。括号可以省略。一般情况下,条件表达式中 IF 和 ENDIF 总是成对出现,而 ELSE 则为可选项。
IF-ENDIF关键词可以多层套用。
IF (expression) THEN (command)用于只有单一命令语句需要执行的情况。
3、LABEL-GOTO让程序转向指定的位置去继续执行,其用法如下:
LABEL label_number
…
GOTO label-number
或者:
LABEL text_label
…
GOTO text_label
LABEL后面可以跟任意数字或字符串(此处可以理解为数字也是一种字符),并可置于程序中的任意行。当程序执行到 GOTO 语句时,转向相应的LABEL 语句,继续执行 LABEL 语句后面的语句。
在结构化的程序设计中,一般不推荐使用 GOTO 语句,因为这很容易造成程序结构不清晰,出错时难于诊断。使用 GOTO 语句时应该加倍小心。
此例子中,用到了FOR-NEXT,IF-THEN,LABEL-GOTO这几组关键词。其中RAND()是随机数函数,INTE()是向下取整函数。
4、PAUSE,用于暂停程序的执行,并在消息窗口中显示相应信息,等待用户的响应。在用户按 OK 按钮后,程序从暂停处继续执行。
其用法如下:
PAUSE
或
PAUSE message
message可以是任何数值量,也可以是字符串。可用于显示一些提示或者注意事项。
5、GOSUB-SUB-RETURN-END用于定义子程序,并在主程序或其它子程序中对其进行调用。其用法如下:
GOSUBsub_name
END
SUBsub_name
(commands)
RETURN
SUB后面的 commands 部分,是子程序的主体,用于完成子程序的特定功能。子程序必
须以 RETURN 语句结束,但子程序中可用多个 RETURN语句。在不同的条件下返回主程序。
RETURN 后面的字符不影响程序运行,可加上子程序名使结构清晰。
主程序应置于子程序之前,至少要用一个 END 语句标明主程序的结束。
ZPL 中的变量为全局变量,子程序的变量修改后,整个程序的其它地方此变量值也会改变。
此例子中,我们在主程序先定义了 x 和 y 的值,但在子程序中,由随机函数产生的新的x 和 y 的值覆盖了原来的值,因此在主程序最后显示出来的值是新的值。另外,在子程序中我们用到了两个 RETURN语句,如果 x > y,则子程序在第一个RETURN 处就会结束,返回主程序,而不必继续运行子程序后面的部分。
下期见~
领取专属 10元无门槛券
私享最新 技术干货