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