今天,本人续写关于宏程序循环控制的第二篇,依旧是那位仁兄,不过这次难度加大了。
题目:
钻一排孔,每三孔一组,孔距为11.75,每组孔的第一孔相距40,总共360长,10组孔。
先贴上原程序:
此程序,我真心看不懂,由于是三层嵌套,所以就乱了套,我也没法进行分析,贴上供大家研究参考。
下面我贴上我修改过的程序,并重点叙述下。
很显然,想达到题目要求,须有三层循环:
1、最内层控制钻孔动作,由#12参数控制,初始值为#5,终止条件为等于#6;
2、第二层循环控制每组孔中的孔位,由#11参数控制,终止条件为等于23.5;
3、最外层循环控制每组孔的首孔位置,由#10参数控制,终止条件为等于360;
顺清每层循环及嵌套关系,事已完成一半,然后就是一层一层编写程序。这里我给个建议:对于初学者,如果不能熟练掌握循环,可以从内层向外层编写,虽然程序是从外层向内层执行的,这样逻辑思路会较为清晰。
这里我特别提出的是,此程序中有个关键点:即每个孔的孔位实际是受最外层与第二层循环参数共同控制的,这是初学者难于驾驭的问题,但却是多层循环中最常遇的问题。常见思维错误是:如果你用一个参数进行累加控制,往往就会违背我前篇所说的第二条原则:
(原程序就是如此,最终无法达到效果,于是就不断修改增加参数与语句,最后就是什么也不是。)
那么,对于此问题该怎样解决呢?
方法很简单:把原一个参数分解成多个参数,让每层循环只使用其中一个参数进行控制,这样,外一层循环就只有一个控制参数在变更,内一层循环本身也只有一个控制参数在变更。但注意,要让内层循环需要的结果是由其分解的参数总成产生,这样才能使内一层循环能够继承上一层循环的结果。
(这点可以仔细观摩我提供的程序)
再强调一点,上述所言针对的仅是循环体的控制参数,事实上,每层循环体内是可以有无限多个可进行同时运算的参数。(所以是控制参数,不是指所需的任何参数)
好了,今天内容结束。