더듬이의 헬로월드

Hello, World!

프로그래밍 언어/C++ [기본]

[C++기본] 4.조건문과 삼항연산자

더듬이 2021. 8. 24. 22:36
728x90

조건문이란?

[출처]https://commons.wikimedia.org/wiki/File:If-Then-Else-diagram.svg

참과 거짓에 따라 문장들을 나누어서 실행하는 것이다!

프로그래밍에서 가장 많이 쓰인다!


if~else 구문

  int a = 100;
    int b = 200;

    if (a==b) {
        cout << "a와 b는 같다" << endl;
    }

만일 if뒤의 소괄호 안의 값이 참(True)라면 중괄호 안의 문장들을 실행하라는 뜻이다.

위의 경우에서는 만일 a와b의 값이 같다면 "a와 b는 같다"가 출력될 것이다.

하지만, 이외의 경우에는 다른 문장을 실행시키고 싶을 때는 어떻게 해야 할까?

        int a = 100;
    int b = 200;

    if (a == b) {
        cout << "a와 b는 같다" << endl;
    }
    else {
        cout << "a와 b는 다르다" << endl;
    }

if문과 연결해서 else를 써주면 해결된다.

맨 위의 if문을 통과하지 못한 모든 경우는 아래 else문이 실행된다.

if문을 두번 쓰는 것보다 이렇게 쓰는 것이 깔끔할 것이다.

비교할 범위가 많다면???
위의 경우에서는 a와 b가 같던지, 다른던지 두가지 경우의 수 밖에 없다.
경우의 수를 더 늘리고 싶다면 어떻게 해야할까?

int a = 100;

    if (a>500) {
        cout << "a는 500보다 크다" << endl;
    }
    else if (a > 300) {
        cout << "a는 300보다 크다" << endl;
    }
    else if (a > 200) {
        cout << "a는 200보다 크다" << endl;
    }
    else if (a > 100) {
        cout << "a는 100보다 크다" << endl;
    }
    else {
        cout << "a는 100 이하다" << endl;
    }

이럴 떄 필요한것이 바로 else if문이다.

위의 경우에 프로그램은 맨 위 if문부터 차례로 검사하여 참인 문장을 만난다면

그 구문의 괄호 안의 문장을 실행하고, if~else문 자체를 빠져나오게 된다.

(만일 참인 문장을 만나지 못한다면 마지막 else문을 실행)

⇒따라서 if~else문의 여러 구문 중 하나만을 실행하게 된다!


Switch~Case문

Switch

Case문은 if

else문과비슷하면서도 다른 구문이다.

입력변수를 하나 지정해두고 , 그 입력변수와 맞는 케이스의 구문을 찾아서 실행하게 된다!.

int month = 12;

    switch (month)
    {
    case 1:
        cout << "겨울" << endl;
        break;
    case 2:
        cout << "겨울" << endl;
        break;
    case 3:
        cout << "봄" << endl;
        break;
    case 4:
        cout << "봄" << endl;
        break;
    case 5:
        cout << "봄" << endl;
        break;
    case 6:
        cout << "여름" << endl;
        break;
    case 7:
        cout << "여름" << endl;
        break;
    case 8:
        cout << "여름" << endl;
        break;
    case 9:
        cout << "가을" << endl;
        break;
    case 10:
        cout << "가을" << endl;
        break;
    case 11:
        cout << "가을" << endl;
        break;
    case 12:
        cout << "겨울" << endl;
        break;
    default:
        cout << "모르겠음" << endl;
        break;
}

지정변수 month에 값에 따라 맞는 case를 찾아가서 실행하게 된다.

모든 Case에서는 break를 통해 탈출해야 한다.

만일 break가 없다면 구문이 계속 실행되기 때문이다.

마지막에서는 else와 같은 역할을 하는 default를 문을 작성해야한다.

만일 맞는 Case가 없다면 실행되어야 한다.

하지만 너무 복잡해 보이지 않은가?
같은 결과는 같은 케이스로 묶을 수 있다!

int month = 12;

    switch (month)
    {
    case 1:
    case 2:
    case 12:
        cout << "겨울" << endl;
        break;
    case 3:
    case 4:
    case 5:
        cout << "봄" << endl;
        break;
    case 6:
    case 7:
    case 8:
        cout << "여름" << endl;
        break;
    case 9:
    case 10:
    case 11:
        cout << "가을" << endl;
        break;
    default:
        cout << "모르겠음" << endl;
        break;
        }

훨씬 깔금하게 이런식으로 묶을 수도 있다.


삼항 연산자

[출처]https://dojang.io/pluginfile.php/202/mod_page/content/19/unit20-1.png

if(num==100)
num=50;
else
num=150;

만일 이런 구문이 있다고 해보자.

이런 간단한 코드는 한줄로 표현할 수 있도록 C++에서는

삼항 연산자 라는 것을 제공한다.

형식은 위 사진과 같다.

num=num==100?50:150;

훨씬 깔끔하게 표현 할수 있다.

728x90

'프로그래밍 언어 > C++ [기본]' 카테고리의 다른 글

[C++기본] 6.변수  (0) 2021.08.25
[C++기본] 5.반복문  (0) 2021.08.25
[C++기본] 3.연산자  (0) 2021.08.24
[C++기본] 2.자료형  (0) 2021.08.24
[C++기본] 1.프로젝트 생성  (0) 2021.08.24