2012년 10월 7일 일요일

문장의 반복을 해주는 문항(while문,do~while문,for문)

이번 포스트는 반복을 하게 해주는 문항을 소개하고자 합니다.

1.먼저 반복문이란?

말 그대로 "Hi"란 문장을 반복시키고 싶을 때 쓰는 문항인데.

반복문을 만드는 방법엔 총 세가지가 있습니다.

제목과 같이 while문 do~while문 for문 이렇게 세 가지.

2.while문

while문은 특정 영역을 계속 반복하는 문입니다.

예를 보시겠습니다.

int main(void)
{
int tender=0 // 꼭 0이 아니어도 됩니다.

while(tender<5) //0부터 4번째까지 반복(소괄호안이 참이면 반복, 거짓이면 반복 종료)
{
printf(www.Beomicollection.blogspot.com);
tender++; // 0번 째를 출력하면 1번 째를출력, 1번 째를 출력하면 2번 째를출력....
}

이렇게 쓰는 것입니다. 어떻게 생각하면 알고리즘이라고 할 수도 있겠습니다.

실험으로 자세히 알아보겠습니다.


왜 마지막번호가 99인데 왜 100번이냐면 시작은 0부터 시작해서그렇습니다.

예와 똑같이해서 딱히 설명할 것은 없네요.
그런데 여기서 주의할 것은.

출력함수 다음줄에 ++연산기호를 주석처리하거나 쓰지 않으면 무한 반복이 된다고 하네요 ㅋㅋㅋ.

이를 무한루프라고도 합니다.

궁금해서 해봤습니다 ^^; 
정말로 계속 저 문장만 반복되더군요 ㅋㅋㅋ;


그리고 예제처럼 while함수 다음 중괄호({})를 쓰지 않아도 됩니다.

이렇게요
ex)
while
printf("편한데?"), tender++;

그런데, 이건 억지로 줄인것이라 중괄호를 쓰는 것이 좋다고 합니다.

3.do ~ while문

do ~ while문은 처음에 반복조건을 만족하지 못하면 아예 실행을 하지 않는 while문과는 달리, 반복영역을 최소한 한번 실행하는 함수입니다.

이렇게 설명하면 이해안되실 분들이 계실테니(나도지만), 예문보시면서 이해를 돕도록 하겠습니다.


do
{
printf("www.beomicollection.blogspot.com");
tender++;  //
} while(tender<5); //만약 이 반복조건이 만족하지 못해도 최소 한번은 블로그주소를 출력합               니다.

위 코드는 do~while문의 정석 코드입니다. do다음 중괄호영역이 반복 구간이고 중괄호 다음 while부분이 반복조건입니다.

그런데, do ~ while문보다는 while문을 더 많이 씁니다.

왜냐하면, 조건이 앞에있으면서 이해하기도 쉽기 때문입니다.

하지만 while문 보다 do while문이 더 자연스러운 코드도 있습니다.
(아직 거기까지 깊게 들어가지않았으니 이정도만 설명하겠습니다.)

3.for

예전에 어떤 코드를 위해서 for함수에대해 언급한적이 있었을겁니다.

그런데 이번엔 제대로 설명할 기회가 되었습니다.

우선, for함수를 이해하기전에 while문의 방식을 순서대로 꼽아 for설명과 연결시켜 자연스레 설명해보겠습니다.

우선 while문 예제입니다.

ex)
int 변수=0;         //1반복을 위해 변수 저장
while(변수<5);   //2반복을위해 반복조건 선언
{
printf("www.beomicollection.blogspot.com");
변수++;   //3반복조건의 거짓을 위해 변수 증감식 선언
}

끝;

위에서와 같이 반복을 위해 조건 1,2,3이 필요한데요. 그런데 조건들이 다 따로따로 흩어져있어서, 긴 코드를 작성하는데는 오래걸릴겁니다.

그래서 위 조건 3개를 한 곳에 모으는 함수가 생긴겁니다.

그 함수는 이름하여 for함수.

쓰는 양식은 이러합니다.
{
for(변수, 조건, 증감)
{
-------함수칸-------;
}
}
while문 보다 훨씬 짧아졌음을 알 수 있습니다.

예를 보시겠습니다.

ex)
for(tender=0; tender<5; tender++)
{
printf("www.beomicollection.blogspot.com");
}

return 0;

맨 위에 while예제와 같습니다.

이상으로 포스트를 마치겠습니다.

댓글 없음:

댓글 쓰기