作者loveme00835 (最愛朴素妍)
看板C_and_CPP
標題Re: [問題] 請問這2種運算式的優缺點在哪
時間Mon Nov 22 00:01:36 2010
※ 引述《wwf1310 (睡覺)...(掛)》之銘言:
: Q:
: 1是先做迴圈再判斷
: 2是先做判斷再迴圈
: 請問這2種在什麼情況下會有出現它的優缺點呢?
: A:
: (我想不太到它的優缺點...納悶)
: 有人可以解惑一下嗎,謝謝 !
: 1. for(i=0; i<n; i++)
: { if(condition)
: DOsomething();
: else
: DOsomething();
: }
: 2. if(condition)
: { for(i=0; i<n; i++)
: DOsomething();
: }
: else
: {
: for(i=0; i<n; i++)
: DOsomething();
: }
兩種方法不只是做法不一樣, 所代表的涵意其實也不一樣,
舉個例子來說: 假如你是學生, 每天只有兩件事情可以做:
1.打魔獸
2.寫作業
你獲得小道消息指出, 某堂課在「第 n天之後要交作業」,
助教每天都會上課程網站更新公告, 但是目前還沒任何相關
訊息, 你決定再持續觀察看看...
有以下兩種策略可以使用:
1.
for( 從今天起到 n - 1 天 )
{
if( 有公告說要交作業 )
寫作業;
else
打魔獸;
}
2.
if( 今天有公告說要交作業 )
{
for( 從今天起到 n - 1 天 )
寫作業;
}
else
{
for( 從今天起到 n - 1 天 )
打魔獸;
}
很明顯地第 1種策略是比較保險的作法, 只有當你 if 檢查
的條件在迴圈執行期間都不會改變時 (也就是要嘛助教今天
就公告要交作業, 不然就是都沒公告) , 最後的結果才會相
同, 否則稍有閃失你可能就哭哭了.
寫單執行緒的程式時, 除非迴圈有執行到會改變條件的程式
碼, 否則兩個策略結果都會相同, 然後你才可以計較誰快誰
慢. 但是; 如果會改變條件的不止一個執行緒, 兩者間就會
有很大的不同了. 寫程式首要的目標就是正確性, 你需要依
照情境來選擇最適合的作法.
想要跑得快 → 程式碼不直覺
→ 程式碼不好改
→ 程式碼沒人要
→ 程式碼作廢
--
◢████ ◢█ ◢██◣ ◢█ ◢███ ◢█
T-ara版怎麼去
████◤
██
◢██◣█
██
████
██
s ~>
T-ara
█/███
██
██
██
█/█ ◢█
██
█/█
歡迎您的光臨
████◤
██
██
██
██◤
███◤
██◤
恩靜、
智妍、
孝敏
█/███
██
█/█
█◤
██
█/██
██
素妍、
居麗、
寶藍
████◤
█◤
◥██◤ █◤
████◤
█◤
ψmakigoto123
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.121.197.115
推 james732:推薦這篇文章! 11/22 00:03
※ 編輯: loveme00835 來自: 140.121.197.115 (11/22 00:04)
推 tropical72:push~~ 11/22 00:07
推 nowar100:哈哈 這比喻真是太妙了 11/22 00:08
推 herman602:XDDD 11/22 00:16
推 cobrasgo:m起來XD 11/22 00:45