2012年2月12日星期日

TJS教學---if statements,if 陳述式

(k ゚∀゚)<之前我們介紹條件運算子來決定要傳回哪個值,條件運算子的用法雖然是十分簡潔,但不容易處理一些複雜的結構,if 陳述式(if statements)則可以用來處理比較複雜的情況,以下是if 陳述式的用法。

if(條件式)
    陳述句;





















(k ゚∀゚)<當條件式成立時,下一句的陳述句就會被執行,否則這陳述句被略過,而且為了看起來比較易讀,我們會把if裡面的陳述句縮進去。

有沒有一些例子?>( ゚ω゚ s)

(k ゚∀゚)<嗯,可以看看以下的範例。

var mark=(real)System.inputString("","請輸入您的分數","");
if(mark>=60)
    System.inform("恭喜,您合格了!");
System.inform("您的分數是"+mark);

(k ゚∀゚)<在上述的範例裡,當mark的值大於或等於60,就會顯示"恭喜,您合格了!"。

(k ゚∀゚)<不過留意這個if陳述式只影響到下一句的陳述句,所以那句System.inform("您的分數是"+mark)無論在任何情況下都會被執行。

若果我想用if後決定執行兩個或以上陳述句,我該怎麼辦?>( ゚ω゚ s)

(k ゚∀゚)<在這種情況下,我們會把兩個或以上陳述句組合起來,一般稱為複合陳述句(compound statement),複合陳述句會使用到{}來把它們包起來,以下是在if 陳述式上使用複合陳述句的用法。

if(條件式){
    陳述句1;
    陳述句2;
}




















(k ゚∀゚)<再看看以下的範例。

var mark=(real)System.inputString("","請輸入您的分數","");
if(mark>=60){
    System.inform("恭喜,您合格了!");
    System.inform("下次目標是滿分!");
}
System.inform("您的分數是"+mark);

(k ゚∀゚)<在上述的範例裡,當mark的值大於或等於60,就會顯示"恭喜,您合格了!"和"下次目標是滿分!"。

如果我想在mark的值小於60時顯示不合格,那該怎麼辦?>( ゚ω゚ s)

(k ゚∀゚)<這時我們可以使用if-else陳述式(if-else statements),以下是其用法。

if(條件式)
    陳述句1;
else
    陳述句2;






















(k ゚∀゚)<當條件式成立時,陳述句1就會被執行,否則就執行陳述句2。

(k ゚∀゚)<再看看以下的範例。

var mark=(real)System.inputString("","請輸入您的分數","");
if(mark>=60)
    System.inform("恭喜,您合格了!");
else
    System.inform("真遺憾,您不合格……");
System.inform("您的分數是"+mark);

(k ゚∀゚)<在上述的範例裡,當mark的值大於或等於60,就會顯示"恭喜,您合格了!"。假如條件式不成立,這意味著mark的值並不大於或等於60,即是小於60,這就會顯示"真遺憾,您不合格……"。

原來如此!>( ゚ω゚ s)

(k ゚∀゚)<我們也可以在if-else裡執行另一個if-else陳述式,由於是if-else裡包含另一個if-else陳述式,就像鳥巢一樣一層層包起來,所以一般稱之為巢狀if陳述式(nested if statemnets),以下是其用法的例子。

if(條件式1)
    if(條件式2)
        陳述句1;
else{
    if(條件式3)
        陳述句2;
}

(k ゚∀゚)<不過為了看起來更加容易理解,有時我們會寫成以下的模樣。

if(條件式1)
    if(條件式2)
        陳述句1;
else if(條件式3)
    陳述句2;

(k ゚∀゚)<我們把else if寫在一起,看起來比較易讀。

我看不出有什麼差別?>( ゚ω゚ s)

(k ゚∀゚)<當我們使用多個if-else陳述式時,這樣寫的話會清楚得多,以下是例子。

if(條件式1)
    陳述句1;
else if(條件式2)
    陳述句2;
else if(條件式3)
    陳述句3;
else if(條件式4)
    陳述句4;

(k ゚∀゚)<當條件式1是不成立,就會跳到else的部分,並考慮條件式2。當條件式2是不成立,就會跳到else的部分,並考慮條件式3,如此類推。

(k ゚∀゚)<再看看以下的範例。

var mark=(real)System.inputString("","請輸入您的分數","");
var grade;
if (mark<=100 && mark>=80)
    grade="A";
else if (mark<80 && mark>=70)
    grade="B";
else if (mark<70 && mark>=60)
    grade="C";
else
    grade="F";
System.inform("您獲得了"+grade+"。");

(k ゚∀゚)<當mark的值分別是60至70,70至80或80至100,grade就會指定為"A"、"B"或"C",若果以上的條件式都不成立,grade就會指定為"F"。

這樣說就算我輸入101或-1等錯誤的值,grade也會指定為"F"?>( ゚ω゚ s)

(k ゚∀゚)<是的,由於所有條件式都不成立,所以會跳到最後的else部分,grade就會指定為"F"。

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

沒有留言:

發佈留言