2011年11月7日星期一

TJS教學(補充篇)---variable and data type,變數與資料型態

(建議在閱讀本篇教學之前,請先閱讀TJS教學---variable,變數TJS教學---data type,資料型態)

(k ゚∀゚)<這篇是對於上一篇的教學進行進一步解說,而且加了圖像解釋。

(k ゚∀゚)<變數(variable)是一個有名稱的儲存空間,並且可用來儲存數值,大家可想像成一個箱子,這箱子每次只能存放一個東西 (數值或字串),當我們指定一個新東西給一個已存放東西的箱子,舊東西就會被取代,我們亦可以讀取這箱子裡的內容。

(k ゚∀゚)<當我們想在吉里吉里裡使用變數時,我們必須宣告變數,如果以箱子為比喻,就是我們問吉里吉里去借一個箱子。

(k ゚∀゚)<當我們在宣告變數之後,再指定一個值給這變數,我們稱這種行為為初始化。

如果宣告變數但沒有初始化,那麼變數裡的值是什麼?>( ゚ω゚ s)

(k ゚∀゚)<若果沒有初始化,變數裡的值是void,留意這裡的void不是資料型態所提到的void,這裡所說的void是一個值,其資料型態是void,若果void顯示出來,就會什麼都不會顯示。

(k ゚∀゚)<若果大家學過JavaScript,要留意一下這一點,在JavaScript裡若果變數沒有初始化,其值是undefined,而不是void。

(k ゚∀゚)<吉里吉里的變數本身不帶有任何型態,所以可以把不同資料型態的值指定給同一個變數,看看以下的範例。

var aVar;
System.inform(typeof aVar);
aVar=1.2;
System.inform(typeof aVar);
aVar="Testing";
System.inform(typeof aVar);

(k ゚∀゚)<我們使用typeof這運算子來測試一個值或者是變數裡的值的資料型態,並且傳回資料型態的名稱(以字串的形式),上述的範例裡,aVar沒有初始化,所以會顯示變數裡的值的資料型態是void,然後指定了1.2這數值給變數aVar,其資料型態是Real(實數),最後指定了字串"Testing"給變數aVar,其資料型態是String。

(k ゚∀゚)<上述的範例裡,變數不會因為儲存了實數而一定要指定實數,因此亦比較容易出現非預期的錯誤。例如我們期望某變數只是儲存實數,不過就算誤將字串指定給這變數,吉里吉里也不會出現任何錯誤。

(k ゚∀゚)<而沒有初始化的變數亦可以指定給其他變數,由於沒有初始化的變數的值是void,所以意味著void這個值會指定給另一個變數,即使如此,吉里吉里也不會出現任何錯誤,以下是範例。

var aVar1=30,aVar2;
aVar1=aVar2;
System.inform(typeof aVar1);

之前不是說過整數和實數都有範圍嗎,若果把超出範圍的數值指定給變數會怎麼樣?>( ゚ω゚ s)

(k ゚∀゚)<若果把超出範圍的數值指定給變數,或者是使用這些超出範圍的數值,這時數值超出了所能儲存的容量,我們稱之為溢位,將會發生不可預期的結果,看看以下的範例。

var aVar1=10000000000000000000;
System.inform(aVar1);

(k ゚∀゚)<在上述的範例裡,由於數值超出可接受的範圍,所以會出現非預期的結果,這種情況會造成一些程式上的bug,所以必須留意避免發生這情況。

(k ゚∀゚)<今次介紹到這裡,下次再見。

沒有留言:

發佈留言