Objective-C 决策

  • 决策

    决策结构要求程序员指定一个或多个要由程序评估或测试的条件,以及确定条件为真的情况下要执行的一条或多条语句,以及如果条件被确定为可选的其他要执行的语句确定为假。以下是大多数编程语言中常见的典型决策结构的一般形式-
    c decision_making
    Objective-C编程语言将任何非零非空值假定为true,并且如果它为零或null,则将其假定为false值。Objective-C编程语言提供以下类型的决策声明。单击以下链接以查看其详细信息-
    声明 描述
    if声明 一个if语句包含一个布尔表达式后跟一个或多个语句。
    if...else声明 一个if语句可以跟着一个可选的else语句,当布尔表达式是假的,其执行。
    嵌套if语句 您可以在另一个if or else if语句中使用一个if or else if语句。
    switch语句 switch语句允许一个变量来针对值的列表平等进行测试。
    嵌套的switch语句 您可以在另一个switch语句中使用一个switch语句。
    范例 - if声明
    condition1
    
    #import <Foundation/Foundation.h>
     
    int main () {
       
       /* local variable definition */
       int a = 10;
     
       /* check the boolean condition using if statement */
       if( a < 20 ) {
          /* if condition is true then print the following */
          NSLog(@"a is less than 20\n" );
       }
       
       NSLog(@"value of a is : %d\n", a);
       return 0;
    }
    
    编译并执行上述代码后,将产生以下结果-
    
    2020-08-09 22:07:00.845 test[13573] a is less than 20
    2020-08-09 22:07:00.845 test[13573] value of a is : 10
    
    范例 - if...else声明
    condition1
    
    #import <Foundation/Foundation.h>
     
    int main () {
       /* local variable definition */
       int a = 100;
     
       /* check the boolean condition */
       if( a < 20 ) {
          /* if condition is true then print the following */
          NSLog(@"a is less than 20\n" );
       } else {
          /* if condition is false then print the following */
          NSLog(@"a is not less than 20\n" );
       }
       
       NSLog(@"value of a is : %d\n", a);
       return 0;
    }
    
    编译并执行上述代码后,将产生以下结果-
    
    2020-08-10 22:04:10.199 test[3537] a is not less than 20
    2020-08-10 22:04:10.200 test[3537] value of a is : 100
    
    if ... else if ... else语句
    
    #import <Foundation/Foundation.h>
     
    int main () {
       /* local variable definition */
       int a = 100;
     
       /* check the boolean condition */
       if( a == 10 ) {
          /* if condition is true then print the following */
          NSLog(@"Value of a is 10\n" );
       } else if( a == 20 ) {
          /* if else if condition is true */
          NSLog(@"Value of a is 20\n" );
       } else if( a == 30 ) {
          /* if else if condition is true  */
          NSLog(@"Value of a is 30\n" );
       } else {
          /* if none of the conditions is true */
          NSLog(@"None of the values is matching\n" );
       }
       
       NSLog(@"Exact value of a is: %d\n", a );
       return 0;
    }
    
    编译并执行上述代码后,将产生以下结果-
    
    2020-08-07 22:05:34.168 test[8465] None of the values is matching
    2020-08-07 22:05:34.168 test[8465] Exact value of a is: 100
    
    范例 - 嵌套if语句
    
    #import <Foundation/Foundation.h>
     
    int main () {
       
       /* local variable definition */
       int a = 100;
       int b = 200;
     
       /* check the boolean condition */
       if( a == 100 ) {
          
          /* if condition is true then check the following */
          if( b == 200 ) {
             /* if condition is true then print the following */
             NSLog(@"Value of a is 100 and b is 200\n" );
          }
       }
       NSLog(@"Exact value of a is : %d\n", a );
       NSLog(@"Exact value of b is : %d\n", b );
     
       return 0;
    }
    
    编译并执行上述代码后,将产生以下结果-
    
    2020-08-11 22:08:19.984 test[18141] Value of a is 100 and b is 200
    2020-08-11 22:08:19.985 test[18141] Exact value of a is : 100
    2020-08-11 22:08:19.985 test[18141] Exact value of b is : 200
    
    范例 - switch语句
    condition1
    以下规则适用于switch语句
    • switch语句中使用的表达式必须具有整数或枚举类型,或者是类类型,其中该类具有到整数或枚举类型的单个转换函数。
    • switch内可以有任意数量的case语句。每个case后面都跟要比较的值和一个冒号。
    • case的常量表达式必须与switch中的变量具有相同的数据类型,并且必须是常量或文字。
    • 当switch的变量等于case时,该case之后的语句将一直执行,直到到达break语句为止。
    • 当到达break声明,switch终止,并且控制流程跳转到以下switch语句中的下一行。
    • 并非每个case都需要break一下。直到达到switch最后的case如果没有switch的值出现控制流会落空。
    • 一个switch语句可以有一个可选的默认情况下,它必须出现在switch的最后。当所有情况都不为真时,可以使用默认情况来执行任务。在默认情况下,无需break。
    
    #import <Foundation/Foundation.h>
     
    int main () {
    
        /* local variable definition */
       char grade = 'B';
    
       switch(grade) {
       case 'A' :
          NSLog(@"Excellent!\n" );
          break;
       case 'B' :
       case 'C' :
          NSLog(@"Well done\n" );
          break;
       case 'D' :
          NSLog(@"You passed\n" );
          break;
       case 'F' :
          NSLog(@"Better try again\n" );
          break;
       default :
          NSLog(@"Invalid grade\n" );
       }
       
       NSLog(@"Your grade is  %c\n", grade );
       return 0;
    }
    
    编译并执行上述代码后,将产生以下结果-
    
    2020-08-12 22:44:26.928 test[17555] Well done
    2020-08-12 22:44:26.929 test[17555] Your grade is  B
    
    范例 - 嵌套的switch语句
    
    #import <Foundation/Foundation.h>
     
    int main () {
    
        /* local variable definition */
       int a = 100;
       int b = 200;
     
       switch(a) {
          case 100: 
             NSLog(@"This is part of outer switch\n", a );
             switch(b) {
                case 200:
                   NSLog(@"This is part of inner switch\n", a );
             }
       }
       NSLog(@"Exact value of a is : %d\n", a );
       NSLog(@"Exact value of b is : %d\n", b );
     
       return 0;
    }
    
    编译并执行上述代码后,将产生以下结果-
    
    2020-08-09 22:09:20.947 test[21703] This is part of outer switch
    2020-08-09 22:09:20.948 test[21703] This is part of inner switch
    2020-08-09 22:09:20.948 test[21703] Exact value of a is : 100
    2020-08-09 22:09:20.948 test[21703] Exact value of b is : 200
    
  • ?:运算符

    条件运算符?:可以替换上一章中替换if ... else语句。它具有以下一般形式-
    
    Exp1 ? Exp2 : Exp3;
    
    其中Exp1,Exp2和Exp3是表达式。注意冒号的使用和放置。表达式是这样确定的-
    • Exp1被测试。如果为true,则对Exp2进行求值并成为整个表达式的值。
    • 如果Exp1为false,则计算Exp3,其值成为表达式的值。