热烈欢迎,请直接点击!!!
进入博主App Store主页,下载使用各个作品!!!
注:博主将坚持每月上线一个新app!!!
决策结构要求程序员指定一个或多个要由程序评估或测试的条件,以及在条件被确定为真时要执行的一个或多个语句,以及可选的,如果条件要执行的其他语句 被认定是假的。
以下是大多数编程语言中的典型决策结构的一般形式 -
Objective-C编程语言将任何非零和非null 假定为true ,如果它为零或null ,则将其假定为false 。 Objective-C编程语言提供以下类型的决策制定语句。 单击以下链接查看其详细信息 -
编号 |
语句 |
描述 |
1 |
if语句 |
if 语句是由布尔表达式后跟一个或多个语句组成。 |
2 |
if…else语句 |
if 语句后面可以跟一个可选的else 语句,该语句在if布尔条件表达式为false 时执行。 |
3 |
嵌套if语句 |
在一个if 或else if 语句中可使用if 或else if 语句。 |
4 |
switch语句 |
switch 语句用于测试变量与值列表的相等性。 |
5 |
嵌套switch语句 |
在一个switch 语句中使用一个switch 语句。 |
?:运算符
前面我们讲过了条件运算符?: ,条件运算符可以用来替换if...else 语句。它的一般形式如下 -
Exp1 ,Exp2 和Exp3 都是表达式。 注意冒号的使用和放置。
? 表达式的确定方式如下:评估Exp1 。 如果结果为true ,那么Exp2 会被评估并成为整个值? 表达式的值。 如果Exp1 评估为false ,则计算Exp3 ,Exp3 的结果值将成为表达式的值。
1. if语句
if 语句由布尔表达式后跟一个或多个语句组成。
Objective-C编程语言中if 语句的语法是 -
1 if(boolean_expression) {
2 /* 如果布尔表达式为true,则执行 */
3 // statement(s)
4 }
如果布尔表达式(boolean_expression )的计算结果为true ,那么将执行if 语句中的代码块。 如果布尔表达式(boolean_expression )的计算结果为false ,那么将执行if 语句结束后(在结束大括号之后)的第一组代码。
Objective-C编程语言将任何非零和非null 值假定为true ,如果它为零或null ,则将其假定为false 。
流程图
示例代码
1 #import <Foundation/Foundation.h>
2
3 int main () {
4
5 /* 定义局部变量 */
6 int a = 10;
7
8 /* 使用if语句检查布尔条件 */
9 if( a < 20 ) {
10 /* 如果条件为 true,则打印以下内容 */
11 NSLog(@"a is less than 20\n" );
12 }
13
14 NSLog(@"value of a is : %d\n", a);
15 return 0;
16 }
执行上面示例代码,得到以下结果:
1 2018-11-14 08:58:49.415 main[152191] a is less than 20
2 2018-11-14 08:58:49.417 main[152191] value of a is : 10
2. if…else语句
if 语句后面可以跟一个可选的else 语句,else 语句在布尔表达式为false 时执行。
Objective-C编程语言中if...else 语句的语法是 -
1 if(boolean_expression) {
2 /* statement(s) 如果布尔表达式为true,则执行此语句 */
3 } else {
4 /* statement(s) 如果布尔表达式为false,则执行此语句 */
5 }
如果布尔表达式(boolean_expression )的计算结果为true ,那么将执行if 代码块,否则将执行else 中的代码块。
Objective-C编程语言将任何非零和非null 值假定为true ,如果它为零或null ,则将其假定为false 。
流程图
示例代码
1 #import <Foundation/Foundation.h>
2
3 int main () {
4 /* 局部变量定义 */
5 int a = 100;
6
7 /* 检查布尔条件 */
8 if( a < 20 ) {
9 /* 如果条件为true,则打印以下结果 */
10 NSLog(@"a is less than 20\n" );
11 } else {
12 /* 如果条件为false,则打印以下结果 */
13 NSLog(@"a is not less than 20\n" );
14 }
15
16 NSLog(@"value of a is : %d\n", a);
17 return 0;
18 }
编译并执行上述代码时,会产生以下结果 -
1 2018-11-14 09:23:05.241 main[6546] a is not less than 20
2 2018-11-14 09:23:05.243 main[6546] value of a is : 100
if 语句后面可以跟一个可选的else if...else 语句,这对于使用单个if...else if 语句测试各种条件非常有用。
当使用if ,else if ,else 语句时,要记住几点 -
-
if 可以有零个或一个else ,它必须在else if 之后。
-
if 可以有零或多个else if ,并且它们必须在else 之前。
- 当有一个
else if 条件匹配成功,其余的else if 或者else 都不会再条件匹配测试。
Objective-C编程语言中if...else if 语句的语法是 -
1 if(boolean_expression 1) {
2 /* Executes when the boolean expression 1 is true */
3 } else if( boolean_expression 2) {
4 /* Executes when the boolean expression 2 is true */
5 } else if( boolean_expression 3) {
6 /* Executes when the boolean expression 3 is true */
7 } else {
8 /* executes when the none of the above condition is true */
9 }
示例代码
1 #import <Foundation/Foundation.h>
2
3 int main () {
4 /* 定义局部变量 */
5 int a = 100;
6
7 /* 检查布尔条件 */
8 if( a == 10 ) {
9 /* 如果if条件为真,则打印以下内容 */
10 NSLog(@"Value of a is 10\n" );
11 } else if( a == 20 ) {
12 /* 如果else...if条件为真,则打印以下内容 */
13 NSLog(@"Value of a is 20\n" );
14 } else if( a == 30 ) {
15 /* 如果else...if条件为真,则打印以下内容 */
16 NSLog(@"Value of a is 30\n" );
17 } else {
18 /* 如果没有一个条件为真,则打印以下内容 */
19 NSLog(@"None of the values is matching\n" );
20 }
21 NSLog(@"Exact value of a is: %d\n", a );
22 return 0;
23 }
编译并执行上述代码时,会产生以下结果 -
1 2018-11-14 09:31:07.594 main[96166] None of the values is matching
2 2018-11-14 09:31:07.596 main[96166] Exact value of a is: 100
3. 嵌套if语句
在Objective-C编程中,嵌套if-else 语句是合法的,可以在一个if 或else if 语句中使用if 或else if 语句。
语法
嵌套if 语句的语法如下 -
1 if( boolean_expression1) {
2 /* 如果 boolean_expression1 为true,则执行 */
3 if(boolean_expression2) {
4 /* 如果 boolean_expression2 为true,则执行 */
5 }
6 }
可以使用与嵌套if 语句类似的方式嵌套if else 语句。
示例代码
1 #import <Foundation/Foundation.h>
2
3 int main () {
4
5 /* 定义局部变量 */
6 int a = 100;
7 int b = 200;
8
9 /* 检查布尔条件 */
10 if( a == 100 ) {
11
12 /* 如果条件为true,则继续检查以下条件 */
13 if( b == 200 ) {
14 /* 如果条件为true,则打印以下结果 */
15 NSLog(@"Value of a is 100 and b is 200\n" );
16 }
17 }
18 NSLog(@"Exact value of a is : %d\n", a );
19 NSLog(@"Exact value of b is : %d\n", b );
20
21 return 0;
22 }
执行上面示例代码,得到以下结果:
1 2018-11-14 09:40:57.545 main[149996] Value of a is 100 and b is 200
2 2018-11-14 09:40:57.547 main[149996] Exact value of a is : 100
3 2018-11-14 09:40:57.547 main[149996] Exact value of b is : 200
4. switch语句
switch 语句用于测试变量与值列表的相等性。每个值称为一个case ,并检查每个switch case 接通的变量。
Objective-C编程语言中switch 语句的语法如下 -
1 switch(expression){
2 case constant-expression :
3 statement(s);
4 break; /* 可选 */
5 case constant-expression :
6 statement(s);
7 break; /* 可选 */
8
9 /* 可以有任意数量的case语句*/
10 default : /* 可选 */
11 statement(s);
12 }
以下规则适用于switch 语句 -
-
switch 语句中使用的表达式(expression )必须具有整数或枚举类型,或者是类类型,其中类具有单个转换函数为整数或枚举类型。
- 在
switch 中包含任意数量的case 语句,每个case 后跟要与之比较的值和冒号。
-
case 之后的constant-expression 必须与switch 中的变量具有相同的数据类型,并且必须是常量或文字。
- 当接通的变量等于
case 时,case 之后的语句将一直执行,直到达到break 语句。
- 当达到
break 语句时,switch 终止,控制流跳转到switch 语句后面的下一行。
- 并非每个
break 都需要包含break 。 如果没有出现break ,则控制流将进入后续case ,直到达到break 。
-
switch 语句可以有一个可选的默认情况,它必须出现在switch 的末尾。 当没有任何case 匹配为真时,default 可用于执行任务。 default 不需要包含break 语句。
流程图
示例代码
1 #import <Foundation/Foundation.h>
2
3 int main () {
4
5 /* 局布变量定义 */
6 char grade = 'B';
7
8 switch(grade) {
9 case 'A' :
10 NSLog(@"Excellent!\n" );
11 break;
12 case 'B' :
13 case 'C' :
14 NSLog(@"Well done\n" );
15 break;
16 case 'D' :
17 NSLog(@"You passed\n" );
18 break;
19 case 'F' :
20 NSLog(@"Better try again\n" );
21 break;
22 default :
23 NSLog(@"Invalid grade\n" );
24 }
25
26 NSLog(@"Your grade is %c\n", grade );
27 return 0;
28 }
执行上面示例代码,得到以下结果:
1 2018-11-14 09:55:06.673 main[53795] Well done
2 2018-11-14 09:55:06.675 main[53795] Your grade is B
5. 嵌套switch语句
可以将switch 作为外部switch 语句序列的一部分。 即使内部和外部switch 的case 常量包含公共值,也不会产生冲突。
嵌套switch 语句的语法如下 -
1 switch(ch1) {
2 case 'A':
3 printf("This A is part of outer switch" );
4
5 switch(ch2) {
6 case 'A':
7 printf("This A is part of inner switch" );
8 break;
9 case 'B': /* case code */
10 }
11 break;
12 case 'B': /* case code */
13 }
示例代码
1 #import <Foundation/Foundation.h>
2
3 int main () {
4
5 /* 局部变量定义 */
6 int a = 100;
7 int b = 200;
8
9 switch(a) {
10 case 100:
11 NSLog(@"This is part of outer switch\n", a );
12 switch(b) {
13 case 200:
14 NSLog(@"This is part of inner switch\n", a );
15 }
16 }
17 NSLog(@"Exact value of a is : %d\n", a );
18 NSLog(@"Exact value of b is : %d\n", b );
19
20 return 0;
21 }
执行上面示例代码,得到以下结果:
1 2018-11-15 00:55:06.093 main[167622] This is part of outer switch
2 2018-11-15 00:55:06.095 main[167622] This is part of inner switch
3 2018-11-15 00:55:06.095 main[167622] Exact value of a is : 100
4 2018-11-15 00:55:06.095 main[167622] Exact value of b is : 200
|
请发表评论