07:반복처리

become Xcoder 2011.06.21 23:11
처음
지금까지 배워 온 코드는 모두다 각명령당 일회밖에 실행하지 않았습니다. 물론 [1]과 같이 같은 코드를 되풀이하는 것으로, 같은 처리를 되풀이할 수는 있습니다. 
[1]
NSLog(@”Julia is a pretty actress.”);
NSLog(@”Julia is a pretty actress.”);
NSLog(@”Julia is a pretty actress.”);
그러나 한행이상의 처리를 몇번이나 되풀이할 필요가 자주 있습니다. 다른 프로그래밍언어와같이 Objective-C도 몇가지 반복처리 방법이 있습니다. 

for()
만약 반복하는 회수가 이미 알고 있는 것이라면, 샘플 [2]과 같이 회수를 직접 지정할 수도 있습니다. 2.7회 되풀이할 수는 없기때문에 반복회수는 당연히 int형(등의 정수형)으로 지정합니다. 
[2]
int x;
for (x =1;x <=10;x++)// [2.2]
{
  NSLog(@”Julia is a pretty actress.”);// [2.4]
}
NSLog(@”The value of x is %d", x);

샘플 [2]에서는, [2.4]의 문자열이 10회 나타내집니다. [2.2]의 for() 이라는 것이 되풀이의 명령입니다. 
우선 if와 같이 for()의 뒤에 세미콜론;은 필요 없습니다. 다음에 for()의 괄호 안에 주목해 주십시오. 괄호 안은 세미콜론;로 매듭지어진 세개의 식에 나뉘어져 있습니다. 왼쪽에서 「x =1;」, 「x <=10;」, 「x++」 왼쪽에서 차레로 보아 갑시다. 우선, 변수x에 1이 대입됩니다 (x=1). 그리고 컴퓨터는 그 다음에 씌어져 있는 조건(x <=10)을 평가합니다. 만약 이 조건이 참이라면 [2.3]로부터 시작되는 중 괄호 {} 안의 코드가 실행됩니다. 그리고 실행한 뒤, 마지막에 for의 가장오른쪽의 문장 「x++」이 실행됩니다. 즉 x의 값이 1 늘어납니다. 「x++」이 실행되면 다시 for에 돌아가고, 한복판의 조건식이 평가되, 참이라면 (x=2이므로 2 <= 10은 참) 다시 {} 안이 실행되는 되풀이가 됩니다. x가 11이 되면 조건x <= 10은 성립하지 않게 되므로 for의 반복(일반적으로 for루프라고 부릅니다)은 끝나고, 마지막 처리 [2.6]이 실행됩니다. 최종적으로 x는 10이 아니고 11인 것에 주의해 주십시오. 
 때로는 x++보다 복잡한 조건으로 되풀이할 것도 있습니다만, 필요한 것은 조건식을 적당한 것에 교환하는 것만입니다. 다음 샘플 [3]은 화씨를 섭씨로 변환하는 프로그램입니다. 
[3]
float celsius, tempInFahrenheit;
for (tempInFahrenheit = 0;tempInFahrenheit <= 200;tempInFahrenheit = tempInFahrenheit + 20)
{
  celsius =(tempInFahrenheit -32.0)*5.0/9.0;
  NSLog(@"%10.2f ->% 10.2f", tempInFahrenheit, celsius);
}

이 샘플 프로그램의 출력(계산 결과)은 이하 대로입니다. 
0.00->-17.78
20.00->-6.67
40.00-> 4.44
60.00-> 15.56
80.00-> 26.67
100.00-> 37.78
120.00-> 48.89
140.00-> 60.00
160.00-> 71.11
180.00-> 82.22
200.00-> 93.33

while()
Objective-C에는 또 2개의 반복방법이 있습니다. 
while (){}

do {} while ()
입니다. 
 
 전자는 조금전에 배운 for루프와 기본적으로 같습니다. 조건식의 평가로부터 시작됩니다. 만약 평가 결과가 처음부터 거짓(false)이라면 루프 안의 처리는 한 번도 실행되지 않습니다. 
[4]
int counter = 1;// [4.1]
while (counter <= 10)
{
  NSLog(@”Julia is a pretty actress. \n”);
  counter = counter + 1;// [4.5]
}
NSLog(@”The value of counter is %d", counter);

for()구문에서는 counter의 초기화 (이전의 샘플에서는 x=1;)이라고 counter의 인크리먼트(increment)(값을 1 늘리는 것. 전번의 샘플의 x++)은, for의 () 안에서 정리해서 실행되었습니다만 [2.2], while에서는 따로따로 실행 할 필요가 있습니다 [4.1] [4.5]. 이 샘플을 실행하면 counter는 11이 됩니다. 

do {} while ()구문에서는 평가에 앞서 우선 안괄호 안이 처리됩니다. 즉 {} 안의 처리가 반드시 최소한 한 번은 실행됩니다. 
int counter = 1;
do
{
  NSLog(@”Julia is a pretty actress. \n”);
  counter = counter + 1;
}
while (counter <= 10);
NSLog(@”The value of counter is %d", counter);

do{} while() 구문의 경우, while ()의 뒤에 세미콜론;이 필요한 것에 주의해 주십시오. 이 샘플을 실행하면, counter는 11이 됩니다. 
 당신의 프로그래밍의 지식은 대단히 늘어났으므로, 다음은 좀더 어려운 과제에 도전해 봅시다. 다음 장에서는 드디어 GUI 프로그램을 만들어 봅니다. 

원문  http://www.cocoalab.com/?q=node/13

'become Xcoder' 카테고리의 다른 글

07:반복처리  (0) 2011.06.21
06:조건분기  (0) 2011.06.21
05:프로그램을 컴파일해서 실행  (0) 2011.06.21
04:화면에 표시하기  (0) 2011.06.21
03:함수  (0) 2011.06.21
02:노 코멘트(no comment)? 그것은 안됨!  (0) 2011.06.21
Posted by tklee

댓글을 달아 주세요