zoukankan      html  css  js  c++  java
  • [Objective-C语言教程]循环语句(9)

    当需要多次执行同一代码块时,可以使用循环来解决。 通常,语句按顺序执行:首先执行函数中的第一个语句,然后执行第二个语句,依此类推。 编程语言提供各种控制结构,允许更复杂的执行路径。循环语句可用于多次执行语句或语句组,以下是大多数编程语言中循环语句的一般形式 -

    Objective-C编程语言提供以下类型的循环来处理循环需求。单击以下相应链接来查看其详细信息。

    编号循环类型描述
    1 while循环 在给定条件为真时重复语句或语句组,它在执行循环体之前测试条件。
    2 for循环 多次执行一系列语句,并缩写管理循环变量的代码。
    3 do…while循环 while循环语句一样,但它在循环体的末尾测试条件。
    4 嵌套循环 在任何其他循环内使用一个或多个循环,whilefordo...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.
    ");
     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
    ", 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
    ", 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
    ", 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循环来从2100中查找素数 -

     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
    ", 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
    ", 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语句

     
     

    Objective-C编程语言中的continue语句与break语句有点类似。 但是,不是强制终止,而是继续强制执行循环的下一次迭代,跳过其间的任何代码。

    对于for循环,continue语句会导致条件测试并增加循环的部分来执行。 对于whiledo...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
    ", 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
  • 相关阅读:
    数据库连接池使用(一):使用C#数据库连接池
    开包即食的教程带你浅尝最新开源的C# Web引擎Blazor
    HTTP协议之内容协商
    浅谈Cookie、Session与Cache的区别
    应用程序框架(一):DDD分层架构:领域实体(基础篇)
    持续集成是什么?
    Git版本控制 Git、github,gitlab相关操作
    Spring-Cloud-Netflix-Ribbon&Feigen
    Spring-Cloud-Netflix-Eureka集群搭建
    java面试题-javaSE基础
  • 原文地址:https://www.cnblogs.com/strengthen/p/10563163.html
Copyright © 2011-2022 走看看