소년코딩

06.06 - for 문 (for statement)

C++에서 가장 많이 사용하는 반복문은 for 문이다. for 문은 각 반복 후에 루프 변수의 값을 쉽게 정의, 초기화 및 변경할 수 있기 때문에 반복해야 하는 횟수를 정확히 알고 있을 때 사용하기 좋다.

for (초기식; 조건식; 변화식)
   statement // 반복할 명령문

for 루프를 이해하기 가장 쉬운 방법은 for 루프를 while 루프를 변환하는 것이다.

{
    초기식;

    while (condition-expression)
    {
        statement; // 반복할 명령문
        변화식;
    }
}

루프 내부에 정의된 변수는 루프 스코프라고 하는 특별한 종류의 스코프가 있다. 루프 스코프(loop scope)가 있는 변수는 루프 내에서만 존재하며, 루프 외부에서는 접근할 수 없다.


Evaluation of for statements

for 문은 세 부분으로 평가된다.

  1. 초기식을 평가한다. 일반적으로 초기식은 변수 정의와 초기화로 구성된다. 이 문은 루프가 처음 실행될 때 한 번만 평가된다.
  2. 조건식이 평가된다. 이 값이 false로 평가되면 루프가 즉시 종료된다. 이 값이 true로 평가되면 명령문이 실행된다.
  3. 명령문이 실행된 후, 변화식이 평가된다. 일반적으로 이 표현식은 초기식에서 선언한 변수를 증가 또는 감소시키는데 사용된다. 변화식이 실행된 후 루프는 2단계로 돌아간다.
for (int count = 0; count < 10; ++count)
    std::cout << count << " ";

먼저, 이름이 count인 변수를 선언하고 값을 0으로 초기화한다.

둘째, count가 0이므로 count < 10은 true로 평가된다. 그러므로 명령문이 실행되고 0이 출력된다.

셋째, ++count가 계산되고 count가 1로 증가한다. 그러면 루프가 두 번째 단계로 돌아간다.

이제 1 < 10이 true로 평가되므로 루프가 다시 반복된다. 명령문은 1을 출력하고 count는 2로 증가한다. 2 < 10은 true로 평가되고, 명령문은 2를 출력하고 count는 3으로 증가한다.

결국 count는 10으로 증가하고 10 < 10은 false로 평가되므로 루프가 종료된다.

따라서 위 프로그램은 다음과 같은 결과를 출력한다.

0 1 2 3 4 5 6 7 8 9

Nested for loops

다른 유형의 루프와 마찬가지로 for 루프는 다른 루프 안에 중첩될 수 있다.

#include <iostream>

int main()
{
    for (char c = 'a'; c <= 'e'; ++c) // outer loop on letters
    {
        std::cout << c; // print our letter first

        for (int i = 0; i < 3; ++i) // inner loop on all numbers
            std::cout << i;

        std::cout << '\n';
    }

    return 0;
}

외부 루프의 반복마다 내부 루프가 전체적으로 실행된다. 결과적으로 출력은 다음과 같다.

a012
b012
c012
d012
e012

외부 루프가 먼저 실행되고 char c가 'a'로 초기화된다. 그다음 c가 'a'로 설정된 상태로 루프 본체가 실행된다. 루프 본체는 'a'를 출력하고 내부 루프를 실행한다. ('0', '1', '2'를 출력한다.) 그다음 줄 바꿈을 출력하고 루프 본체가 완료되었으므로 외부 루프의 맨 위로 돌아가서 변화식을 수행한 다음 조건식을 평가한다. 변수 c는 'b' 이므로 조건식을 true로 평가되어 다시 외부 루프를 실행한다. 그러면 "b012\n"이 출력된다. 등등..


cpp 번역: 이 포스트의 원문은 http://www.learncpp.com/cpp-tutorial/57-for-statements/ 입니다.

댓글 로드 중…

블로그 정보

소년코딩 - 소년코딩

소년코딩, 자바스크립트, C++, 물리, 게임 코딩 이야기

최근에 게시된 이야기