' [C/C++] 9.2강 - 제어문, 조건 관리하기 (while 사용법)

Programming/C & C++

[C/C++] 9.2강 - 제어문, 조건 관리하기 (while 사용법)

mdisprgm 2021. 8. 1. 23:03
728x90

(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에 대해 알아볼 것이다.

728x90

'