標籤:枚舉類 限制 defaults blog 轉換 for迴圈 定義 object imu
• 分支語句
• 迴圈語句
• 跳躍陳述式
Objective-C中的控制語句有以下幾類:
• 分支語句:if-else, switch
• 迴圈語句:while, do-while, for
• 與程式轉移有關的跳躍陳述式:break, continue, goto
分支語句提供了一種控制機制,使得程式的執行可以跳過某些語句不執行,而轉去執行特定的語句。
1.條件陳述式 if-else
2.多分支語句 switch
條件陳述式 if-else,基本文法形式如下,其中“[]”中的部分可以省略。
if (boolean-expression)
statement1;
[else if (boolean-expression) statement2;]
[else statement3;]
int number1 = 0;int number2 = 1;int max = 0;if (number1 > number2) {max = number1;} else {max = number2;}// 列印最大值maxNSLog(@"The maximum is %i", max);
多分支語句 switch它的文法形式如下,其中“[]”中的部分可以省略。
switch (expression){ case value1 : statement1; break; ………… case valueN : statemendN; break; [default : defaultStatement; ] }
int score = 0;scanf("%i", &score);int scoreVal = score / 10;char resChar = ‘ ‘;switch (scoreVal) {case 9:resChar = ‘A‘;break;case 8:resChar = ‘B‘;break;case 7:resChar = ‘C‘;break;case 6:resChar = ‘E‘;break;default :resChar = ‘F‘;}NSLog(@"你的分數是:%c", resChar);
使用switch語句一定要注意的是:運算式expression的傳回值類型必須是整數或能夠自動轉換成整數的類型都可以,因此可以是_Bool、char、short int、枚舉類型、int、long int、longlong以及它們的無符號類型等。但不能是float和double等浮點類型。case子句中的值valueN必須是常量,而且所有case子句中的值應是不同的。default子句是可選的。break語句用來在執行完一個case分支後,使程式跳出switch語句,即終止switch語句的執行。在一些特殊情況下,多個不同的case值要執行一組相同的操作,這時可以不用break。
迴圈語句的作用是反覆執行一段代碼,直到滿足終止迴圈的條件為止。Objective-C語言中提供的迴圈語句有:
• while語句
• do-while語句
• for語句
• while語句,它的文法形式如下,其中“[]”中的部分可以省略。
[initialization]
while (termination){
body;
[iteration;]
}
• 下面代碼是計算1000以內的水仙花數。
int i = 100;int r, s, t;r = 0;s = 0;t = 0;while (i < 1000) {r = i / 100;s = (i - r * 100) / 10;t = i - r * 100 - s * 10;if (i == r * r * r + s * s * s + t * t * t) {NSLog(@" %i " , i);}i = i + 1;}
do-while語句,它的文法形式如下,其中“[]”中的部分可以省略。
[initialization]
do {
body;
[iteration;]
} while (termination);
• 計算1000以內的水仙花數
int i = 100;int r, s, t;r = 0;s = 0;t = 0;do {r = i / 100;s = (i - r * 100) / 10;t = i - r * 100 - s * 10;if (i == r * r * r + s * s * s + t * t * t) {NSLog(@" %i " , i);}i = i + 1;} while (i < 1000);
for語句,文法形式如下:
for (initialization; termination; iteration){
body;
}
下面代碼是計算0~8平方、立方數並輸出:
int i = 8;int r, s;r = 0;s = 0;for (int j = 0; j <= i; j++) {r = j * j;s = j * j * j;NSLog(@"整數為: %i 對應的平方和%i:對應的立方和:%i", j, i, s);}
在for迴圈語句的“()”內部一般有3條語句,initialization初始化語句,termination終止條件陳述式,iteration迭代語句,其中這3條語句都是可以省略的。例如把j的初始化放在迴圈體的外面,代碼如下:
int j = 0;for (; j <= i; j++) {r = j * j;s = j * j * j;NSLog(@"整數為: %i 對應的平方和%i:對應的立方和:%i", j, i, s);}
與程式轉移有關的跳轉有break, continue, goto語句,break和continue都主要與迴圈有,goto語句在C中就有,它是無條件跳轉可以完全替代break和continue,一般要慎用。
break語句在switch中使用過,用來終止switch語句的執行。break語句還可以用於迴圈體中,終止當前的迴圈,並緊跟該迴圈塊的第一條語句處執行。例如下面的程式碼片段:
for (int i = 0; i < 10; i++) {
if (i == 3)
break;
NSLog(@ " i =%i", i);
}
NSLog(@" Game Over!");
continue語句用來結束本次迴圈,跳過迴圈體中下面尚未執行的語句,接著進行終止條件的判斷,以決定是否繼續迴圈。對於for語句,在進行終止條件的判斷前,還要先執行迭代語句。例如下面的程式碼片段:
for (int i = 0; i < 100; i++) {
if (i % 10 == 0)
continue;
NSLog(@"%i", i);
}
goto語句是無條件跳轉,可以完全替代break和continue。如果是嵌套迴圈,可以使用goto語句指定標籤,來改變程式的流程,例如下面的程式碼片段。
for (int j = 0; j < 10; j++) {
for (int i = 0; i < 10; i++) {
if (i == 3)
goto label;
NSLog(@ " i =%i", i);
}
}
label:
NSLog(@" Game Over!");
在內迴圈中使用break和continue都只能跳出內迴圈,goto語句沒有這個限制,label:是標籤定義,goto語句後面要跟有標籤。
Objective-C語言控制語句