iT邦幫忙

2021 iThome 鐵人賽

DAY 5
0
自我挑戰組

iOS 菜鳥工程師的30天 objective-C系列 第 5

Day 05 - 決策(if, switch)

  • 分享至 

  • xImage
  •  

# if 語句

由一個條件句去判斷 bool 值,若是true就執行 statement,false就跳過。

語法:

if(boolean_expression)
{
   /* statement(s) will execute if the boolean expression is true */
}

流程圖:

Untitled

# if...else 語句

跟上面很像,就差在else,在 bool值為false時會執行 statement2。

語法:

if(boolean_expression)
{
   /* statement1(s) will execute if the boolean expression is true */
}
else
{
  /* statement2(s) will execute if the boolean expression is false */
}

流程圖:

Untitled

ex.

int main() {
    
    int a = 100;
    
    if (a < 20) {
        NSLog(@"a 小於 20");
    } else {
        NSLog(@"a 大於 20");
    }
    
    NSLog(@"value of a is : %d",a);

    return 0;
}

結果:

2021-09-15 17:39:42.936729+0800 TestOC[81516:975631] a 大於 20
2021-09-15 17:39:42.937428+0800 TestOC[81516:975631] value of a is : 100

# if...else if...else 語句

可以用來測試各種條件。

當使用 if , else if , else 語句時,有幾點要牢記:

  • 一個if可以有零個或一個else,它必須跟在else if之後。
  • 一個if 可以有零或許多else if,他們必須出現在else之前。
  • else if 一旦成功,剩餘的 else if 將不會被測試執行。

語法:

if(boolean_expression 1)
{
   /* Executes when the boolean expression 1 is true */
}
else if( boolean_expression 2)
{
   /* Executes when the boolean expression 2 is true */
}
else if( boolean_expression 3)
{
   /* Executes when the boolean expression 3 is true */
}
else 
{
   /* executes when the none of the above condition is true */
}

ex.

#import <Foundation/Foundation.h>

int main() {
    
    int a = 20;
    
    if (a == 10) {
        NSLog(@"a 等於 10");
    } else if (a == 20){
        NSLog(@"a 等於 20");
    } else if (a == 30){
        NSLog(@"a 等於 30");
    } else {
        NSLog(@"value of a is : %d",a);
    }

    return 0;
}

# switch語句

與 if 語句不同的地方在於,if 主要判斷條件的對錯(bool值),只會有兩種情況(true, false) ; 而 switch 則可以有許多情況,可用於多種可能。

語法:

switch(expression){
    case constant-expression  :
       statement(s);
       break; /* optional */
    case constant-expression  :
       statement(s);
       break; /* optional */
  
    /* you can have any number of case statements */
    default : /* Optional */
       statement(s);
}
  • 可以有任意數量的 case 語句,後面放上 constant-expression 進行判定,和一個冒號。
  • 當列完所有情況後,編譯器會判定還有沒有其他可能。如果有,就必須加上 default。
  • switch 常會配合 enum 做使用。
  • 不是每一個case需要包含 break。如果沒有 break,控製流將執行到後面的 case,直到出現break。

流程圖:

Untitled

ex.

#import <Foundation/Foundation.h>

int main() {
    
    char grade = 'B';
    
    switch (grade) {
        case 'A' :
            NSLog(@"Excellent!");
            break;
        
		case 'B' :
        case 'C' :
            NSLog(@"Well done");
            break;

        case 'D' :
            NSLog(@"You passed");
            break;

        case 'F' :
            NSLog(@"Better try again");
            break;

        default :
            NSLog(@"Invalid grade");
    }
    NSLog(@"Your grade is  %c", grade);
    
    return 0;
}

結果:

2021-09-15 18:09:25.397015+0800 TestOC[81888:995326] Well done
2021-09-15 18:09:25.397875+0800 TestOC[81888:995326] Your grade is  B

# ? : 操作符:

可以用來代替 if...else 語句

Bool ? Exp2 : Exp3;

如果 Bool 為true,會跑到 Exp2。反之,為false,會跑到 Exp3。


上一篇
Day 04 - 循環(Loops)
下一篇
Day 06 - Function
系列文
iOS 菜鳥工程師的30天 objective-C10
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言