1. 程式人生 > >[Objective-C語言教程]循環語句(9)

[Objective-C語言教程]循環語句(9)

運行 while循環 一行 slot 並且 meta 正常 linux port

當需要多次執行同一代碼塊時,可以使用循環來解決。 通常,語句按順序執行:首先執行函數中的第一個語句,然後執行第二個語句,依此類推。 編程語言提供各種控制結構,允許更復雜的執行路徑。循環語句可用於多次執行語句或語句組,以下是大多數編程語言中循環語句的一般形式 -

技術分享圖片

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.\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循環來從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\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語句會導致條件測試並增加循環的部分來執行。 對於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\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

[Objective-C語言教程]循環語句(9)