<기본 패턴1>
1. 조건식을 검사합니다.
1.1 조건식이 참일때 블록 시작점 '{'에서 부터 시작하여
문장(들)을 실행하며 블록의 끝 부분 '}' 만나게 되면
1 번으로 이동합니다.
1.2. 조건식이 거짓일때 블록을 빠져 나갑니다.
while (조건식) // 마지막에 ;(세미콜론)을 해서는 절대 안된다.
{
문장;
}
예1-1)
int sum = 0;
int i = 0;
while (i < 100)
{
//sum += ++i;
i = i + 1;
sum = sum + i;
}
printf("1~100까지 합은 %d 입니다.\n", sum);
예1-2) 오류를 찾아라!
int sum = 0;
int i = 1;
while (i <= 100)
{
//sum += ++i;
i = i + 1;
sum = sum + i;
}
printf("1~100까지 합은 %d 입니다.\n", sum);
<기본 패턴2>
1. 블록 시작점 '{'에서 부터 시작하여 문장(들)을 실행하며
블록의 끝 부분 '}' 만나게 되면 조건식을 검사합니다.
1.1 조건식이 참일때 1 번으로 이동하여 반복하게 됩니다.
1.2.조건식이 거짓일때 블록을 빠져 나갑니다.
do
{
문장;
} while (조건식); // 마지막에 ;(세미콜론)을 추가하는 것을 잊지 말자!
예1-1)
#include <stdio.h>
void main()
{
int sum = 0;
int i = 0;
do
{
sum += ++i;
} while (i < 100);
printf("1~100까지 합은 %d 입니다.\n", sum);
}
예1-2)
#include <stdio.h>
void main()
{
int sum = 0;
int i = 1;
do
{
sum += i++;
} while (i <= 100);
printf("1~100까지 합은 %d 입니다.\n", sum);
}
break
break문을 만나면 해당 while문의 루프를 탈출하라는 의미이다.
즉 while문 밖으로 탈출한다.
for 문에서도 해당 for 문의 루프를 탈출하라는 의미이며,
switch ~case 문의 break와는 구분되어야 한다.
continue
continue문은 continue문 이하의 문장은 실행하지 않고 블록의 끝(})으로 가서 다시 반복한다. 결론적으로 while문이 앞쪽 또는 뒷쪽의 위치와 상관 없이 while문의 조건식으로 돌아간다.
예)
#include <stdio.h>
void main()
{
int sum = 0;
int i = 0;
do
{
sum += ++i;
continue;
printf("I am Neo ");
} while (i < 100);
printf("1~100까지 합은 %d 입니다.\n", sum);
}
contiune 문에 의해서 조건식 while (i < 100) 로 이동하며
printf("I am Neo "); 문장은 실행되지 않는다.
<실습1> 1~100 까지 홀수의 합을 구하시오!
<실습2> 1~100 까지 2의 배수가 아니면서 3의 배수가 아닌 수의 합을 구하시오!
<실습3> 달팽이 문제
3M(300cm) 우물에 빠진 달팽이가
낮에는 55cm 올라가고
밤에는 13cm 내려간다.
과연 달팽이는 1주일(7일) 전에 우물을 탈출할 수 있을까?
달팽이 위치: x
걸린 일수 : day
1. x = 0, day =0
2. x = x + 55
3. x <= 300 ?
3.1 true 4.번으로 이동
3.2 false 7번으로 이동
4. x = x - 13,
5. day = day + 1
6. 2번 반복
7. 출력 x, day
8. 종료
위 순서도를 아래처럼 이해할 수 있다.
x = x + 55;
while ( ...)
{
...
x = x + 55;
}
<변형 패턴1>
생각해보기: 아래와 같은 논리 흐름일 경우, 어떻게 하면 while 문을 이용해서 처리할 수 있을까?
<변형 패턴2>
생각해보기: 아래와 같은 논리 흐름일 경우 어떻게 하면 while 문을 이용해서 처리할 수 있을까?