IF-ELSEIF 條件

使用 else,我們可以在不滿足條件時執行一些任務。但是如果我們想在第一個條件是假的情況下檢查第二個條件怎麼辦呢。我們可以這樣做:

a = 9;
if mod(a,2)==0   % MOD - modulo operation, return the remainder after division of 'a' by 2
    disp('a is even')
else
    if mod(a,3)==0
        disp('3 is a divisor of a')
    end
end

OUTPUT:
3 is a divisor of a

這也稱為 巢狀條件 ,但在這裡我們有一個 speciel 案例,可以提高程式碼的可讀性,並減少錯誤的機會 - 我們可以寫:

a = 9;
if mod(a,2)==0
    disp('a is even')
elseif mod(a,3)==0
    disp('3 is a divisor of a')
end

OUTPUT:
3 is a divisor of a

使用 elseif,我們可以在同一條件塊中檢查另一個表示式,這不僅限於一次嘗試:

a = 25;
if mod(a,2)==0
    disp('a is even')
elseif mod(a,3)==0
    disp('3 is a divisor of a')
elseif mod(a,5)==0
    disp('5 is a divisor of a')
end

OUTPUT:
5 is a divisor of a

選擇連續使用 elseif 時應格外小心,因為只有其中一個將從 ifend 塊執行。所以,在我們的例子中,如果我們想要顯示 a 的所有除數(從我們明確檢查的那些除數),上面的例子將不會很好:

a = 15;
if mod(a,2)==0
    disp('a is even')
elseif mod(a,3)==0
    disp('3 is a divisor of a')
elseif mod(a,5)==0
    disp('5 is a divisor of a')
end

OUTPUT:
3 is a divisor of a

不僅是 3,而且 5 是 15 的除數,但是如果上面的任何表示式都是真的,那麼檢查除以 5 的部分就不會達到。

最後,我們可以在所有 elseif 條件之後新增一個 else(並且只有一個 ),以便在滿足以上條件時執行程式碼:

a = 11;
if mod(a,2)==0
    disp('a is even')
elseif mod(a,3)==0
    disp('3 is a divisor of a')
elseif mod(a,5)==0
    disp('5 is a divisor of a')
else
    disp('2, 3 and 5 are not divisors of a')
end

OUTPUT:
2, 3 and 5 are not divisors of a