本节学习要点
1.完全理解嵌套的概念
2.牢记“嵌套”的注意事项
3.理解本节中的例题
前面一节介绍了关于流程语句的应用。本节将介绍全新内容—一宏程序嵌套。
所谓嵌套,就是一层包着一层。
比如说饺子,它由馅料和饺子皮组成。那么这个饺子皮包着馅料就称为嵌套。饺子皮是第一层,馅料是第二层。那么在宏程序语句中,该如何表示这种关系呢?不妨先看个例题。
例3-6
其中,“GE”“GT”分别表示“大于等于”“大于”。
上例程序乍看之下会觉得很混乱,让我们一层层分析吧!首先模拟系统的思维。
当系统执行到“WHILE[#1 GT 0]DO1”这一行的时候,它发现有个“DO1”但还不知道与之对应的“END1”在哪,于是它只能按顺序往下执行。当执行到“WHILE[#2 GT 0]DO2”语句时,它发现了“DO2”,这时候也没发现与之对应的“END2”在哪。但它已经确定一件事:“END2”一定比“END1”提前出现,不然就是错误的!于是系统继续往下执行,最后它发现了“END2”。这个时候系统必须把“WHILE[#2 GT 0]DO2”与“END2”之间的程序执行完,才能继续往下面走。当执行完“DO2”与“END2”之间的程序后,它往下面执行,终于发现了“END1”。这个时候它已经知道这是个嵌套循环程序!
如果用图形表达这个结构,大致是下面这个模样
例3-7(图3-2)
图 3-2
通过例3-7,可以一目了然地理解什么是嵌套了。接下来要讲解嵌套循环的执行顺序,非常关键!
在例3-6的文字描述中,提到过“必须把‘WHILE[#2 GT 0]DO2’与‘END2’之间的程序执行完,才能继续往下面走”。现在结合程序,详细分析这句话的意思:
首先当系统执行到“#1=3 WHILE[#1 GT 0]DO1”的时候,它只知道#1这个变量的值是3,并且当#1的结果大于0的话,就循环执行DO1与END1之间的程序段。于是继续执行下面的程序,来到了“#2=2 WHILE[#2 GT 0]DO2”这一段这时候系统知道#2的值是2,并且当#2的结果大于0的话,就执行DO2与END2之间的程序块,同时它也知道当前这一段已经是第二层了。于是继续往下走,执行到“#2=#2−1 END2”这一块的时候,#2的结果发生了变化,现在是1。并且把新的#2带回到“WHILE[#2 GT 0]DO2”做判断,发现经过运算的#2还是大于0,于是继续执行DO2与END2之间的程序。
这时候发现一个非常关键的问题:程序只在DO2和END2之间执行,没有向外面那层“#1=#1-1”或者“END1”执行。因为程序目前陷在第二层里,只有第二层的条件不满足了,才会向外面一层执行!
接着上面的继续分析。发现#2的结果还是大于0后,只好再次在DO2与END2里面运行,再次执行“#2=#2−1”。这时候#2的结果是0并且返回到“WHILE[#2 GT 0]DO2”做判断,发现0不大于0因此条件不满足,所以就不执行第二层程序块了,而是执行“#1=#1−1 END1”。这时候#1的结果是2并返回到第一层“WHILE[#1 GT 0]DO1”做判断,结果是满足。满足就继续执行DO1与END1之间的程序块。
然后又开始执行“#2=2 WHILE[#2 GT 0]DO2”这一段。#2的结果又变成2了。因为被重新赋值,于是又开始了第二层的内部循环。一直到第二层程序段不满足条件,才会执行“#1=#1−1 END1”,以此类推。
说到这可以做个总结:当程序进入有嵌套的循环时,结束的顺序是从内向外的!就像进入一个迷宫,从入口走到了迷宫最深处。想走出迷宫,只能从最深处开始向外走。
以上是关于“WHILE…DO”的嵌套格式,至于“IF…GOTO”其实是一个道理。在本节的例题里会讲解它,这里不讨论。
当知道了嵌套的结构以及执行方式后,现在应该牢记嵌套的一些格式问题。
格式一:不能交叉嵌套。(www.xing528.com)
例3-8(图3-3)
图 3-3
根据图3-3我们发现,两个循环语句互相交叉了。这种格式绝对不可行
格式二:WHILE循环嵌套一次性使用时,不能超过三层。
例3-9(图3-4)
图 3-4
图3-4的嵌套是错误的,绝不能超过3层!
格式三:只能向循环体外跳转,而不能从外面跳转到循环体内
例3-10(图3-5)
图 3-5
在循环语句与跳转语句搭配使用时,一定要注意跳转方向!
现在嵌套执行流程与格式都分析完,最后以一个小例题做总结回顾
例3-11(图3-6)
毛坯:φ40mm×70mm。
只车削尺寸φ30mm×50mm
图 3-6
程序是用了两层嵌套车削外圆轴。其实在实际加工中没有这个必要。但这里仅仅是举例,加深印象而已。
在上述程序中,当第二层执行好了,会把X向递减。然后再回到“Nl GOX#1”处继续加工。然后又把#2的结果重新赋值为0,重新车到-50处。然后X向退;1并且#l的值递减,于是又回到了“N1 GO X#l”,以此类推。
本节到这里就结束了,请读者一定要消化上述知识点。你可以慢慢学,保证学习质量就行!
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。