羅蓋仙 发表于 2013-7-24 22:40:27

使用一連串IF-GOTO的經驗

本帖最后由 羅蓋仙 于 2013-7-24 22:53 编辑

使用者如果需要使用一連串的IF-GOTO,我想說明一些事項與特性

形式1:
#100=选兵(陸.海.空)
IF[#100 EQ 陸 ] GO1
IF[#100 EQ 海 ] GO2
GO3(鼻用說.當然是空軍)
(或不用GOTO3省略它.可以的話在GOTO2後面直接就做,屬於空軍加工部分)
因為EQ是很確定.鐵定的東西..使用者可安排快捷性(調整順序)

如果怕#100有錯誤.如輸入天兵..可在#100輸入後...與GOTO之間進行防呆
也可不防呆,加工會鑽錯,誰叫使用者故意去測試玩弄MACRO,沒防呆功能用戶最好空跑一下,確定好再做

還有一種防呆寫法:
#100=選兵(陸.海.空)
IF[#100 EQ 陸 ] GO1
IF[#100 EQ 海 ] GO2
IF[#100 EQ 空 ] GO3
#3000=1.(如果流到這裡表示#100投入有誤)
N1....

N2....

N3....

M99


形式2:
#100=領國家的薪水(人民,老師,軍警,政官(民意.立法))
IF[#100 EQ 0万] GO1
IF[#100 GT 5万] GO2
IF[#100 LT 5万] GO3
GO4(可省略條件式[#100 EQ5万])老師
..........
N1 人民

N2 政官

N3 軍警

N4 老師

M99

※注意1與3可能會有衝突,有前後順序性的
形式2是以新台币計價的


另外一個IF-THEN的例子:
假設#100=已用四則運算,算好的結果

IF[#100 EQ 2.5万] TH#30=10.
IF[#100 EQ 0万] TH#30=10.
IF[#100 GT 2.5万] TH#30=20.
IF[#100 LT 2.5万] TH#30=15.
N1 G1 X#30 Y#25.......開始加工

上述2與4性質雷同可能會有衝突,不能這樣寫,可改寫成,A法:

IF[#100 EQ 2.5] TH#30=10.
IF[#100 EQ 0.] TH#30=10.
IF[#100 EQ 0.]GO1或IF[#30 EQ 10.]GO1(讀到2先跳開)
IF[#100 GT 2.5] TH#30=20.
IF[#100 LT 2.5] TH#30=15.
N1 G1 X#30 Y#25.......開始加工

或改寫成,B法:使用或閘(OR)
#30=10.
IF[[#100 EQ 0.]OR[#100 EQ 2.5]]GO1(判斷好就先跳開)
IF[#100 GT 2.5] TH#30=20.
IF[#100 LT 2.5] TH#30=15.
N1 G1 X#30 Y#25.......開始加工

還有一種不使用TH的寫成,如下:
30=10.
IF[[#100 EQ 0.]OR[#100 EQ 2.5]]GO1
#30=20.
IF[#100 GT 2.5] G01
#30=15.
IF[#100 LT 2.5] GO1<---此條件式可以省略
N1 G1 X#30 Y#25.......開始加工

#30會一直有數值去覆蓋它


形式3:理髮
#100=2兵(1.)、一兵(1.5)、上兵(2.)、下士(2.5)、中士(3.0)
IF[ #100 LE 3. ] GOTO理15分頭
IF[ #100 LE2.5] GOTO理12分頭
IF[ #100 LE 2. ] GOTO理9分頭
IF[ #100 LE1.5] GOTO理6分頭
IF[ #100 LE 1. ] GOTO理豬頭

※順序可顛倒,這不會有衝突,如阿兵哥人多可考慮置於首,考慮快捷性

另外的一種B式
IF[ #100 GE 3. ] GO
IF[ #100 GE 2.5] GO
IF[ #100 GE 2. ] GO
IF[ #100 GE 1.5] GO
IF[ #100 GE 1. ] GO
順序不可顛倒喔!不然少將會理成狗頭
此例不能安排、佈置快捷性


A式:有點像把數值逼到牆角比,自不量力可直接看出
B式:像在自由空間比,如果順序調換
有錢人也可以去小吃店吃牛肉麵
高學歷也可撿回收物當職業

再說一下B:順序不能上下倒立,只能轉身如
IF[ 3. LE #100 ] GO
...
...
IF[ 1. LE #100 ] GO

A.B兩者有一種共通的特性,領多少錢就做多少事
如果順序顛倒,可能是使用者需要截長補短(抓長補短)的性質,有互補的作用


以上為個人的經驗:)

羅蓋仙 发表于 2013-7-25 22:17:20

本帖最后由 羅蓋仙 于 2013-7-25 22:18 编辑

形式3的例子有錯誤,小弟越看越奇怪,抱歉
黑字例子改成這樣(A式)
IF[ #100 GE 3. ] GO理15分頭
IF[ #100 GE 2.5] GO理12分頭
IF[ #100 GE 2. ] GO理9分頭
IF[ #100 GE 1.5] GO理6分頭
IF[ #100 GE 1. ] GO理3分頭

紫字例子改成這樣(B式)
IF[ #100 LE 1. ] GO理15分頭
IF[ #100 LE1.5] GO理12分頭
IF[ #100 LE 2. ] GO理9分頭
IF[ #100 LE2.5] GO理6分頭
IF[ #100 LE 3. ] GO理3分頭

魏飞6 发表于 2013-8-12 13:58:29

小手一抖,金币拿走,谢谢分享
精细族赚钱窍门

请谈 发表于 2013-9-18 13:31:23

谢谢分享xxfx

r157889593 发表于 2013-10-14 21:32:36

看得 好纠结

Kinki 发表于 2013-10-19 16:14:57

看不懂啊宏程序

147362638 发表于 2013-11-16 21:52:45

小手一抖,金币拿走,谢谢分享

454913758 发表于 2013-11-28 20:42:36

攒钱哪!速度

queede 发表于 2014-2-10 21:16:43

看不懂是什么

edsfwr324 发表于 2014-3-14 12:25:01

這樣反而 有點難懂了   我資質不好
页: [1] 2 3 4
查看完整版本: 使用一連串IF-GOTO的經驗