首页 理论教育 语句分类及注意事项

语句分类及注意事项

时间:2023-06-16 理论教育 版权反馈
【摘要】:例如:WHILE[1 GT 0]DO1;循环体;END1;因为1永远大于0,所以此语句会无限次地执行循环体中的程序段。5)关于WHILE语句的嵌套。END m组合可实现更为强大的功能,格式如下:WHILE[条件表达式2] DO m;程序段;这里的IF[条件表达式1]GOTO n,相当于计算机编程C语言中Break语句的功能,这就避免了语句会出现无限次执行下去的情况。⑤条件转移语句不能转移到循环的里面,这样会导致死循环,在程序设计中一定要避免此类情况发生。

语句分类及注意事项

1.无条件跳转指令(也称绝对跳转指令)

格式:GOTO n(n为标号,n的范围为:1~99999,不在这个范围内,系统会自动报警,报警号No.128)。

语义:跳转到标号为n的程序段。

978-7-111-45798-5-Chapter01-7.jpg

注意:使用该跳转语句时,必须要有跳转语句使程序跳转到GOTO 20后面程序段处执行后面的程序,否则会执行无限循环(死循环),在程序设计中要尽量避免使用该类语句。

一般用法是:GOTO语句和IF[条件表达式]GOTO n([ ]中为条件判断语句)配合使用,实现程序适合精加工场合,在后面通过实例来说明这一用法。

2.条件转移语句

格式:IF[条件表达式]GOTOn; (n为程序的标号)

语义:指定表达式满足时,转移到标有顺序号n的程序段执行;指定的条件表达式不满足,则执行下一个程序段。

978-7-111-45798-5-Chapter01-8.jpg

如果[]中表达式成立,则跳转到程序号为20处执行,否则执行下一个程序段,其流程框图如图1-1所示。

注意:在FANUC系统输入时,IF和[条件表达式]之间必须有空格隔开,[条件表达式]和GOTO 20之间必须有空格来隔开。其中条件表达式必须包含运算符(见后面详细说明)。运算符插在两个变量中间或变量和常量之间,必须加[]。

978-7-111-45798-5-Chapter01-9.jpg

图1-1 条件转移语句的流程框图

3.条件赋值语句

格式:IF[条件表达式]THEN语句;

语义:条件表达式满足时,执行THEN后面的语句;如果不满足,顺序执行IF程序段的下一条语句,则该语句相当于对变量的有条件赋值。

978-7-111-45798-5-Chapter01-10.jpg

如果[ ]中表达式描述的条件成立,则执行#100=0的语句,否则执行下一个程序段。

注意:IF语句可以嵌套IF语句,如下所示:

978-7-111-45798-5-Chapter01-11.jpg

IF语句也可以互相交叉,如下所示:

978-7-111-45798-5-Chapter01-12.jpg

这和后面的WHILE语句有所不同,在实际应用中要注意区别,否则达不到程序设计预期的目标。

4.循环语句(WHILE语句)

格式:WHILE[条件表达式]DO m;

循环体;

END m;(m为取值的标号)

语义:在WHILE后面指定了一个条件表达式,当条件表达式值为TRUE时,则执行WHILE到END之间的循环体的程序段;当条件表达式的值为FALSE时,则执行END后面的程序段。循环语句流程框图如图1-2所示。

978-7-111-45798-5-Chapter01-13.jpg

图1-2 循环语句流程框图

关于WHILE语句的几点说明如下:

1)DO m和END m必须成对使用,而且DOm必须在ENDm之前使用,是用识别号m来寻找和DO相配对的END语句,下面是错误的用法:(www.xing528.com)

WHILE[条件表达式]DO 1;

循环体;

END2;

2)m的取值只能为1、2、3,如果使用1、2、3以外的数值,系统会报警,报警号为No.126。

3)[]中的语句为条件表达式,循环的次数根据条件表达式来决定,如果条件表达式的值永远为True时,则会无限次执行循环体,即出现死循环的现象。在进行程序设计时,要先设计好算法,避免出现死循环的现象。

例如:

WHILE[1 GT 0]DO1;

循环体;

END1;

因为1永远大于0,所以此语句会无限次地执行循环体中的程序段。

4)条件判断语句(IF[条件表达式]GOTOn)和循环语句(WHILE)的区别:两者的区别在于判断的先后顺序不同,本质没有太大区别,但在实际应用中要注意它们微小的区别。一般能用IF[条件表达式]GOTO n的语句都可以用循环语句(WHILE)来替代。

978-7-111-45798-5-Chapter01-14.jpg

这两个程序的运行结果完全一样。关于两个语句处理的时间,以前的教材中认为循环语句(WHILE)比IF[条件表达式]GOTO n处理得快些。事实上,它们只是循环搜索方式不一样,随着数控系统功能的增强、计算机CPU处理速度越来越快,这些处理时间已微不足道了。

再看下面的程序:

978-7-111-45798-5-Chapter01-15.jpg

通过这两个简单程序的比较,不难发现它们的不同点,在实际使用的时候要理解和区分(初学者容易在这出错),应用不当会影响加工零件的尺寸精度。

5)关于WHILE语句的嵌套。WHILE语句提供嵌套的功能,包括以下几种类型:

①两层嵌套如下所示:

978-7-111-45798-5-Chapter01-16.jpg

②FANUC系统提供的嵌套最多为三层嵌套,如下所示:

978-7-111-45798-5-Chapter01-17.jpg

③嵌套不能互相交叉,这和IF[条件表达式1]GOTO n之间的嵌套有区别。

978-7-111-45798-5-Chapter01-18.jpg

注意:上面语句的交叉嵌套是错误的。

④IF[条件表达式1]GOTO n和WHILE[条件表达式2] DOm…END m组合可实现更为强大的功能,格式如下:

WHILE[条件表达式2] DO m;

程序段;

978-7-111-45798-5-Chapter01-19.jpg

这里的IF[条件表达式1]GOTO n,相当于计算机编程C语言中Break语句的功能,这就避免了语句会出现无限次执行下去的情况。

⑤条件转移语句不能转移到循环的里面,这样会导致死循环,在程序设计中一定要避免此类情况发生。

978-7-111-45798-5-Chapter01-20.jpg

最后说明一点在SINUMERIK系统中没有提供WHILE语句的功能,因此不能用该语句进行SINUMERIK系统R参数程序的编制,在实际编程中要以机床提供的操作手册和参数说明书为准。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈