본문 바로가기
[ Program ]/c#스터디

21.반복문1 - for

by 관이119 2021. 9. 26.





반복문은 반복된 작업을 단축해서 표시하는 내용이다.

같은내용을 여러번 반복해서 해야 하는경우 여러번 같은 내용을 써주는 것보다 이내용을 몇번실행해라 라고 명령하는것이 당연히 효율적일것이다.

예를 들면 "출력,출력,출력.... , 출력" 하고 백번 써주는것보다 "출력백번해라" 라고 써주는게 효율이 좋다는 의미이다.

프로그램에서도 반복문은 아주중요하다.

계속 이야기하듯이 분기문과 반복문만 할줄알면 모든 프로그램을 다만들수 있다.

 

반복문은 for , foreach , while 등이 있는데 가장기본적인 for 문부터 알아보자.

 

기본 형식은 다음과 같다.

for(시작값;반복이종료될조건;증감값)

{

     실행할 내용

}

 

시작값은 변수를 입력하면 되고 반복이 종료될조건은 반복문이 종료될 조건을 지정해주면 된다.

증감값은 시작값에서 종료될 조건까지 해당값을 어떻게 증감할지 정해주면 된다.

말이 어려우니 예제를 보자.

 

for (int i = 0; i < 10; i++)
{

     MessageBox.Show("Test");
}

전형적인 예제인데 위와같이 해주면 10번을 test 출력을 해준다.

내용을 하나씩 뜯어보면 다음과 같다.

 

처음 int i = 0 으로 써준 내용은 단순히 int형 변수 i 에 0을 대입한 내용이다.

반복문의 시작값을 지정해줄때는 관습적으로 i 로 지정해준다.

그리고 중간에 있는 i < 10 의 조건은 i 가 10보다 작을때는 계속 실행하라는 의미이며 마지막 i++ 은 i 값에 1을 더해서 다시 대입해주라는 의미이다.

결국 i는 0 부터 시작해서 10보다 작을때는 계속 반복하며 한번 반복될때마다 i 값에 1을 더해준다.

순서대로 보면

i = 0  -> test 출력    - 최초시작시 i 값은 0 이다.

i = 1  -> test 출력    - i++ 에 의해서 i 값이 증가되었다. i 는 1이므로 10보다 작으므로 다시 반복한다.

i = 2  -> test 출력    - i++ 에 의해서 i 값이 증가되었다. i 는 2이므로 10보다 작으므로 다시 반복한다.

i = 3  -> test 출력    - i++ 에 의해서 i 값이 증가되었다. i 는 3이므로 10보다 작으므로 다시 반복한다.

i = 4  -> test 출력    - i++ 에 의해서 i 값이 증가되었다. i 는 4이므로 10보다 작으므로 다시 반복한다.

i = 5  -> test 출력    - i++ 에 의해서 i 값이 증가되었다. i 는 5이므로 10보다 작으므로 다시 반복한다.

i = 6  -> test 출력    - i++ 에 의해서 i 값이 증가되었다. i 는 6이므로 10보다 작으므로 다시 반복한다.

i = 7  -> test 출력    - i++ 에 의해서 i 값이 증가되었다. i 는 7이므로 10보다 작으므로 다시 반복한다.

i = 8  -> test 출력    - i++ 에 의해서 i 값이 증가되었다. i 는 8이므로 10보다 작으므로 다시 반복한다.

i = 9  -> test 출력    - i++ 에 의해서 i 값이 증가되었다. i 는 9이므로 10보다 작으므로 다시 반복한다.

i = 10 -> i 값이 10보다 작지않으므로 반복문이 종료된다.

 

결국 위 예제는 총 10번의 test 를 출력하고 종료된다.

 

간단한 예제를 하나 해보자.

1부터 10까지의 합계를 구하는 프로그램을 만들려고하면 어떻게 하면 될까?

아래 내용을 보기전에 개인적으로 한번 생각해보자.

 

<예제1 - 반복문사용안함>

int result = 0;

result += 1;

result += 2;

result += 3;

result += 4;

result += 5;

result += 6;

result += 7;

result += 8;

result += 9;

result += 10;

 

MessageBox.Show(result.ToString());

 

<예제2 - 반복문사용>

int result = 0;

for(int i =1;i<=10;i++)

{

     result += i;

}

MessageBox.Show(result.ToString());

 

위두개의 예제는 동일한 결과값을 반환한다.

위내용들은 이해 됐을걸로 생각된다.

 

다시 다른 많이 사용하는 예제를 보자.

for (int i = 10; i > 0; i--)
{

     MessageBox.Show("Test");
}

위와 같은 예제를 해도 test 가 10번 실행된다.

위예제는 설명 하면 i 의 최초값은 10에서 시작해서 i 가 0보다 크다면 1씩 줄여주면서 0이 되는 순간 반복문이 종료되는 내용이다.

위 예제로 1부터 10까지 합계를 만들어서 출력해보자. (숙제추가)

 

 

또다른예제를 보자.

다음예제는 10이하의 숫자중 3의배수인 숫자들의 합계를 구하는 프로그램이다.

int result = 0;

for (int i = 0;i<=10;i+=3)

{

    result += i;

}

MessageBox.Show(result.ToString());

 

설명하면 i 는 0 부터 시작해서 10보다 작을때까지 3씩 추가하며 각각의 값을 result 에 더해준다.

 

다시 처음으로 돌아가서 for 문의 형식을 보자.

for(시작값;반복이종료될조건;증감값)

{

     실행할 내용

}

위형식이 이제 내용이 이해될것이다.

시작값은 어떤형태의 변수든 들어올수 있고 , 종료될 조건과 증감값도 원하는 내용을 넣을수 있다.

 

반복문은 중첩으로도 사용할 수 있다.

for(시작값;반복이종료될조건;증감값)

{

    for(시작값;반복이종료될조건;증감값)

    {

         실행할 내용

    }

}

중첩으로 보면 내용이 어려울수 있으니 다른 예제를 또 확인해보자.

for( int i =0;i<10;i++)

{

     for( int k = 0;k<10;k++)

     {

          MessageBox.Show("Test");

     }

}

위예제는 test가 100번출력될것이다. 실행하지는 말자.

설명하면 다음과같다.

i - 0 , k - 0 

i - 0 , k - 1

i - 0 , k - 2

i - 0 , k - 3

i - 0 , k - 4

i - 0 , k - 5

i - 0 , k - 6

i - 0 , k - 7

i - 0 , k - 8

i - 0 , k - 9

i - 1 , k - 0

i - 1 , k - 1

i - 1 , k - 2

i - 1 , k - 3

i - 1 , k - 4

i - 1 , k - 5

.

.

.

i - 9 , k - 5

i - 9 , k - 6

i - 9 , k - 7

i - 9 , k - 8

i - 9 , k - 9

실제로 위와같이 반복된다.

위에서 변수를 외부 for문은 i 내부 for 문은 k 를 사용했는데 둘다 같은 변수를 사용해서는 안된다.

만약 아래와 같이 외부for문과 내부 for문에 둘다 같은변수를 사용한다면 비정상작동할것이다.

for( int i =0;i<10;i++)

{

     for( int i = 0;i<10;i++)

     {

          MessageBox.Show("Test");

     }

}

위와 같은 예제는 아래 그림1과 같이 에러가 난다.

그림1

 

같은변수를 두번 선언해서 발생하는 에러인데 결국 이렇게 빌드할수도 없다.

만약위와같은형태로 같은 변수를 써서 해보고싶다면 아래와 같은 형태로 테스트를 할수는 있다.

참고로 아래처럼 외부에 변수를 지정한 후에 for 문에서 사용할수도 있다.

int i =0;

for( i =0;i<10;i++)

{

     for( i = 0;i<10;i++)

     {

          MessageBox.Show("Test");

     }

}

단, 위와 같이 만들경우 test 10번만 출력하고 끝날것이다.

결국 아무의미 없는 소스가 되버린다.

 

위와같이 중첩 반복문을 사용할때 앞에서 배운 반복문도 같이 사용가능하다.

아래 예제도 보자.

for( int i =0;i<10;i++)

{

     if ( i == 9)

     {

        MessageBox.Show(i.ToString());

     }

}

위예제는 i 가 0에서 시작해서 10보다작을때 계속 1씩 더하면서 i 가 9일때 i 값을 출력한다.

 

오늘 배운내용들을 정말로 수없이 반복연습해야한다.

꼭 많은 연습을 하기바란다.

 

***숙제 : 1. 본문내용중 숙제라고 해놓은것 할것 , 2. 구구단을 9단부터시작해서 1단까지 출력해볼것(아래그림2,3 참조)

그림2


그림3

 

댓글