如果你在一張紙上記錄 100 個數字, 下個星期再回來看的話, 你知道哪一個數字代表什麼意義嗎? 所以通常你還會替每一個數字加上簡單的說明, 或是給他一個名稱, 在程式裡面的話也是一樣的, 程式設計者替每一個存放資料的變數取一個名字, 這樣 CPU 能根據變數的名字來使用它所記錄著的資料。 例如: 有一個程式 AddNumber.exe 它由鍵盤讀取 10 個整數資料, 把它們加起來再把結果列印出來, 請執行一下....
請你想一想, 這樣子的程式是不是會命令 CPU 做下面的一連串工作呢?
在 1 中"累計的變數"就是本程式需要的一個變數, 2.a 中所謂 "記錄起來" 是本程式需要的第二個變數, 要重複 10 次的話又需要另一個變數來記錄目前 CPU 到底在做第幾次了, 這三個變數我會依序給它取名叫做 sum, inputNumber, count 。 你在取名字的時候一定要取一個能代表它所存放資料意義的名字, 千萬別偷懶叫它們是 a,b,c 或是 x,y,z。
的意思就是在 x 這個變數裡記住 (存放) 10 這個數字。
的意思就是叫 CPU 看一下 x 這個變數現在記錄的數值是多少, 把這個數值加 1, 把這個結果再放進變數 x 裡面 (原來的資料會被蓋掉)。
如果你用代數的觀念來想 x = x + 1 這個敘述的話, 如果你覺得這個敘述是對的話, 你的數學老師都該要退休了。 以代數的眼光來看, 這個敘述當然是不對的。 還好,這不是代數。 請你回憶一下學習程式語言的方法, 你就別問 "為什麼這裡用的符號 'x' 、 '=' 、 '+' 都和代數裡頭一樣可是意義卻不一樣了?" 沒有什麼特殊原因, 因為在 C 語言中 x = x + 1 就是解釋為 "把 x 變數的內容拿出來加 1 以後再存回變數 x 之中"。
倒是可以告訴你有一種叫做 APL 的語言, 為了降低上述誤會的可能性, 把上面的動作以
在 PASCAL 中也是因為這樣, 所以用
好, 最後希望你看到 x = x + 1 的時候把它念成 "把變數 x 的內容拿出來加 1 以後再存回變數 x 中" 這樣你就會很清楚如何在 C 程式中使用 x = x + 1 這樣的敘述了。
int x;
x + 1; |
float x;
x + 1; |
兩個情形下 CPU 在執行到 x+1 時加法動作是完全不一樣的。
C 程式裡有哪些型態可以用呢?
來撰寫上面的 AddNumber.c 程式吧!
for (count=0; count<0; count++)
{
.....
}
int count;
待會兒還有其它的變數......
scanf("%d", &inputNumber);
記得變數要先宣告其型態,
還應該在最前面加上
#include <stdio.h>
來定義一下 scanf() 函式。
sum = sum + inputNumber;
記得再定義一個整數變數 sum。
sum = sum + inputNumber;
時會先讀出 sum 變數內的資料,這裡頭是什麼啊?
(事實上什麼都有可能耶!)
所以我們應該用下面的敘述先放個 0 進去,
sum = 0;
printf("The sum of ten digits is %d\n",sum);
前面已經加過 #include <stdio.h>了,所以這裡不用重複了。
變數宣告的時機
一個變數在適當的時候宣告,
可以免除很多程式設計者的負擔,
有的人喜歡把所有程式使用到的變數都在程式一開始的時候宣告,
以避免不小心忘記宣告,
可是這樣子做的話所有的變數在程式裡都隨時保持可以更改的狀況,
萬一你程式出錯了,
你希望找出究竟某一個變數在什麼地方值出錯了,
那可就要整個程式都搜索一遍了。
因此如果保持需要用的時候再宣告的話,
可以得到較為清楚的程式。
回
程式設計課程
首頁
by Pei-yih Ting
E-mail: pyting@cs.ntou.edu.tw