컴퓨터/C언어 쉽게 배워보자

C언어 강좌 10. 반복해서 실행합시다. 반복문

sdk 2016. 8. 12. 23:20

 안녕하세요 sdk입니다.

이번에 알려드릴건  C언어의 반복문 입니다. 

반복문 하면 무엇이 떠오르시나요?


반복 이라는 단어가 들어갔으니까 어떠한 것을 반복하는데 사용될 것이라고 생각드시나요?


맞습니다.  반복문은 프로그램의 반복 수행을 하기 위한 구문입니다.

아아, 걱정하지 마세요 오늘 배울건 단 5개의 키워드지만 3개는 비슷 비슷 하답니다.


우리가 지금까지 배운거로 Hello World! 를 5번 출력 하려고 하면 어떻게 해야할까요?


#include <stdio.h> int main() { printf("Hello World!\n"); printf("Hello World!\n"); printf("Hello World!\n"); printf("Hello World!\n"); printf("Hello World!\n"); return 0; }

 이처럼  단순히 printf문을 5번 사용하는 방법이 있겠죠?


오늘 배울 것은 저것보단 좀더 세련되게5번 아니, 200번 넘게 Hello World!를 출력할 수 있는 방법입니다.

 

첫번째로 소개시켜 드릴 키워드는 while(조건){ }  입니다. 우선 의미로 설명해 주자면 괄호 안의 조건이 참이면 구문을 실행 하고 반복 한다. 입니다. 


Hello World!를 5번 출력하는 것으로 예시를 먼저 한번 보여드리도록 하겠습니다.

#include <stdio.h> int main() { int i = 0; while (i < 5) { printf("Hello World!\n");

i++;

} return 0; }

코드 설명을 해 드리겠습니다. 우선, include같은 기본적인 부분은 앞선 포스팅에서 많이 설명하였으므로 간략하게 표현 하겠습니다 

프로그램이 실행되고 main 함수에 진입합니다. 그런다음 int 형 변수 i 를 선언하고 0을 저장합니다.

여기서 i는 조건식을 위한 변수입니다.

그 다음 바로 while문이 등장합니다. while(i < 5)의 조건식 i < 5 에서 지금 i는 0을 가지고 있으니까 0 < 5 이므로 조건식은 참입니다.

즉  지금 while (i < 5) 는 while(TRUE) 라고 볼 수 있죠! 따라서, {}안에 있는 구문을 실행합니다.  그 안의 구문은 Hello World를 출력 하는 것 이죠. 한번 출력하고, i의 값을 1증가 시킵니다. 이제 i의 값은 1 입니다.  다시 위의 while 문으로 돌아갑니다.

조건식은 (1<5) 니까 여전히 참입니다. 위 과정을 계속 반복하다가...

조건식이 (5<5)가 되면, 중괄호 안을 실행하지 않고 넘어가 return 문으로 가버립니다.

그림으로 나타내면



...


이 되겠죠.

이해 되시나요?

만약 while(1) 혹은 while(TRUE) 로 해놓는다면 무한정으로 반복하게 되겠죠...!



두번째로 소개드릴 친구는 do~while 문 입니다!

우선 사용 예를 보여드리죠

int i = 0;
 
do 
{
	printf("Hello World!\n"); 
	i++;
} while (i < 5);


첫번째로 소개 시켜드린 일반적인 while문은 조건 검사를 먼저 하고 중괄호 안을 실행하였는데

do ~ while 문은 우선 실행하고 조건검사를 한다는 것 입니다. 즉 일반 while문은

while(false)면 중괄호의 내용을 실행하지 않지만 

do while문은 while(false)여도 일단 한번 실행하고 반복을 결정한다는 것 입니다. 


예를 들어

int i = 6; do  { printf("Hello World!\n");  i++; } while (i < 5);

do while 문과

int i = 6; while (i < 5) { printf("Hello World!\n");

i++;

} return 0;

while문이 있으면

do while 문은 일단 한번 실행되는 그 특성으로 인하여 Hello World!를 출력 하지만

일반 while문은 반복문의 조건문에 걸려 반복문에 진입 하질 못합니다. 즉 프로그램이 꺼지게 되죠.


마지막으론 for 문 입니다

for문은

for(초기식; 조건식; 증감식) {  }  으로 구성됩니다.

초기식은 반복에 사용될 변수를 초기화 하는 구문입니다.

조건식은 반복을 하기위한 조건을 정하는 조건식입니다 ( while()의 저 () 안 입니다 )

증감식은 반복을 위한 변수를 증가, 감소 시키려는 목적으로 존재하며 반복 한번 할때마다 실행됩니다.

for문의 예시 Hello World! 5번 출력 하는것을 보여드리도록 하겠습니다.

int i = 0; for (i = 0; i < 5; i++) { printf("Hello World!\n");  }

여기서 , i = 0 ; 이 초기식 i < 5 이 조건식 i ++ 이 증감식 입니다.

 좀더 대화식으로 풀면 

나는 for문을 선언할껀데, 반복에 사용될 변수 i 를 0으로 초기화 하고, 조건을 확인한다음에 반복 구문을 실행시켜 그리고 다 끝나면 증감식을 실행하고 다시 반복 조건으로 넘어가게 해 

입니다

while문과 다르게 이녀석은 반복문 안에 조건식을 위한 증가 식이 없죠? 그게 저기 증감식에 들어가 버린것 입니다!!

위와 똑같은 실행결과를 내놓는 구문은 첫번째로 소개시켜드린 while 문의 예제 코드입니다. 


비교해 보시면 알겠지만 for문은 while문에서 사용된 조건식이 단순 증가로 처리되는 경우를 좀더 간결하게 나타내도록 해줍니다.


여기서 질문 하실수 있는게, for문이 더 간결하고 좋아보이는데 왜 while문이 있는가? 

일텐데요, 사실 for문과 while문은 두 사용처가 명확히 구분되기 보단 어느 상황에 사용하면 좀더 간결하고 편해집니다. 

물론 이 두 차이는 계속 코딩을 해보다 보면 언젠간 알게 될 것으로 크게 걱정하지 않으셔도 됩니다만 

두차이를 제가 말해드리자면


for문은 반복의 횟수가 정해져 있는 경우에 주로 사용되구요 

while문은 그 반복문의 조건식이 for문처럼 명확히 증감식에 의하여 결정되지 않을때 사용됩니다.

 둘다 쓰입니다!! !! 명심해주세요!

( 저도 C언어 처음 접했을땐 모든걸 for문으로 작성하는 버릇이 있었답니다.)

do while문은 상황에 따라 쓰이고 안쓰이고가 결정되니 큰 걱정 안하셔도 되고


자, 이제 남은 2개의 키워드에 대하여 말해드리도록 하겠습니다.

첫째는 break구문입니다. 

break구문은 반복문을 탈출해라! 라는 뜻으로, 반복문 안에서 break를 만나면 반복문을 탈출 합니다.'

예시입니다.


while (1)
{
	printf("Hello World!\n");
 
	break;//여기서 무조건 반복을 멈춥니다.
 
 
	printf("Hello World! 2 \n");
}

설명을 하자면  while(1) 은 무한 반복을 의미합니다. 그리고 printf문에 의하여 Hello World! 를 출력하죠, 그다음 등장하는 

break 문에 의하여 반복문을 탈출합니다

따라서 아래에 있는 printf문은 실행되지 않습니다.


break 구문은 나중에 배울 조건문과 결합하여 사용되기도 합니다. 우선은 그냥 반복문을 탈출한다!! 라고 생각 하시면 되겠습니다.


마지막은  continue 입니다.

반복문을 실행하다 continue문을 만나게 되면 아래에 있는 코드는 실행 됮 않고, 반복 조건을 확인합니다. 

for문의 예시입니다.

for (int i = 0; i < 5; i++) { printf("H1 \n"); continue; printf("H2 \n"); }

for문안에서 continue를 만나는 순간 다시 반복 조건으로 돌아가는데, 여기선 증감식이 적용됩니다. 즉 continue를 만나게 되면 증감식이 1회 실행이 되고 조건식을 만나게 된다는 이야기죠. 따라서 위 프로그램의 실행 결과는

H1이 5번 출력되는것 입니다.

while문에서의 continue의 예시입니다.

while (i < 5)
{
	printf("D1 \n");
	continue;
	printf("D1 \n");		
	i++;
}


위처럼 while문은  증감식이 continue 구문 밑에있다면, 그 증감식이 실행되지 않고 조건을 확인하러 가게 됩니다. 물론 위에 있다면 실행하겠죠.


이처럼 continue 문은 반복문 중간에서 반복 조건을 확인하고 실행하도록 하기 위하여 존재합니다.


이해 안되시는건 댓글로 물어보시고,

이번 포스팅 여기서 마칠게요.




여러분들의 댓글은 큰 힘이됩니다 :)