while 반복문은 for문에 비해서 구조가 간단하다.
while (조건문) {실행문1;…실행문n;} |
while 명령 바로 다음에 오는 조건문이 참이면 중괄호 안의 명령어들이 수행되고 거짓이라면 while 문을 빠져 나가게 된다. 만약 조건이 참이어서 실행문들이 다 수행되고 난 후에는 다시 조건문을 검사하여 참이면 다시 수행한다.
조건문이 참이면 소속된 실행문을 수행하므로 다음 예는 무한 루프에 빠지게 된다.
while (1) {printf(“hi\n”);} |
반면에 다음과 같은 반복문은 절대로 수행되지 않는다. 조건이 항상 거짓(0)이기 때문이다.
while (0) {printf(“bye.\n”);} |
화면에 문자열 “hi”가 딱 10 번만 출력 되게 하려면 다음과 같이 외부 변수를 이용해야 할 것이다.
int icnt = 0;while (icnt < 10) {printf(“hi\n”);icnt++;} |
위의 프로그램은 다음과 같이 조금 더 간략하게 작성할 수 있다. while 반목문에 속한 실행문이 하나일 경우 중괄호를 생략할 수 있다.
int icnt = 0;while (icnt++ < 10)printf(“hi\n”); |
다음 예제는 1부터 100까지의 합을 구하는 것을 while문으로 구현한 것이다.
int ia = 1, isum = 0;while (ia <= 100) {isum += ia;ia++;} |
for문에서의 초기실행문이 while문 바깥에 나와있다. 그리고 변환식은 while문 안으로 들어가 있다. 이 예제는 다음과 같이 간결하게 만들 수 있다.
int ia = 1, isum = 0;while (ia <= 100)isum += ia++; |
반복문이 하나의 명령이라면 중괄호를 생략할 수 있다. 단항연산자 ++가 ia뒤에 붙었으므로 먼저 isum변수에 ia값을 더한 후 1이 증가함에 유의하자. 만약
isum += ++ia; |
이렇게 바뀌면 어떻게 동작을 할 지 생각해 보라. 단항연산자 ++, --의 동작에 대해서 한 번 더 이해가 갈 것이다.
또 다른 예로 1부터 숫자를 더해나갈 때 어느 수까지 더하면 10000이 처음으로 넘는지를 알아내는 프로그램을 작성해 보자. 이 경우 while 반복문을 사용하면 다음과 같이 간단하게 작성할 수 있다.
#include <stdio.h>int main(void){int ia=0, isum=0;while(isum < 10000)isum += ++ia;printf("Sum from 1 to %d is %d.\n", ia, isum);} |
Sum from 1 to 141 is 10011. |
이 예제에서는 ia=0으로 초기화 시킨 다음에 isum += ++ia 와 같이 ++연산자를 ia앞에 붙였다. 이렇게 해야만 정확한 결과가 얻어진다는 것을 유의해야 한다. (왜인지 생각해 보자.)
C++ 강좌 전체 목록 >>>
댓글 없음:
댓글 쓰기