program statement
initial expression;
while (loop condition)
{
program statement
loop expression;
}
for, while 相似,如果能用for寫出來,也可以用while改寫,依照不同的狀況選擇用哪一個,讓程式可讀性較佳。大原則是如果事前知道要做幾次,那用for,反之則使用while。
看個例子,先用while來寫
int theSecretNumber = 77;
int yourAnswer = 0;
while (yourAnswer != theSecretNumber) {
NSLog(@"請猜一個介於1~100的數字");
scanf("%i",&yourAnswer);
}
NSLog(@"恭喜你猜到了");
改用for,你覺得那個可讀性較好呢??
for (int theSecretNumber = 77,yourAnswer = 0;
theSecretNumber != yourAnswer; ) {
NSLog(@"請猜一個介於1~100的數字");
scanf("%i",&yourAnswer);
}
NSLog(@"恭喜你猜到了");
這個例子很像都差不多,Orz.....
就邏輯上來說,因為事先不知道到底猜幾次才會猜中,所以選擇while應該是比較適合的。
do statement
先做了再說,不管while裡頭的判斷如何,起碼做一次
do
program statement
while ( expression);
看個範例:
int main(int argc, const char * argv[])
{
@autoreleasepool {
BOOL (^ask) (void)= ^{
BOOL answer;
char c;
NSLog(@"請問你願意被我揍嗎??");
scanf("%c%*c",&c);
if (c == 'y') {
answer = YES;
}else{
answer = NO;
}
return answer;};
int hitNumber = 0;
do {
hitNumber++;
NSLog(@"揍了第%d拳",hitNumber);
} while (ask()==YES);
NSLog(@"Game over");
}
return 0;
}

這個例子中,在還沒有詢問他要不要被揍之前,就先打了,之後才根據他的回答做動作,這邊用了^{Block}實作詢問的行為,以後會再提怎麼用。
break, continue
不管在for 或是while迴圈,都可以使用這兩個關鍵字去控制流程,break直接跳離開迴圈,continue則是以下的這次不執行,但繼續迴圈。
for (int i = 1; i<=5; i++) {
NSLog(@"第%d拳",i);
if (i==3) {
break;
}
NSLog(@"打中");
}
for (int i = 1; i<=5; i++) {
NSLog(@"第%d拳",i);
if (i==3) {
continue;
}
NSLog(@"打中");
}

這一篇筆記有點暴力了
沒有留言:
張貼留言