動作優先順序處理 |
缺席
|
eric2339
一般會員 發表:21 回覆:14 積分:7 註冊:2007-11-27 發送簡訊給我 |
|||||||||||||
syntax
尊榮會員 發表:26 回覆:1139 積分:1258 註冊:2002-04-23 發送簡訊給我 |
|||||||||||||
eric2339
一般會員 發表:21 回覆:14 積分:7 註冊:2007-11-27 發送簡訊給我 |
|||||||||||||
herbert2
尊榮會員 發表:58 回覆:640 積分:894 註冊:2004-04-16 發送簡訊給我 |
要往下走, 便不要 return.
===================引 用 eric2339 文 章=================== dear syntax.... 目前遇到的問題在於在執行完第1個動作後,便跳開迴圈,導致無法判斷3個動作是否都需要觸發。 目前的方式如下: IF (動作1 觸發){ 執行動作 }ELSE{ 不執行動作 // 既然不執行動作, 整段 else {} 都可省略 } // return; // 刪掉本式 if (動作1完成) { if (動作2觸發) { 執行動作 } else { 不執行動作 // 既然不執行動作做, 整段 else {} 都可省略 } } // return; // 刪掉本式 現在的問題在於做完動作1後,就跳開了。請幫幫忙,謝謝 |
||||||||||||
eric2339
一般會員 發表:21 回覆:14 積分:7 註冊:2007-11-27 發送簡訊給我 |
===================引 用 herbert2 文 章=================== 要往下走, 便不要 return. ===================引 用 eric2339 文 章=================== dear syntax.... 目前遇到的問題在於在執行完第1個動作後,便跳開迴圈,導致無法判斷3個動作是否都需要觸發。 目前的方式如下: IF (動作1 觸發){ 執行動作 }ELSE{ 不執行動作 // 既然不執行動作, 整段 else {} 都可省略 } // return; // 刪掉本式 if (動作1完成) { if (動作2觸發) { 執行動作 } else { 不執行動作 // 既然不執行動作做, 整段 else {} 都可省略 } } // return; // 刪掉本式 現在的問題在於做完動作1後,就跳開了。請幫幫忙,謝謝 以下是我的程式來源,目前要做3個動作判斷,判斷1是否觸發,否則往判斷2走,判斷是否觸發,再往判斷3走,判斷是觸發,3個動作判斷完成後,另外做動作。下列程式是否有何問題?謝謝! if (H_Cut == false){ H_Cut=true; i f (H36D_OK == false){ if (H238_OK == false){ if (H238 == false){ if ( Lccd () ==1) { 執行動作 H238 = true; }else{ H238_OK = true; } return; } } if (READ_AA==true) H238_OK=true; if (H238_OK == true){ if (H239_OK == false){ if (H239 == false){ if (R_CCD ()==1){ H239 = true; 執行動作 }else{ H239_OK = true; } return; } } if (READ_AB==true) H239_OK=true; } if ((H238_OK==true)&&(H239_OK==true)){ if (H236_OK==false){ if (H236==false){ if (L_Check_Height_Cutting()==1){ H236=true; 執行動作; }else{ H236_OK=true; } return; } } if (READ_AC == true) H236_OK=true; } if ((H238_OK==true)&&(H239_OK==true)&&(H236_OK==true)){ if (H237_OK==false){ if (H237==false){ if (R_Check_Height() == 1){ H237=true; 執行動作; }else{ H237_OK=true; } return; } } if (READ_HH139[23]==true) H237_OK=true; } if ((H238_OK==true)&&(H239_OK==true)&&(H236_OK==true)&&(H237_OK==true)){ if (H23A_OK==false){ if (H23A==false){ if (Kuf_Left_Check()==1){ H23A=true; 執行動作; }else{ H23A_OK=true; } return; } } if(READ_HH139[26]==true) H23A_OK=true; } if ((H238_OK=true)&&(H239_OK==true)&&(H236_OK==true)&&(H237_OK==true)&&(H23A_OK==true)){ if (H23B_OK==false){ if (H23B==false){ if (Kuf_Right_Check()==1){ H23B=true; 執行動作; }else{ H23B_OK=true; } return; } } if(READ_HH139[27]==true) H23B_OK=true; } if ((H238_OK==true)&&(H239_OK==true)&&(H236_OK==true)&&(H237_OK==true)&&(H23A_OK==true)&&(H23B_OK==true)){ if (H36D_OK==false){ H36D_OK=true; H236=false; H237=false; H238=false; H239=false; H23A=false; H23B=false; H236_OK=false; H237_OK=false; H238_OK=false; H239_OK=false; H23A_OK=false; H23B_OK=false; 執行另1動作; } } } } |
||||||||||||
2007
中階會員 發表:54 回覆:90 積分:98 註冊:2008-08-12 發送簡訊給我 |
是這樣子嗎?? [code cpp] bool TriggerFlag = false; if(H_Cut == false) { H_Cut = true; if(H36D_OK == false) { if(H238_OK==false) { if(H238==false) { if( Lccd()==1) { H238 = true; 執行動作一 TriggerFlag = true; } else{ H238_OK = true; } } } if(READ_AA==true){ H238_OK = true; } if( (TriggerFlag==false) && (H238_OK==true) ) { if(H239_OK==false) { if(H239==false) { if(R_CCD()==1) { H239 = true; 執行動作二 TriggerFlag = true; } else{ H239_OK = true; } } } if (READ_AB==true){ H239_OK=true; } } if( (TriggerFlag==false) && (H238_OK==true) && (H239_OK==true) ) { if (H236_OK==false) { if (H236==false) { if (L_Check_Height_Cutting()==1){ H236 = true; 執行動作三; TriggerFlag = true; } else{ H236_OK = true; } } } if (READ_AC == true){ H236_OK = true; } } if( (TriggerFlag==false) && (H238_OK==true) && (H239_OK==true) && (H236_OK==true)) { if (H237_OK==false) { if (H237==false) { if (R_Check_Height() == 1){ H237 = true; 執行動作四; TriggerFlag = true; } else{ H237_OK=true; return; } } } if (READ_HH139[23]==true) H237_OK=true; } if( (TriggerFlag==false) && (H238_OK==true)&&(H239_OK==true)&&(H236_OK==true)&&(H237_OK==true)) { if (H23A_OK==false) { if (H23A==false) { if (Kuf_Left_Check()==1){ H23A=true; 執行動作五; TriggerFlag = true; } else{ H23A_OK = true; } } } if(READ_HH139[26]==true){ H23A_OK = true; } } if( (TriggerFlag==false) && (H238_OK=true) && (H239_OK==true) && (H236_OK==true) && (H237_OK==true) && (H23A_OK==true) ) { if (H23B_OK==false) { if (H23B==false) { if (Kuf_Right_Check()==1) { H23B = true; 執行動作六; TriggerFlag = true; } else{ H23B_OK=true; } } } if(READ_HH139[27]==true){ H23B_OK = true; } } if( (TriggerFlag==false) && (H238_OK==true) && (H239_OK==true) && (H236_OK==true) && (H237_OK==true) && (H23A_OK==true) && (H23B_OK==true) ) { if( H36D_OK==false ) { H36D_OK = true; H236 = false; H237=false; H238=false; H239=false; H23A=false; H23B=false; H236_OK = false; H237_OK=false; H238_OK=false; H239_OK=false; H23A_OK=false; H23B_OK=false; 執行另1動作; } } } } [/code] |
||||||||||||
eric2339
一般會員 發表:21 回覆:14 積分:7 註冊:2007-11-27 發送簡訊給我 |
===================引 用 2007 文 章=================== 是這樣子嗎?? [code cpp] bool TriggerFlag = false; if(H_Cut == false) { H_Cut = true; if(H36D_OK == false) { if(H238_OK==false) { if(H238==false) { if( Lccd()==1) { H238 = true; 執行動作一 TriggerFlag = true; } else{ H238_OK = true; } } } if(READ_AA==true){ H238_OK = true; } if( (TriggerFlag==false) && (H238_OK==true) ) { if(H239_OK==false) { if(H239==false) { if(R_CCD()==1) { H239 = true; 執行動作二 TriggerFlag = true; } else{ H239_OK = true; } } } if (READ_AB==true){ H239_OK=true; } } if( (TriggerFlag==false) && (H238_OK==true) && (H239_OK==true) ) { if (H236_OK==false) { if (H236==false) { if (L_Check_Height_Cutting()==1){ H236 = true; 執行動作三; TriggerFlag = true; } else{ H236_OK = true; } } } if (READ_AC == true){ H236_OK = true; } } if( (TriggerFlag==false) && (H238_OK==true) && (H239_OK==true) && (H236_OK==true)) { if (H237_OK==false) { if (H237==false) { if (R_Check_Height() == 1){ H237 = true; 執行動作四; TriggerFlag = true; } else{ H237_OK=true; return; } } } if (READ_HH139[23]==true) H237_OK=true; } if( (TriggerFlag==false) && (H238_OK==true)&&(H239_OK==true)&&(H236_OK==true)&&(H237_OK==true)) { if (H23A_OK==false) { if (H23A==false) { if (Kuf_Left_Check()==1){ H23A=true; 執行動作五; TriggerFlag = true; } else{ H23A_OK = true; } } } if(READ_HH139[26]==true){ H23A_OK = true; } } if( (TriggerFlag==false) && (H238_OK=true) && (H239_OK==true) && (H236_OK==true) && (H237_OK==true) && (H23A_OK==true) ) { if (H23B_OK==false) { if (H23B==false) { if (Kuf_Right_Check()==1) { H23B = true; 執行動作六; TriggerFlag = true; } else{ H23B_OK=true; } } } if(READ_HH139[27]==true){ H23B_OK = true; } } if( (TriggerFlag==false) && (H238_OK==true) && (H239_OK==true) && (H236_OK==true) && (H237_OK==true) && (H23A_OK==true) && (H23B_OK==true) ) { if( H36D_OK==false ) { H36D_OK = true; H236 = false; H237=false; H238=false; H239=false; H23A=false; H23B=false; H236_OK = false; H237_OK=false; H238_OK=false; H239_OK=false; H23A_OK=false; H23B_OK=false; 執行另1動作; } } } } [/code] 應該不是吧,上述的話,應該不會有判斷完1後,再判斷2吧!不是嗎? |
||||||||||||
2007
中階會員 發表:54 回覆:90 積分:98 註冊:2008-08-12 發送簡訊給我 |
|||||||||||||
eric2339
一般會員 發表:21 回覆:14 積分:7 註冊:2007-11-27 發送簡訊給我 |
|||||||||||||
herbert2
尊榮會員 發表:58 回覆:640 積分:894 註冊:2004-04-16 發送簡訊給我 |
您的問題, 若用流程圖表達, 就不會兜圈子了.
您希望的是如此嗎? 若進本段程式, 開始流程: 若 (1) OK 才做 (2), 否則結束(return). 若 (2) OK 才做 (3), 否則結束(return). 做完 (3), 結束(return) 若是, 下列應合用: if (Condition1) { Code1; if (Code1 Error) return; if (Condition2) { Code2; if (Code2 Error) return; Code3; } } |
||||||||||||
2007
中階會員 發表:54 回覆:90 積分:98 註冊:2008-08-12 發送簡訊給我 |
也許我的愚笨,看不懂你的流程~~
一、 有觸發則進行動作,若沒有,則判斷動作2。 <--- 有觸發則進行動作 這動作是指動作二嗎?? 是的話,怎麼後面又出現一句若沒有則判斷動作二。 還是你的意思是!!! 動作二是否可以執行,要看動作1是否觸發,有觸發則進行動作1,若沒有,則判斷動作2。 二、 執行動作一完成的話 --->H238 = true; 是嗎?? 執行動作二 完成的話 --->H239 = true; 是嗎?? 執行動作三完成的話 --->H236 = true; 是嗎?? 執行動作四完成的話 --->H237 = true; 是嗎?? 執行動作五完成的話 --->H23A=true; 是嗎?? 執行動作六完成的話 --->H23B = true; 是嗎?? 三、你說:假設今天 要先看 1 是否有觸發,才能看 2 是否有觸發,才能再看 3 是否有觸發, 若1、2 、3 都未觸發,則執行另一個開始的動作。 那是不是1觸發了,執行了動作一,動作二、動作三、動作四 就不執行, 就是說如果有執行某一個 動作後,其它的動作就不執行??? 四、也許如大大所說把 全部的 return 拿掉就好了。 ===================引 用 eric2339 文 章=================== 動作二是否可以執行,要看動作1是否觸發,有觸發則進行動作,若沒有,則判斷動作2。 謝謝 ===================引 用 2007 文 章=================== 動作二是否可以執行,要看動作一是否完成~~ 是嗎?? 同樣的,動作三是否可以執行,要看動作二是否完成~~ 是嗎?? . . . . . . ===================引 用 2007 文 章=================== 應該不是吧,上述的話,應該不會有判斷完1後,再判斷2吧!不是嗎? |
||||||||||||
syntax
尊榮會員 發表:26 回覆:1139 積分:1258 註冊:2002-04-23 發送簡訊給我 |
會不會列真值表?會不會做簡化阿?
看到那麼多 if ,我都暈了,你也應該物煞煞吧 會用真值表,就會簡單許多,你該學一下 ===================引 用 2007 文 章=================== 也許我的愚笨,看不懂你的流程~~ 一、 有觸發則進行動作,若沒有,則判斷動作2。 <--- 有觸發則進行動作 這動作是指動作二嗎?? 是的話,怎麼後面又出現一句若沒有則判斷動作二。 還是你的意思是!!! 動作二是否可以執行,要看動作1是否觸發,有觸發則進行動作1,若沒有,則判斷動作2。 二、 執行動作一完成的話 --->H238 = true; 是嗎?? 執行動作二 完成的話 --->H239 = true; 是嗎?? 執行動作三完成的話 --->H236 = true; 是嗎?? 執行動作四完成的話 --->H237 = true; 是嗎?? 執行動作五完成的話 --->H23A=true; 是嗎?? 執行動作六完成的話 --->H23B = true; 是嗎?? 三、你說:假設今天 要先看 1 是否有觸發,才能看 2 是否有觸發,才能再看 3 是否有觸發, 若1、2 、3 都未觸發,則執行另一個開始的動作。 那是不是1觸發了,執行了動作一,動作二、動作三、動作四 就不執行, 就是說如果有執行某一個 動作後,其它的動作就不執行??? 四、也許如大大所說把 全部的 return 拿掉就好了。 ===================引 用 eric2339 文 章=================== 動作二是否可以執行,要看動作1是否觸發,有觸發則進行動作,若沒有,則判斷動作2。 謝謝 ===================引 用 2007 文 章=================== 動作二是否可以執行,要看動作一是否完成~~ 是嗎?? 同樣的,動作三是否可以執行,要看動作二是否完成~~ 是嗎?? . . . . . . ===================引 用 2007 文 章=================== 應該不是吧,上述的話,應該不會有判斷完1後,再判斷2吧!不是嗎? |
||||||||||||
eric2339
一般會員 發表:21 回覆:14 積分:7 註冊:2007-11-27 發送簡訊給我 |
如果是真值表的話,應該就是上列圖表顯示了。看到各位這樣的幫忙,雖然還沒有答案,但讓小弟感到很開心,謝謝! ===================引 用 syntax 文 章=================== 會不會列真值表?會不會做簡化阿? 看到那麼多 if ,我都暈了,你也應該物煞煞吧 會用真值表,就會簡單許多,你該學一下 ===================引 用 2007 文 章=================== 也許我的愚笨,看不懂你的流程~~ 一、 有觸發則進行動作,若沒有,則判斷動作2。 <--- 有觸發則進行動作 這動作是指動作二嗎?? 是的話,怎麼後面又出現一句若沒有則判斷動作二。 還是你的意思是!!! 動作二是否可以執行,要看動作1是否觸發,有觸發則進行動作1,若沒有,則判斷動作2。 二、 執行動作一完成的話 --->H238 = true; 是嗎?? 執行動作二 完成的話 --->H239 = true; 是嗎?? 執行動作三完成的話 --->H236 = true; 是嗎?? 執行動作四完成的話 --->H237 = true; 是嗎?? 執行動作五完成的話 --->H23A=true; 是嗎?? 執行動作六完成的話 --->H23B = true; 是嗎?? 三、你說:假設今天 要先看 1 是否有觸發,才能看 2 是否有觸發,才能再看 3 是否有觸發, 若1、2 、3 都未觸發,則執行另一個開始的動作。 那是不是1觸發了,執行了動作一,動作二、動作三、動作四 就不執行, 就是說如果有執行某一個 動作後,其它的動作就不執行??? 四、也許如大大所說把 全部的 return 拿掉就好了。 ===================引 用 eric2339 文 章=================== 動作二是否可以執行,要看動作1是否觸發,有觸發則進行動作,若沒有,則判斷動作2。 謝謝 ===================引 用 2007 文 章=================== 動作二是否可以執行,要看動作一是否完成~~ 是嗎?? 同樣的,動作三是否可以執行,要看動作二是否完成~~ 是嗎?? . . . . . . ===================引 用 2007 文 章=================== 應該不是吧,上述的話,應該不會有判斷完1後,再判斷2吧!不是嗎? |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |