變量數值的好好掌握,是撰寫正確程式必要的步驟。電腦系統必然是按程式的撰寫方式順序執行的,不會無故跳行執行的。遇到迴圈及判斷式的語句,電腦
會按指定條件跳至指定行號的執行相關指令。(不是無故的!)
以下的一個簡單的例子,讓使用者輸入一個數目字,然後輸入由1至這數目字之間所有數目字。假設輸入5,同學能否掌握電腦執行指令的順序及變量數值的變化。
以下是答案及相關說明。
|
Line |
i |
a |
說明 |
|
5 |
-- |
-- |
剛宣告變量i及a,未給予數值。(註) |
|
6 |
-- |
0 |
a=0; 但這行指令其實不一定需要的,因為反正於第9行,讓使用者輸入後,a的數值必然會被更改的。 |
|
7 |
1 |
0 |
i=1; 這行不可漏掉! 改變這數值會影響輸出的數目字。 |
|
8 |
1 |
0 |
cout<<”enter the last number”;輸出 enter the last number |
|
9 |
1 |
5 |
cin>>;a讓使用者輸入數值,並貯存於a |
|
10 |
1 |
5 |
迴圈第一句(這迴圈範圍是10,11及12) |
|
11 |
1 |
5 |
cout<<i;輸出i的值,即 1 |
|
12 |
2 |
5 |
每次執行這迴圈後,把i的值加1。(因為第10行內有i++) |
|
10 |
2 |
5 |
第二次執行這迴圈,判斷(i<=a)是否繼續執行下去。這時i是2,a是5,所以繼續下去 |
|
11 |
2 |
5 |
cout<<i;輸出i的值,即 2 |
|
12 |
3 |
5 |
每次執行這迴圈後,把i的值加1。 |
|
10 |
3 |
5 |
第三次執行這迴圈,判斷(i<=a)是否繼續執行下去。這時i是3,a是5,所以繼續下去 |
|
11 |
3 |
5 |
cout<<i;輸出i的值,即 3 |
|
12 |
4 |
5 |
每次執行這迴圈後,把i的值加1。 |
|
10 |
4 |
5 |
第四執行這迴圈,判斷(i<=a)是否繼續執行下去。這時i是4,a是5,所以繼續下去 |
|
11 |
4 |
5 |
cout<<i;輸出i的值,即 4 |
|
12 |
5 |
5 |
每次執行這迴圈後,把i的值加1。 |
|
10 |
5 |
5 |
第五次執行這迴圈,判斷(i<=a)是否繼續執行下去。這時i是5,a是5,i仍未較a大,所以繼續下去。 |
|
11 |
5 |
5 |
cout<<i;輸出i的值,即 5 |
|
12 |
6 |
5 |
每次執行這迴圈後,把i的值加1。 |
|
10 |
6 |
5 |
第六次執行這迴圈,判斷(i<=a)是否繼續執行下去。這時i是6,a是5。由於不符合(i<=a),因此不再執行迴圈內的指令,而直接跳出迴圈至第13行。 |
|
13 |
6 |
5 |
換行。 |
|
14 |
6 |
5 |
輸出這時候i的值。注意,這時i是6。 |
註: 但留意,實際上i及a可能有數值的。
[知多一點點]
因為宣告i及a後,系統會替每一個變量(variable)自動配置一個記憶體位址(memory address)(同學可當作電腦替每一個變量編配一個臨時貯物箱便可以),但記憶體位址內可能已有數值的,這數值每次皆可能不一樣的。例如以下,宣告i及a後,尚未給予指定的數值前(即a=0;i=1),便輸出這兩個變量的值。發覺a的記憶體位址原來貯存的是1153796208,而i是32767。
再執行多一次,這兩個變量的數值又變了。因為每次執行程式時,系統也會重新編置記憶體位址。