廣告
| 電腦運作的原理 |
|
|
|
| 作者是 Victor | |
| 週三, 11 二月 2009 23:53 | |
電腦的記憶電腦是一部會按照我們要求做事的機器,它由記憶、以及執行或計算的能力構成,它的記憶可以想成是一張很長的紙條,紙條劃分成一個一個的格子,每個格子都有個編號,想像一下電腦的記憶體就像是下面的這張紙條一樣
上面所表示的,我們就想成是完全空白的一張紙條,當然,這樣的紙條長度並不是沒有限制,也就是電腦的記憶體是有限的 程式語言空白的紙條或記憶並沒有什麼實質的意義,為了能讓人和電腦溝通,所以人類發明程式語言來和電腦進行溝通,而程式語言可以填入這張紙條的語言,電腦會依照這紙條上的指示,一步一步的往下照著做,除此之外,紙條的空格也可以拿來儲存資料,我們先用口語話的方式來寫一個簡單的程式
請拿出紙和筆來,想像你是一部電腦,實際的跟步驟一步一步地執行,請問當此程式結束時格子5的數值是多少? 以下我們列出整個程式執行的過程 (格子4 + 格子5) 填寫到 格子5,格子5= 1 終於算完了,相當煩人,你剛剛做的事情正是電腦做事情的方式,一個命令一個動作,加上記憶體的幫忙,可以做很多事情,上面這個給人類執行的程式,其實做的工作就是計算 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 的結果,或許你覺得沒什麼,以一般人的計算方式計算這個都相當簡單和快速,那...如果是這樣呢? 1 + 2 + ... + 9999 以人肉電腦執行上面的程式可能算一整天,而且很容易出錯,可是這種重覆有規則的工作,正是電腦的專長,人類要計算相當久的東西,電腦可以在很短的時間內做完,而且電腦幾乎不會疲勞或出錯,除非程式的本身是錯的,以上這個程式我們用C語言改寫 #include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
// 計數器變數 i,功用和格子4是一樣的
int i;
// 加總變數,功用和格子5是一樣的
unsigned int sum = 0;
// 將 i初始設為 1,執行 9999次,每執行1次i遞增1
for(i = 1; i <= 9999; ++i) {
// 將加總變數加上i後覆蓋加總變數,和格子1的功用是一樣的
sum += i;
}
printf("Sum : %d\n", sum);
system("PAUSE");
return 0;
}
上面這個C語言程式在我電腦執行了0.109秒就算出了答案,或許你會說,我們有公式可以用,事實上電腦一樣也可以用公式解,那如果是沒有公式的解呢? 例如質數的計算,又或著是其它的工作,例如寄信給公司的10000位有客戶,每張信件的格式都一樣,只是名稱不同 ? 重覆有規則的工作,正是電腦的強項,而電腦工作的方式,就如我們上面所示範的,由程式設計師,寫出程式,存放到電腦的記憶體中,然後由電腦的執行單元,一步一步去做,由於現在的電腦每秒鐘可以做幾兆次這樣一步的工作,因此對人類很繁重的計算,電腦通常只要一眨眼就算完了,而且不會出錯,人類可能要花一輩子才算得完的東西,電腦或許幾秒鐘就算完了,這正是電腦的優勢,但如你所見的,其實電腦很笨,更談不上有什麼智慧,它只是一台計算速度很快的機器而已,抽像思考等能力才是人類的強項,因此我們才需要把不善長的事情丟給電腦執行,當你學會程式語言,就可以運用你善長的思考、專長,配合電腦來幫你完成你想做的事
|
核心是 Joomla!. Designed by: Free Joomla Theme, whois protect. Valid XHTML and CSS.


