while 루프를 이용한 반복 처리

반복 처리를 위해 작성된 코드를 루프(Loop)라고 하는데요. 그 첫번째로, while 루프를 공부해볼게요.



강의들은 모두 무료입니다. 단, 저작권은 키클 코딩랩 에 있으며, 무단 복제 및 배포를 엄금합니다.
이를 어길 시, 본 사이트의 서버가 미국에 있으므로, 미국법에 의해 처벌될 수도 있습니다.




while 루프

원하는 폴더/디렉토리를 만들고 gedit 문서 편집기를 이용하여 "lec12_while.c"라는 이름의 C 파일을 만들어 볼게요. 그리고, 아래처럼 표준입출력 라이브러리의 헤더파일을 포함시키고, main 함수의 골격을 만들어 보세요.

lec12_while.c
#include <stdio.h>

int main (int argc, char *argv[ ]) {
}

이제 어떤 코드를 반복해서 실행하는 루프(Loop)를 만들어 볼게요. 반복적인 처리는 실제 코딩을 할 때, 굉장히 많이 사용하는 기법이예요. 사람이 하기 힘들고 지루한 반복적인 일을 컴퓨터에게 맡길 수 있는 방법이니 많이 사용되는 것이 당연하기도 하지요.
C/C++가 지원하는 루프 중 첫번째로 while 루프를 코딩해 볼게요. 그런데, while 루프를 사용하기 전에 비교 연산자에 관해서 먼저 공부해야되요. 왜냐하면, while 루프를 사용할 때, 거의 항상 함께 쓰이거든요.

[문법] 비교 (Comparison) 연산자

이제, 비교 연산자를 알아 보았으니, while 루프에 대해서 알아볼까요?

[문법] while 루프 (Loop)

while 루프를 이용하여 반복처리하는 방법이 어떤 형태로 이루어 지는지 알겠지요?
그럼, 실제로 코딩해보고 프로그램을 실행해 볼까요? 아래처럼, 줄4~줄8을 main 함수 안에 추가하세요.

lec12_while.c
#include <stdio.h>

int main (int my_argc, char *my_argv[ ]) {
	int myvar = 0;
	while (myvar < 10) {
		printf("myvar: %d\n", myvar);
		myvar += 1;
	}
}

줄4에서는, while 루프의 조건에서 사용할 정수형 변수 myvar를 0으로 초기화하면서 선언하고 있지요.
줄5에서는 while 루프의 작성을 시작하고 있어요. 조건문은 "myvar가 10보다 작은가?"를 점검하는 "myvar < 10"이지요.
줄6에서는, 반복되는 코드의 작성을 시작하고 있어요. myvar의 값을 출력하고 있지요. 정수형이기 때문에, 서식 지정자(format specifier)로 %d를 사용하였답니다.
줄7에서는, 할당 연산자 +=를 이용하고 있는데요, myvar의 값에 1을 더하고 다시 그 값을 myvar에 할당하는 것이지요.
한 가지 언급하고 싶은 것은, 위에서 main 함수의 전달인자인 my_argc나 my_argv를 사용한 적이 없기 때문에, 아래 줄3처럼 전달인자가 없는 main() 함수를 사용해도 상관없다는 것이예요.

lec12_while.c
#include <stdio.h>

int main ( ) {
	int myvar = 0;
	while (myvar < 10) {
		printf("myvar: %d\n", myvar);
		myvar += 1;
	}
}




컴파일 후 실행하기

이제, 강의 첫 대면..main 함수에서 했던 것처럼, 파일을 저장하고 gedit 편집기 닫기를 하세요.
그리고, 아래처럼 컴파일 후 실행해 보세요. myvar의 값을 출력하면서 1씩 증가하는 것을 볼 수 있답니다. myvar의 값이 10이 되면, 조건문을 만족시키지 못하기 때문에 "myvar: 9"가 출력된 후 while 루프를 빠져나오게 되지요.

.../my_folder$ gcc lec12_while.c
.../my_folder$ ./a.out
myvar: 0
myvar: 1
myvar: 2
myvar: 3
myvar: 4
myvar: 5
myvar: 6
myvar: 7
myvar: 8
myvar: 9
.../my_folder$

강의에서 작성된 소스 코드 (source code)를 다운받으려면, 다음 링크를 클릭하세요: lec12_while.c

혹시, 이해가 잘 안되는 부분에 대한 질문이 있거나 다루어 줬으면 하는 주제가 있으면, 화면 오른쪽 하단에 "질문하기" 버튼을 이용해 주세요.






발자취

2019-09-11 "키클 코딩랩 - 미국 공학박사 아빠의 코딩 연구소"로 이름 변경
2019-06-28 코딩 교실 공개
2019-03-18 코딩 교실 제작 시작

바로가기
Python 배움터
C/C++ 배움터
About
Contact
Privacy Policy
강의목록
질문하기
처음으로