当需要多次执行同一代码块时,可以使用循环来解决。 通常,语句按顺序执行:首先执行函数中的第一个语句,然后执行第二个语句,依此类推。 编程语言提供各种控制结构,允许更复杂的执行路径。循环语句可用于多次执行语句或语句组,以下是大多数编程语言中循环语句的一般形式 -
Objective-C编程语言提供以下类型的循环来处理循环需求。单击以下相应链接来查看其详细信息。
编号 | 循环类型 | 描述 |
---|---|---|
1 | while循环 | 在给定条件为真时重复语句或语句组,它在执行循环体之前测试条件。 |
2 | for循环 | 多次执行一系列语句,并缩写管理循环变量的代码。 |
3 | do…while循环 | 像while 循环语句一样,但它在循环体的末尾测试条件。 |
4 | 嵌套循环 | 在任何其他循环内使用一个或多个循环,while ,for 或do...while 循环。 |
1. 循环控制语句
循环控制语句将执行从其正常序列更改。 当执行离开作用域时,将销毁在该作用域中创建的所有自动对象。
Objective-C支持以下控制语句,单击以下链接以查看其详细信息。
编号 | 控制语句 | 描述 |
---|---|---|
1 | break语句 | 用来终止循环或switch 语句,并在循环或切换后立即将执行转移到语句。 |
2 | continue语句 | 导致循环跳过其主体的其余部分,并在重复之前立即重新测试其状态。 |
2. 无限循环
如果条件永远不会变为假,则循环变为无限循环。for
循环传统上用于此目的。 由于不需要构成for
循环的三个表达式,因此可以通过将条件表达式留空来创建无限循环。
1 #import <Foundation/Foundation.h> 2 3 int main () { 4 5 for( ; ; ) { 6 NSLog(@"This loop will run forever.\n"); 7 } 8 9 return 0; 10 }
当条件表达式不存在时,程序假定条件为真。可选有一个初始化和增量表达式,但Objective-C程序员更常使用for(;;)
构造来表示无限循环。
3. while循环
只要给定条件为真,Objective-C编程语言中的while
循环语句就会重复执行目标语句。
语法
Objective-C编程语言中while循环的语法是 -
1 while(condition) { 2 statement(s); 3 }
这里,statement(s);
可以是单个语句或语句块。条件(condition
)可以是任何表达式,true
是任何非零值。当条件为true
时,循环迭代。
当条件变为false
时,程序控制将立即传递到循环之后的行。
while循环语句的流程图 -
这里,while
循环需要注意的是循环可能永远不会运行。当测试条件并且结果为假时,将跳过循环体并且将执行while
循环之后的第一个语句。
示例代码
1 #import <Foundation/Foundation.h> 2 3 int main () { 4 5 /* 局部变量定义 */ 6 int a = 10; 7 8 /* while循环执行 */ 9 while( a < 20 ) { 10 NSLog(@"value of a: %d\n", a); 11 a++; 12 } 13 return 0; 14 }
编译并执行上述代码时,将会产生以下结果 -
1 2018-11-14 06:19:27.846 main[154713] value of a: 10 2 2018-11-14 06:19:27.848 main[154713] value of a: 11 3 2018-11-14 06:19:27.848 main[154713] value of a: 12 4 2018-11-14 06:19:27.848 main[154713] value of a: 13 5 2018-11-14 06:19:27.848 main[154713] value of a: 14 6 2018-11-14 06:19:27.848 main[154713] value of a: 15 7 2018-11-14 06:19:27.848 main[154713] value of a: 16 8 2018-11-14 06:19:27.848 main[154713] value of a: 17 9 2018-11-14 06:19:27.848 main[154713] value of a: 18 10 2018-11-14 06:19:27.848 main[154713] value of a: 19
4. for循环
for
循环是一种重复控制结构,允许有效地编写需要执行特定次数的循环。
语法
Objective-C编程语言中for
循环的语法是 -
1 for( init; condition; increment ) { 2 statement(s); 3 }
下面是for
循环中的控制流程 -
init
步骤首先执行,只执行一次。 此步骤允许声明和初始化任何循环控制变量。这里只有分号是必需的,在此处声明变量是可选的。- 接下来,评估条件。 如果为
true
,则执行循环体。 如果为false
,则循环体不执行,控制流跳转到for
循环后的下一个语句。 - 在执行
for
循环体后,控制流会跳回到increment
语句。 此语句可更新任何循环控制变量。此语句就可以留空,只要在条件之后写上分号。 - 现在再次评估该条件。如果为真,则循环执行并且过程自身重复(循环体,然后递增步骤,然后再次调整)。 当条件变为
false
后,for
循环终止。
for循环执行流程图
示例代码
1 #import <Foundation/Foundation.h> 2 3 int main () { 4 5 /* for循环执行 */ 6 int a; 7 for( a = 10; a < 20; a = a + 1 ) { 8 NSLog(@"value of a: %d\n", a); 9 } 10 return 0; 11 }
执行上面示例代码,得到以下结果:
1 2018-11-14 06:36:11.408 main[156211] value of a: 10 2 2018-11-14 06:36:11.423 main[156211] value of a: 11 3 2018-11-14 06:36:11.423 main[156211] value of a: 12 4 2018-11-14 06:36:11.423 main[156211] value of a: 13 5 2018-11-14 06:36:11.423 main[156211] value of a: 14 6 2018-11-14 06:36:11.423 main[156211] value of a: 15 7 2018-11-14 06:36:11.423 main[156211] value of a: 16 8 2018-11-14 06:36:11.423 main[156211] value of a: 17 9 2018-11-14 06:36:11.423 main[156211] value of a: 18 10 2018-11-14 06:36:11.423 main[156211] value of a: 19
5. do…while循环
与for
循环和while
循环在顶部测试循环条件不同,Objective-C编程语言中的do...while
循环检查循环底部的条件。
do...while
循环类似于while
循环,但是do...while
循环保证至少执行一次。
语法
Objective-C编程语言中do...while
循环的语法是 -
1 do { 2 statement(s); 3 } while( condition );
请注意,条件表达式是在循环的末尾,因此循环中的语句在测试条件之前执行一次。
如果条件为真,则控制流跳回来执行,循环中的语句再次执行。重复此过程直到给定条件变为假。
do…while循环流程图
do…while示例代码
1 #import <Foundation/Foundation.h> 2 3 int main () { 4 5 /* 局部变量定义 */ 6 int a = 10; 7 8 /* do...while循环执行 */ 9 do { 10 NSLog(@"value of a: %d\n", a); 11 a = a + 1; 12 } while( a < 20 ); 13 return 0; 14 }
执行上面示例代码,得到以下结果:
1 2018-11-14 06:44:13.298 main[44840] value of a: 10 2 2018-11-14 06:44:13.299 main[44840] value of a: 11 3 2018-11-14 06:44:13.299 main[44840] value of a: 12 4 2018-11-14 06:44:13.299 main[44840] value of a: 13 5 2018-11-14 06:44:13.299 main[44840] value of a: 14 6 2018-11-14 06:44:13.299 main[44840] value of a: 15 7 2018-11-14 06:44:13.299 main[44840] value of a: 16 8 2018-11-14 06:44:13.299 main[44840] value of a: 17 9 2018-11-14 06:44:13.299 main[44840] value of a: 18 10 2018-11-14 06:44:13.299 main[44840] value of a: 19
6. 嵌套循环
Objective-C编程语言允许在另一个循环中使用一个循环。以下部分显示了几个例子来说明这个概念。
语法
Objective-C语言中嵌套for
循环语句的语法如下 -
1 for ( init; condition; increment ) { 2 for ( init; condition; increment ) { 3 statement(s); 4 } 5 statement(s); 6 }
Objective-C编程语言中嵌套while
循环语句的语法如下 -
1 while(condition) { 2 while(condition) { 3 statement(s); 4 } 5 statement(s); 6 }
Objective-C编程语言中嵌套do...while
循环语句的语法如下 -
1 do { 2 statement(s); 3 do { 4 statement(s); 5 } while( condition ); 6 7 } while( condition );
循环嵌套可以将任何类型的循环放在任何其他类型的循环中。 例如,for
循环可以放在while
循环内,反之亦然。
例子
以下程序使用嵌套for
循环来从2
到100
中查找素数 -
1 #import <Foundation/Foundation.h> 2 3 int main () { 4 5 /* 局部变量定义 */ 6 int i, j; 7 8 for(i=2; i<100; i++) { 9 for(j=2; j <= (i/j); j++) 10 if(!(i%j)) break; // if factor found, not prime 11 if(j > (i/j)) NSLog(@"%d is prime\n", i); 12 } 13 14 return 0; 15 }
执行上面示例代码,得到以下结果:
1 2018-11-14 07:14:35.503 main[60729] 2 is prime 2 2018-11-14 07:14:35.505 main[60729] 3 is prime 3 2018-11-14 07:14:35.505 main[60729] 5 is prime 4 2018-11-14 07:14:35.505 main[60729] 7 is prime 5 2018-11-14 07:14:35.505 main[60729] 11 is prime 6 2018-11-14 07:14:35.506 main[60729] 13 is prime 7 2018-11-14 07:14:35.506 main[60729] 17 is prime 8 2018-11-14 07:14:35.506 main[60729] 19 is prime 9 2018-11-14 07:14:35.506 main[60729] 23 is prime 10 2018-11-14 07:14:35.506 main[60729] 29 is prime 11 2018-11-14 07:14:35.506 main[60729] 31 is prime 12 2018-11-14 07:14:35.506 main[60729] 37 is prime 13 2018-11-14 07:14:35.506 main[60729] 41 is prime 14 2018-11-14 07:14:35.506 main[60729] 43 is prime 15 2018-11-14 07:14:35.506 main[60729] 47 is prime 16 2018-11-14 07:14:35.506 main[60729] 53 is prime 17 2018-11-14 07:14:35.506 main[60729] 59 is prime 18 2018-11-14 07:14:35.506 main[60729] 61 is prime 19 2018-11-14 07:14:35.506 main[60729] 67 is prime 20 2018-11-14 07:14:35.506 main[60729] 71 is prime 21 2018-11-14 07:14:35.506 main[60729] 73 is prime 22 2018-11-14 07:14:35.506 main[60729] 79 is prime 23 2018-11-14 07:14:35.506 main[60729] 83 is prime 24 2018-11-14 07:14:35.506 main[60729] 89 is prime 25 2018-11-14 07:14:35.506 main[60729] 97 is prime
7. break语句
Objective-C编程语言中的break
语句有以下两种用法 -
- 当在循环内遇到
break
语句时,循环立即终止,程序控制在循环后的下一个语句处重新开始。 - 它可以用于在
switch
语句中终止一个case
(在下一章中介绍)。
如果使用嵌套循环(即另一个循环中的一个循环),break
语句将停止执行最内层循环并开始执行块之后的下一行代码。
语法
Objective-C中break
语句的语法如下 -
break;
流程图
示例代码
1 #import <Foundation/Foundation.h> 2 3 int main () { 4 5 /* 局部变量定义 */ 6 int a = 10; 7 8 /* while循环执行 */ 9 while( a < 20 ) { 10 NSLog(@"value of a: %d\n", a); 11 a++; 12 13 if( a > 15) { 14 /* 使用break语句终止循环 */ 15 break; 16 } 17 } 18 19 return 0; 20 }
执行上面示例代码,得到以下结果:
1 2018-11-14 07:32:47.365 main[72348] value of a: 10 2 2018-11-14 07:32:47.366 main[72348] value of a: 11 3 2018-11-14 07:32:47.367 main[72348] value of a: 12 4 2018-11-14 07:32:47.367 main[72348] value of a: 13 5 2018-11-14 07:32:47.367 main[72348] value of a: 14 6 2018-11-14 07:32:47.367 main[72348] value of a: 15
8. continue语句
作者: Maxsu Java技术QQ群:227270512 / Linux QQ群:479429477
Objective-C编程语言中的continue
语句与break
语句有点类似。 但是,不是强制终止,而是继续强制执行循环的下一次迭代,跳过其间的任何代码。
对于for
循环,continue
语句会导致条件测试并增加循环的部分来执行。 对于while
和do...while
循环,continue
语句会导致程序控制传递给条件测试。
语法
Objective-C中continue
语句的语法如下 -
continue;
流程图
示例代码
1 #import <Foundation/Foundation.h> 2 3 int main () { 4 5 /* 局部变量定义 */ 6 int a = 10; 7 8 /* do...while循环执行 */ 9 do { 10 if( a == 15) { 11 /* 跳过迭代 */ 12 a = a + 1; 13 continue; 14 } 15 NSLog(@"value of a: %d\n", a); 16 a++; 17 } while( a < 20 ); 18 return 0; 19 }
执行上面示例代码,得到以下结果:
1 2018-11-14 07:39:49.946 main[86123] value of a: 10 2 2018-11-14 07:39:49.948 main[86123] value of a: 11 3 2018-11-14 07:39:49.948 main[86123] value of a: 12 4 2018-11-14 07:39:49.948 main[86123] value of a: 13 5 2018-11-14 07:39:49.948 main[86123] value of a: 14 6 2018-11-14 07:39:49.948 main[86123] value of a: 16 7 2018-11-14 07:39:49.948 main[86123] value of a: 17 8 2018-11-14 07:39:49.948 main[86123] value of a: 18 9 2018-11-14 07:39:49.948 main[86123] value of a: 19
原文地址:https://www.cnblogs.com/strengthen/p/10563163.html