2013年5月31日 星期五

Objective-C for Statement


for( initial expression ; loop condition ; loop expression ){
     statement 1;
     statement 2;
}

如果statement只有一句,大括號可以省略。

看個簡單的例子,從1加到100
int sum = 0;
for (int i = 1; i <= 100; i++) {
    sum = sum + i;
}

如果停止的判斷語句沒寫或沒寫好,就變成無窮迴圈 :)
for ( ; ; )
   NSLog(@"I'm infinitive loop!!");

for (int i = 1; i > 0 ; i++)
   NSLog(@"I'm infinitive loop!!");

在判斷時可以使用的 Operator:
==   等於
!=    不等於
<     小於
<=   小於等於
>     大於
>=   大於等於

需要注意的是 == 不要寫成了=

而有些寫法可以讓程式看起來更簡潔一些
sum += i;   (sum = sum + i;)
i++;           ( i = i +1; )
i--  ;           ( i = i - 1; )

賦值時:
i++     先賦值後加一
 ++i    先加一後賦值

        int x = 0;
        int y = 0;
        
        y = x++;
        
        NSLog(@"x is %d",x);
        NSLog(@"y is %d",y);

        int x = 0;
        int y = 0;
        
        y = ++x;
        
        NSLog(@"x is %d",x);
        NSLog(@"y is %d",y);



可以用 scanf這個函式去讀取使用者從鍵盤上的Keyin
        int guessNumber;
        NSLog(@"這期大樂透你選的數字是:");
        scanf("%i",&guessNumber);
        NSLog(@"您選的數字是:%i",guessNumber);

for裡頭的變數與更新運算可以不只一個
for (int i=1, j=10; i<j; i++,j--) 
    NSLog(@"i = %i, j = %i",i,j);



之後可能會常見到這種寫法,很像其他語言中的foreach,非常好用
NSArray *box = [[NSArray alloc]initWithObjects:@"第一個物件",
                                                   @"第二個物件",
                                                   @"第三個物件", nil];
    for (id i in box) 
        NSLog(@"%@",i);
    


最後提一下巢狀的for loop,簡單的九九乘法表

for (int i = 2; i <=9; i++) {
        for (int j = 2; j<=9; j++) {
            NSLog(@"%d * %d = %d",i,j,i*j);
        }
}


沒有留言: