首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

细说ZPL(3)函数与关键词

函数

数值函数:用于计算不同的数值量。

函数名后面都要求跟一对圆括号( ),如果有参数则置于括号内,无参数则括号内不填。所有的函数都只有一个返回值。

字符串函数:其返回值为字符串。

我们将在后面对字符串函数作进一步介绍。

关键词

用于控制程序流、输出结果、执行一些重要任务(修改镜头参数、进行光线追迹等)。

关键词的基本用法为:

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 处就会结束,返回主程序,而不必继续运行子程序后面的部分。

下期见~

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20171211G0XLLB00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券