之前考試時
教授考了一個頗為簡單的程式
我大概只花兩分鐘就寫出來
但教授檢查時
說我的if用太多
要我重打
是在每一個程式語言裡
if太多都是缺點嗎??
我實在不知道if太多會怎樣
CPU比較容易爆掉
還是電腦運算會比較慢??
2006-12-27 14:20:42 · 14 個解答 · 發問者 PCgay 5 in 電腦與網際網路 ➔ 程式設計
我提供免費電腦問題諮詢:02-29405818
我只要是~電腦維修~電腦重灌~電腦問題~修電腦~重灌win7~xp重灌~都是找他們
他們到府服務非常方便!!
希望能幫到你
可以跟他們聯絡看看
評價很高...你可以試試看!!^^
電話:02-29405818
或者加LINE~直接線上詢問也可以!
ID:gmepc168
希望能幫到你
Yahoo服務加網址
http://tw.serviceplus.yahoo.com/booth/seller/Y0193898792
2014-06-23 10:06:21 · answer #1 · answered by Anonymous · 0⤊ 0⤋
if 用的多, 表示需要判斷的時間會增加 !!
程式很簡單, 對於程式的效能影響應該不大 !!
個人覺得程式就像文章, 有每個人的風格, 我只能覺得教授不喜歡您使用 if ... then ... else ... 之類的語法吧
2006-12-30 12:32:42 · answer #2 · answered by 順子 5 · 0⤊ 0⤋
用 if 的話每一個判斷式都要執行,非常耗時。
如果有多個選項,因該改用 switch。
ㄧ堆的 if ,也就是程式執行當中必須停頓好幾次作判斷,甚至重複判斷。
2006-12-29 12:35:59 · answer #3 · answered by 濛子 6 · 0⤊ 0⤋
不是你的問題?是教授問題部用過竇擔心阿 都支持你
2006-12-29 11:33:19 補充:
if只要努力if不用怕
2006-12-29 06:31:57 · answer #4 · answered by 風 2 · 0⤊ 0⤋
if太多會造成程式執行速度變慢,且也會造成程式的容量變大!如果沒寫好,容易造成系統當機或停擺!
2006-12-29 00:23:34 · answer #5 · answered by 幸せの恋人 3 · 0⤊ 0⤋
IF是指如果嗎?
IF用太多的話=太多假設了
CPU會不會爆掉就不知道ㄌ~
你說的IF是英文裡面的IF還是別的東西~
你補充一些我在回答~QQ
2006-12-28 16:00:08 · answer #6 · answered by 比利 2 · 0⤊ 0⤋
以下是小弟的經驗值:
1.基本上寫程式 最主要用意就是要解決人的問題
不要被這種if判斷方式,卡住自己
你老師 以另一個角度來說,叫做"估毛"
才幾行程式,當然用if判斷就好
但也可能是您老師是為你好
因為你不認真,所以課程教完do while 你居然用if
(找屬~~)
2. if 判斷其實就消耗CPU處理,但以現在CPU的效能來說
除非你寫的程式需要耗費記憶體夠龐大,類似影像處理
不然也沒感覺~~~
3.關於程式的簡潔/與維護方面考量
比較建議使用do while 現成的副程式
call副程式與維護程式上都很方便
2006-12-28 12:49:57 · answer #7 · answered by Pauli form Taiwan 3 · 0⤊ 0⤋
以下是在下的2種解決法
(1)用 if else if
用if (條件1)
(動作1);
else if (條件2)
(動作2);
else if..............................
如此一來程式的判斷就會變成:符合條件1-->做動作1 不合 測試條件2 符合條件2-->做動作2
不合 測試條件3 符合條件3-->做動作3
.
.
.
只要有條件吻合了 在他之後的If會跳過不去判斷(節省資源)
原本:
if (條件1)
(動作1);
if (條件2)
(動作2);
if ().....................
若符合條件1 程式完成了動作1 然後會接著判斷條件2(當然是不會符合條件2嚕= = 打2個條件一樣的if 根本是在燒電腦 讓他白跑) 然後條件3 條件4.........全部判斷過一次(當然也都不符合啦!)
-------------------------------------------------------------------------------------------
(2)用switch (x)-----------switch函數,x為要判斷的東西
switch的特色在於容易看也容易執行
條件設定: case 數字 :動作;break;(條件為數字只需直接輸入即可)
case '字元' :動作;break;;(條件為字元需用單引號夾住)
break很重要
例:
switch (x)
{
case 1:printf ("1");break;
case 'A':;case 'a':;printf ("A");break;
case 1024:printf ("over flow");
default (其他動作);
}
當X=1,印出 1 沒什麼問題 和if含數相同
當X=A時因為沒輸入動作程式不會動,(注意!!)因為沒有break;
所以程式繼續跑 並無視下一個case符合與否 繼續執行printf ("A");
印出A 直到碰到break;才結束switch (X)
所以case 'A':;case 'a':;printf ("A");break;
等同於if((X==A)||(X==a)) printf ("A");
此法適用於多種 input對應同一種動作時
而default則是當X不等於你設定的那些值時 所做的其他動作
以上 敝人卓見^^ 資工人為資工人加油!!
2006-12-28 11:18:19 · answer #8 · answered by Anonymous · 0⤊ 0⤋
1.使用太多的if會使程式碼混亂,比較不容易追蹤。閱讀的時候必須不停判斷程式到底選擇了哪一條執行路徑,而不容易弄清楚程式的邏輯,甚至出現bug的時候你的思緒無法涵蓋每一種執行狀況,所以抓不出問題。
(想像有一天你接手的別人的程式碼,為了搞清楚會不會進入一個if區塊,向上捲動了好幾個畫面去看他執行了哪些東西,然後又不得不再向前看他到底宣告了哪些鬼玩意,最後開了好幾個原始檔找相關的函數和類別.......而你追蹤這個if的目的,只是為了知道另一個if區塊會不會被執行.....)
2.如果你正在上物件導向或是泛型相關的程式語言,教授可能會希望你用多型或泛型的技巧替代不必要的if,讓語法機制自動決斷。
3.分支指令確實會造成CPU小小的負擔
其中一個代價就是讓CPU的pipeline無法填滿,所以浪費些許指令週期。在PC上也就罷了,但是在比較簡單的處理器上,要是你的if真的很複雜,且混著回圈大量執行,還讓分支預測器完全猜不透你想幹什麼,那麼浪費掉的指令週期就很可觀。(不過和前面兩點比起來這點小問題實在不太重要)
2006-12-27 15:25:55 · answer #9 · answered by novus 6 · 0⤊ 0⤋
的確是不好的,不過其實如果以新手而言,我覺得最重要的是你
要能夠先做出答案。等第一個版本的程式完成後,在去修改,完
成更簡單的版本。
比如說你要比較3個數字的大小,你用IF硬**話可能要寫不少
次,可是如果用副函式寫的話CALL兩次就出來了,纖兩個比完
找出大的在根地3個比。
2006-12-27 14:50:25 · answer #10 · answered by 天之淚 3 · 0⤊ 0⤋