「數控宏程序應用」:通過實例淺析循環控制技巧第二篇

今天,本人續寫關於宏程序循環控制的第二篇,依舊是那位仁兄,不過這次難度加大了。

題目:

鑽一排孔,每三孔一組,孔距為11.75,每組孔的第一孔相距40,總共360長,10組孔。

先貼上原程序:

「數控宏程序應用」:通過實例淺析循環控制技巧第二篇

「數控宏程序應用」:通過實例淺析循環控制技巧第二篇

此程序,我真心看不懂,由於是三層嵌套,所以就亂了套,我也沒法進行分析,貼上供大家研究參考。

下面我貼上我修改過的程序,並重點敘述下。

「數控宏程序應用」:通過實例淺析循環控制技巧第二篇

很顯然,想達到題目要求,須有三層循環:

1、最內層控制鑽孔動作,由#12參數控制,初始值為#5,終止條件為等於#6;

2、第二層循環控制每組孔中的孔位,由#11參數控制,終止條件為等於23.5;

3、最外層循環控制每組孔的首孔位置,由#10參數控制,終止條件為等於360;

順清每層循環及嵌套關係,事已完成一半,然後就是一層一層編寫程序。這裡我給個建議:對於初學者,如果不能熟練掌握循環,可以從內層向外層編寫,雖然程序是從外層向內層執行的,這樣邏輯思路會較為清晰。

這裡我特別提出的是,此程序中有個關鍵點:即每個孔的孔位實際是受最外層與第二層循環參數共同控制的,這是初學者難於駕馭的問題,但卻是多層循環中最常遇的問題。常見思維錯誤是:如果你用一個參數進行累加控制,往往就會違揹我前篇所說的第二條原則:嵌套循環不能相互交叉干涉

(原程序就是如此,最終無法達到效果,於是就不斷修改增加參數與語句,最後就是什麼也不是。)

那麼,對於此問題該怎樣解決呢?

方法很簡單:把原一個參數分解成多個參數,讓每層循環只使用其中一個參數進行控制,這樣,外一層循環就只有一個控制參數在變更,內一層循環本身也只有一個控制參數在變更。但注意,要讓內層循環需要的結果是由其分解的參數總成產生,這樣才能使內一層循環能夠繼承上一層循環的結果。

(這點可以仔細觀摩我提供的程序)

再強調一點,上述所言針對的僅是循環體的控制參數,事實上,每層循環體內是可以有無限多個可進行同時運算的參數。(所以是控制參數,不是指所需的任何參數)

好了,今天內容結束。


分享到:


相關文章: