(1) while
지난 강좌에서 if에 대해 알아보았다.
if는 코드에 조건을 삽입해 그 조건이 성립할 때만 지정된 코드를 실행하는 제어문이었다.
while도 if처럼 그 이름에서 기능을 유추할 수 있다.
~하는 동안.. 그렇다.
while은 특정 조건이 성립하는 동안 코드를 실행한다.
아래 코드를 보자.
#include <stdio.h>
int main() {
int a = 10;
while(a > 0) {
printf("a is %d\n", a);
a--;//감소 연산자를.. 기억해야 한다
}
}
a의 초기값은 10이다.
그리고 while의 조건을 보니 a \(> \) 0 이라고 한다.
이 말은, a가 0보다 클 동안 코드를 실행한다는 뜻이다.
여기서 실행되는 코드는 두 줄인데,
printf로 a의 값을 출력한 후
a에서 1을 뺀다.
그러면 a는 9가 된다.
다시 조건을 확인한다. 9 \(> \) 0, 여전히 조건이 성립한다.
그러면 또 다시 printf, a--;를 실행한다.
a가 8이 됐다. 여전히 조건은 성립한다.
...
...
이렇게 쭉 반복하면서 a가 0이 됐을 때
0 \(> \) 0 이라는 식이 성립하지 않게 되면서 while은 종료된다.
실제로 코드를 실행해보면 이렇다.
실제로 while은 이것보다 더 많은 경우에서 쓰일 수 있지만
필자의 커리큘럼 기획 실수로 포스팅으로 다루지 않은 것을 빼면 이것 밖에 설명할 것이 떠오르지 않았..
(1) do - while
방금 말한 것처럼 여기서 설명은 못하지만 while을 쓸 수 있는 경우 중
do - while문을 이용하면 편한 것들이 몇 있다.
do - while은 조건이 성립하냐에 관계없이 일단 무조건 최초 "한 번"은 실행을 하게 되어있다.
이게 무슨 말이냐면
#include <stdio.h>
int main() {
int x = -10;
printf("1 : %d\n", x);
while(x < 1) {
printf("++x!!\n");
++x;
}
printf("2 : %d\n", x);
return 0;
}
이 코드를 보자.
x를 무조건 양수로 만들어주는 코드이다.
이렇게 -10을 넣으면 `++x`가 총 11번 실행되면서 2에서 x는 1로 출력된다.
그런데 이렇게 - 부호를 뺀다면?
x \(<\) 1 이라는 조건이 성립하지 않기 때문에 while에 적힌 코드는 전혀 실행되지 않았다.
그런데 만약 이 코드를 필수로 한 번쯤은 실행을 해야하는 상황이라면? (지금 코드로는 잘 이해하기 어려울 것이다)
이런 방법이 있다.
#include <stdio.h>
int main() {
int x = 10;
printf("1 : %d\n", x);
//그냥 한 번 실행해주면 되지
printf("++x!!\n");
++x;
while(x < 1) {
printf("++x!!\n");
++x;
}
printf("2 : %d\n", x);
return 0;
}
위 사진에서 확인할 수 있듯이 조건은 성립하지 않지만 한 번은 실행이 됐다.
간--단..
하지만 이건 어디까지나 초간단 예제이기 때문에 그렇고 while에서 작성할 코드가 더 길어지면 이것은 눈으로만 보기에도
불편한 에러 사항이 되지 않을 수가 없다.
그럴 때 사용하는 게 do - while이다.
사용법은 아래와 같다.
#include <stdio.h>
int main() {
int x = 10;
printf("1 : %d\n", x);
do {
printf("++x!!\n");
++x;
} while(x < 1);
printf("2 : %d\n", x);
return 0;
}
간--단..
do { } 에 실행할 코드를 적고 뒤에 while의 조건을 적으면 된다.
모양새는 if - else와 비슷한 구조를 띄고 있는 것 같다.
if - else와 마찬가지로 do와 while 사이에는 ';' 을 넣으면 안 되고 while 조건을 쓴 뒤에는 꼭 ';' 을 붙여줘야 한다.
이렇게 하면 코드가 길어져도 보기 편할 것이다.
다음 강좌에서는 for에 대해 알아볼 것이다.
'Programming > C & C++' 카테고리의 다른 글
[C/C++] Win32 API 첫 예제! (0) | 2021.08.24 |
---|---|
[C/C++] 9.3강 - 제어문, 조건 관리하기 (for 사용법) (0) | 2021.08.17 |
[C/C++] 9.1강 - 제어문에서 논리 연산자 사용하기 (if의 사용법) (0) | 2021.07.20 |
[C/C++] 9강 - 제어문, 조건 관리하기 (if의 사용법) (0) | 2021.07.11 |
[C/C++] 8강 - printf의 다양한 사용법 (소수점, 접두사, 여백) (0) | 2021.07.07 |