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

24.반복문2 - while , foreach

by 관이119 2021. 10. 9.

배열과 반복문은 상당히 밀접한 관계가 있어 둘을 병행하면서 진행중이다.

이전에 for 문을 배웠는데 내용은 알고 있을거라고 생각한다.

 

for 문 외에도 while 과 foreach 는 상당히 자주 사용된다.

 

while 문 같은 경우는 기본이 무한반복이다.

기본 형식은 다음과 같다.

while(조건)

{

    실행내용

}

 

10보다 작은 양의 정수를 출력하는 예제를 보자.

int i = 1;

while(i<10)

{

      MessageBox.Show(i.ToString());

      i++;

}

위 예제의 경우 i 가 최초 1이다.

1 < 10 은 참이기 때문에 내부 내용을 실행한다.

1을출력하고 i 를 ++ 해준다.

다시 처음으로 돌아가면 i 가 2이다.

2< 10 은 참이기 때문에 내부 내용을 실행한다.

2를출력하고 i 를 ++ 해준다.

 

이런식으로 i가 10보다 작으면 계속 실행하게 된다.

그런데 이게 막상 프로그램을 짤때 보면 좀 헷갈린다.

조건을 지정해줄려면 다 생각하고 만들어야 하기때문에 나는 대체로 다음과 같이 사용한다.

int i = 1;

while(true)

{

     if (i<10)

     {

          MessageBox.Show(i.ToString());

          i++;

     }

     else

     {

           break;

     }

}

 

첫번째 코드와 완전히 같은 의미인데 while(true) 할경우 무한루프를 시작한다.

그리고 특정조건이 되면 break 를 해주면 while 문을 빠져나가게 된다.

개인적인 취향이기때문에 위쪽 코드를 쓰던 아래쪽 코드를 쓰던 상관은 없다.

단 아래쪽 코드를 사용할경우 break 를 깜빡하면 무한루프를 돌기때문에 어떤형태이든 while 문을 빠져나갈수 있게 만들어줘야한다.

 

앞장에서 한 예제를 보면 배열에 1~100 까지 숫자를 넣는 부분을 while 을 사용해서 만들어보면 아래와 같다.

int [] ar = new int[100];

int n = 0;

while(true)

{

      if(n<100)

      {

           ar[n] = n+1;

      }

      else

      {

            break;

      }

}

 

코드는 이해 될거라고 생각하고 넘어간다.

while 외에 do while 문도 있는데 해당구문은 막상나도 실제로 쓴적은 없다.

아래 링크에서 어떤내용인지만 읽어보자.

www.csharpstudy.com/CSharp/CSharp-looping.aspx

 

C# 반복문 - C# 프로그래밍 배우기 (Learn C# Programming)

C# for 반복 구문 C# for 문은 루프 안에 있는 문장들을 반복적으로 실행할 때 사용한다. for 루프는 일반적으로 카운터 변수를 이용해 일정 범위 동안 for 루프 안의 블럭을 실행한다. 다음 예제는 0

www.csharpstudy.com

 

다음으로 foreach 문을 알아보자.

해당구문도 엄청 자주 사용되는데 기본형식은 다음과 같다.

foreach(형식 변수명 in 대상)

{

}

 

간단한 예제로 확인해보자.

int[] ar = {1,2,3};

foreach(int n in ar)

{

     MessageBox.Show(n.ToString());

}

 

ar 이라는 배열에 1,2,3 이 들어가있는데 해당 원소들에 대해서 모두 int n 이라는 변수에 담아서 출력한다는 의미이다.

위 코드는 아래와 같이 써도 같은 의미가 된다.

 

int[] ar = {1,2,3};

foreach(var n in ar)

{

     MessageBox.Show(n.ToString());

}

 

int 나 string 등 형식을 일일이 지정해주지않고 var 라고 쓰면 대상의 원소의 형태로 컴파일러가 알아서 지정해준다.

즉위코드 두개는 완전히 동일하게 작동한다.

 

분기문 , 반복문 , 배열등은 상당히 중요하다.

언어관계없이 어디든 쓰이기때문에 계속 반복해서 연습하기 바란다.

 

***숙제 : 1 ~ (50보다큰 첫번째7의 배수의 숫자)     까지의 합계를 구하는 프로그램을 만들어보자.

'[ Program ] > c#스터디' 카테고리의 다른 글

26.구구단출력기 만들기  (0) 2021.10.09
25.사칙연산기 만들기  (0) 2021.10.09
23.배열2  (0) 2021.10.09
22.배열1  (0) 2021.09.26
21.반복문1 - for  (0) 2021.09.26

댓글