[강좌] 프로그래밍 초급 훈련 07 - 반복하기

1부터 5까지 출력하는 프로그램을 짜보도록 합시다. 어떻게 짤 수 있을까요?

Console.WriteLine("1 2 3 4 5");

이렇게 출력하면 되겠죠? 만약, 한번에 숫자 한개씩만 출력해서 5까지 출력하려면 어떻게 할까요?

Console.Write(" 1");
Console.Write(" 2");
Console.Write(" 3");
Console.Write(" 4");
Console.WriteLine(" 5");

이렇게도 동일한 결과물을 얻을 수 있습니다. 하지만 1부터 1000까지 출력하는 프로그램을 짜려면 어떻게 해야 할까요? 1000줄을 짤  수는 없는 노릇입니다. 이럴때 사용하는 것이 반복문입니다. 일단 예제코드를 먼저 보고 설명을 이어 나가겠습니다.

static void Main(string[] args)
{
    int n = 1000;
    int count = 1;

    for(int i = 0; i < n; i++)
    {
        Console.Write(" {0}", count);
        count = count + 1;
    }
}

실행하면 아래와 같이 뜹니다.



단 몇줄의 코드로 어마어마한 출력물을 생산해내었습니다. 이런식이라면 1,0000, 100,000 까지 출력하지 못하리란 법이 없습니다. 그러면 소스코드를 한줄한줄씩 살펴보겠습니다.

첫번째로 n이라는 정수형 변수를 만들고, 1000을 초기화 하였습니다. 그리고 실제 출력할 count를 1로 초기화 하였습니다. 이제 이 카운트 값을 출력하고, 증가시키고, 출력하고, 증가시켜야 합니다. count 선언 아래를 보시면 for문이 나옵니다. for문은 사용자가 원하는 조건에 만족하는한 계속 반복시킬 수 있는 문법입니다. 다시한번 문법 구조를 살펴보겠습니다.

for(int i = 0; i < n; i++)
{
}

for문은 3개의 단계를 거칩니다. 각 단계는 세미콜론";"으로 표기합니다. 첫번째는 int i = 0; 입니다. for문에서는 반복할 변수를 하나 지정해야합니다. 보통 i, j, k...순으로 이름을 붙입니다. i라는 변수를 선언하고, 0으로 초기화 하였습니다. 두번째 단계는 조건입니다. 쉽게 말로 풀어보면 "i가 n보다 작으면" 입니다. i < n의 결과가 참이면 for문 아래 소스를 실행합니다. 세번째 단계는 증감 단계입니다. C언어 태생의 연산자인데 증가연산자 ++을 사용하면 한번 돌아올때마다 i가 1씩 증가합니다. 이 ++연산자는 참 심오해서 깊게 보면 볼수록 어렵습니다. 일단 간단하게 증가시키는 연산자 라고만 알고 넘어가겠습니다. 좀더 직관적으로 보기위해 각 실행단계를 말로 풀어보겠습니다.

for(i를 0으로 초기화; i가 n보다 작으면; i를 1증가)
{
    실행문;
}

각각의 번호순으로 실행이 됩니다. 위 소스에서 n을 1000으로 초기화 하였으니 i가 999가 될때까지 반복하다가 1000이 되는순간 for문 밖으로 빠져나올 것입니다. 그렇다면 위 프로그램을 좀더 효율적으로 고칠 수 있습니다. 아래 코드를 실행해보겠습니다.

static void Main(string[] args)
{
    int n = 1000;

    for(int i = 0; i < n; i++)
    {
        Console.Write(" {0}", i + 1);
    }
}

결과값은 동일한데, count 변수 하나를 쓰지 않았으므로 좀 더 최적화된 프로그램이 되었습니다. 어차피 i가 계속 증가하는 값이니 i를 활용하는 방법을 썼습니다. 이 방법은 다음 강좌때 정말 질리도록 사용하게될 방법이니 이것저것 바꿔보면서 실행해보시면 재미있을 것 같습니다. 다음 편에서 드디어 응용 문제들을 풀어보겠습니다. 그때까지 변수 이름도 바꿔보고, 조건도 바꿔보고 이것 저것 해보시기 바랍니다.
[강좌] 프로그래밍 초급 훈련 07 - 반복하기 [강좌] 프로그래밍 초급 훈련 07 - 반복하기 Reviewed by Tae-seob Shin on 10월 07, 2018 Rating: 5

댓글 없음:

Powered by Blogger.