본문 바로가기
언어/C++

[C++ 기본 공부정리] 4-1. 제어문-조건문

by 민-Zero 2019. 11. 17.

공부 내용을 정리하는 목적 이므로 참고용으로만 읽어 주시기 바랍니다.

틀린 부분에 대한 지적은 감사합니다.

제어문 이란 프로그램에서 순차적인 흐름을 통제하는 방법이다. 코드는 위에서부터 아래로 순차적으로 진행되게 되는데 그 순서를 조절할 수 있도록 하는 코드인 것이다.

그중 조건문은 설정한 조건에 따라 코드의 실행 여부를 결정할 수 있게 만들어 주는 제어문이다. 

2019/11/15 - [언어/C++] - [C++ 기본 공부정리] 3-2. 연산자(operator)

 

[C++ 기본 공부정리] 3-2. 연산자(operator)

공부 내용을 정리하는 목적 이므로 참고용으로만 읽어 주시기 바랍니다. 틀린 부분에 대한 지적은 감사합니다. 5. 논리 연산자(logical operator) 논리 연산자는 주어진 논리식에 대해 참(true)과 거짓(false)을..

min-zero.tistory.com

이전 글에 나와 있는 삼항 연산자를 통해 조건문의 효과를 만들어 낼 수 있지만 다양한 조건이 필요할 경우 if문을 사용해야 하는 상황이 생기게 된다.

 

1. if문

문법)

if (조건){

    실행 코드;

}

으로 구성되어 있으며 if문의 조건에 대해 true일 경우에 {}스코프 안의 코드를 실행하게 된다. 예를 들어

위의 경우 num변수에 9라는 값을 저장하였고 if 조건을 보면 num의 값이 10일 경우에 {} 안의 코드가 실행되게 된다.

하지만 num 변수에는 10과 다른 값이 들어가 있으므로 {} 안의 코드는 진행되지 않고 if문 순차적으로 다음 아래 코드로 넘어가는 것을 확인할 수 있다.

또한 if문이 설정한 조건이 true일 경우 {} 안의 코드가 실행되므로 조건문 안에 false를 의미하는 0을 넣을 경우 무조건 실행되지 않음을 확인할 수 있다.

 

2. if else문

문법)

if (조건){

    실행 코드;

}

else {

    실행 코드;

}

if문 만을 사용할 경우 조건에 만족하지 못했을 때 실행코드를 따로 분리할 수 없는 경우가 생긴다.

위의 경우 조건을 만족하지 못했을 때의 코드가 if문 밑에 존재해서 원치 않게 실행이 되는 경우 인대 이럴 때 else문을 사용하여 false경우에 대한 조건을 분리하여 코드를 작성할 수 있다.

else구문을 추가하였기 때문에 num이 10의 값이 아닌 모든 경우에 대해서만 "10이 아닙니다."라는 문장이 출력되도록 분리할 수 있다.

 

3. else if 문

그렇다면 다양한 조건이 필요한 경우 if문을 여러 번 사용해도 되지만 좀 더 간결하게 작성하기 위해 여러 조건에 대해서 else if문을 사용하여 작성할 수 있다.

문법) 

if (조건 1) {

    실행 코드;

}

else if (조건 2) {

    실행 코드;

}

else if (조건 3) {

    실행 코드;

}

....

else {

    실행 코드;

}

이때의 경우 조건 1을 만족하지 못하면 조건 2를 비교 만족할 경우 코드를 실행하고 그렇지 못하면 다음 조건 3을 비교 이 과정이 계속 진행되다가 조건 1,2,3,... 모든 조건을 만족하지 못할 경우 else의 코드를 실행하게 된다.

 위의 경우 첫 번째 조건인 1과 3 사이를 만족하지 못하므로 다음 조건을 확인 4 이상 6 이하의 값을 만족하므로 else까지 넘어가지 않고 else if 구문의 코드를 실행한 모습이다.

 

4. switch문

switch문은 else if문과 비슷한 역할을 하지만 조건에 대한 선택지가 주어져 있을 경우 사용하는 경우가 대부분이다. 예를 들어 1번을 입력하면 게시판 2번을 입력하면 사진첩과 같은 경우이다.

또한 조건이 많을 경우 else if문 보다 가독성이 좋고 같은 프로그램을 만 들 경 우 최적화의 차이로 인해 구동 속도가 else if문 보다 빠르다는 장점을 지니고 있다. 하지만 switch의 경우 조건문에 int형으로 변경할 수 있는 char, short, int형 등을 사용해야 하는 점 때문에 if문 보다 사용 가능성이 적다.

문법)

switch (조건) {

    case 값 1:

        실행 코드;

        break;

    case 값 2:

        실행 코드;

        break;

....

    default:

        실행 코드;

        break;

}

조건에 알맞은 값을 가지고 있는 case의 코드를 실행하게 되며 알맞는 값이 없을 경우 default에 있는 코드를 실행하게 된다 else와 같은 역할이라고 생각하면 된다.

break;라는 것이 추가되었는데 이 코드를 실행하게 될 경우 해당 제어문 자체를 종료시키게 되는 코드이다. switch의 경우 모든 case가 같은 범위 내에 존재하기 때문에 break;가 사라질 경우 값을 만족하는 case부터 제일 밑에까지 순차적으로 실행되기 때문에 만족하는 조건에서 종료시키기 위해 break;를 꼭 걸어주어야 한다.(default는 그 자체가 다른 조건이 걸려 있으므로 실행되지 않음)

위의 경우 switch 조건에 변수 자체가 들어갔지만 만약 메뉴를 만들고 메뉴에 없는 번호일 경우 실행 자체를 안 하기 위해 num대신 1 <=num && num <=3을 입력하는 것 또한 가능하다. 

다음에 num변수를 확인 case에 해당하는 값과 num을 비교하여 맞는 case에 해당하는 코들를 실행하게 된다. num이 6의 값을 가지고 있는대 case의 값인 1 2 3과 일치하지 않으므로 default구문의 코드를 실행하게 되는 모습이다.

댓글