2010年1月14日 星期四

好書推推~「Short Coding」!


哈~說來蠻神奇的...我這宅男會主動去看課外書?
恩...就因為放寒假阿~空閒空很大
為了不要浪費掉寒假的寶貴時間
於是就在放寒假之前去學校圖書館借了這本來看...

話說我看完前面的暖身的第一章...
真的覺得這作者實在了不起...原來程式碼能縮短成這樣...
運用了各種方法跟技巧,加上數學計算上的簡化
簡直就全方位去縮短程式碼,而且執行效率也很好
有興趣想看這本書的話,我是覺得至少要有寫過程式的底子去看比較好
不然有些他講解的原理可能很難理解

來試試看一個簡單題目好了:
寫一支程式,能夠不斷輸入一個整數值,要能累加,每次輸入完一個整數就顯示目前累加的總和,直到輸入數字0程式停止。

這題目不是書上的例子喔~是我自己想的,如果各位們用C語言寫的話您會怎寫呢?

就比較一般的寫法,如果我沒看那本書的話,我應該會寫成這樣:
#include <stdio.h>

void main()
{
    int i,t=0;
    do{
        scanf("%d",&i);
        t += i;
        printf("total=%d\n",t);
    }while(i!=0);
}

我看了那本書的第一章暖身的部份,啟發我不少想法,我可以寫成以下這樣:
#include <stdio.h>

void main()
{
    int i,t=0;
    for(;scanf("%d",&i),i; printf("total = %d\n",t))    t+=i;
}

夠短了吧??我用Visual C++ 2008跑過上面兩個程式碼,輸出畫面一模一樣
因為這不是書上看到的題目,所我不知道還能不能再短
當然~舉這例子是很簡單的,書裡面有更多題目更複雜的例子跟超短解法
只能說~作者實在太屌啦~~!!

1 則留言:

  1. 有實故意寫的長一點,對理解比較有幫助@@

    回覆刪除