[C++] 조건문과 반복문을 활용해봅시다.

2022. 6. 10. 21:07♣ C++

이번 포스팅에선 C++의 조건문과 반복문에 대해 알아보도록 하겠다.

조건문 : 제시된 조건문이 참인지, 거짓인지에 따라 달라 상황 수행이 달라진다.

반복문 : 일정 조건에 따라 특정 문을 계속해서 반복한다.

 

개발 환경 : VSCode, Windows 10

 

 

 

 

 

기본 개발 세팅은 다음과 같습니다.

#include <iostream>
#include <string.h>
using namespace std;

int main()

{    
    // 연산자
    int num1 = 10;
    int num2 = 4;
    cout << "연산자 예시 \n";
    return 0;
}

 

 

 

 

 

 

 

조건문


대표적인 조건문이 익히들 아는 if-else 문이다.

프로그램을 접해봤다면, if 문이 쓰이는 방법만 보면 곧바로 이해할 것이다.

다만, C++에는 if 문뿐만 아니라 삼항 연산자, switch 문 등 여러 조건문이 존재한다.

 

 

 

[if-else if-else]

 

int main()

{    
    int num1 = 8, num2 = 4;
    if (num1 > 9){
        cout << "num1은 9보다 큽니다.\n";
    }
    else if (num1 = 9){
        cout << "num1은 9입니다.\n";
    }
    else{
        if (num2 < 4){
            cout << "num1은 9보다 작고, num2는 4보다 작습니다.";
        }
        else{
            cout << "num1은 9보다 작고, num2는 4보다 큽니다.";
        }
    }
    return 0;
}

 

결과

num1은 9입니다.

if (조건문) {수행문;}

else if (조건문) {수행문;}

else {수행문;}

 

if - else if - else 문은 위와 같이 구성되어 있다.

 

 

 

 

 

[삼항 연산자]

 

삼항 연산자는 이전 포스팅에서 다뤘다. 궁금하다면 이전 포스팅에서 보고 오자!

https://mengu.tistory.com/71?category=926429 

 

[C++] 비트 연산자, 쉼표 연산자, 삼항 연산자, sizeof 연산자

이번 포스팅에선 C++의 비트/ 쉼표/ 삼항/ sizeof 연산자에 대해 알아보도록 하겠습니다. 비트 연산자 : 논리 연산자와 비슷하지만, Bit 단위로 논리 연산을 할 때 사용 쉼표 연산자 : 다양한 용도로

mengu.tistory.com

 

 

 

 

 

[switch 문]

switch 문이 if/else 문보다 가독성이 좋다.

하지만 int형으로 승격할 수 있는 integer promotion 값만이 사용될 수 있다. 

 

int main()

{    
    int num1 = 8, num2 = 4;
    switch (num1)
    {
        case 1:
            printf("입력된 수는 1입니다. \n");
            break;

        case 2:
            printf("입력된 수는 2입니다. \n");
            break;

        case 3:
            printf("입력된 수는 3입니다. \n");
            break;

        case 4:
            printf("입력된 수는 4입니다. \n");
            break;

        default:
            printf("입력된 수는 4보다 큽니다.\n");
            break;
    }
    return 0;
}

 


결과

입력된 수는 4보다 큽니다.

 

switch문은 특정 변수에 대하여 case 별로 접근하는 조건문이다.

if-else에 비해 조건 확인이 쉽고, 조건에 해당하는 상황 문을 손쉽게 확인할 수 있다는 것이 장점이다.

 

 

 

 

 

 

 

반복문


반복문에는 while문, do/while문, for문, 범위 기반의 for문이 있다. 

차근차근 살펴보도록 하자.

 

 

 

 

[while문]

while(조건문){상황문;}

조건문이 False가 될 때까지 상황 문을 계속 돌립니다. 

 

int main()

{    
    int num1 = 8, num2 = 4;
    while (num1 < 10){
        cout << "현재 num1은 " << num1 << " 입니다." << endl;
        num1++;
    }
    return 0;
}

 

결과

현재 num1은 8 입니다.
현재 num1은 9 입니다.

num1이 10 이상이 될 때까지 while문이 돌아간 것을 확인할 수 있습니다. 

 

 

 

 

 

 

[do/while문]

while문은 (1) 조건 부합 여부 (2) 상황 문의 루틴을 따랐다면, do/while문은 반대입니다.

먼저 실행하고, 조건 부합 여부를 따져서 다음 반복을 수행합니다.

 

int main()

{    
    int num1 = 8, num2 = 4;
    do {
        cout << "현재 num1은 " << num1 << " 입니다." << endl;
        num1++;
    } while(num1 < 8);
    return 0;
}

 

결과

현재 num1은 8 입니다.

본래 while문이라면 결과물이 나오지 않았을 겁니다. num1은 처음부터 8을 이상이었기에 조건에 맞지 않습니다. 

하지만 do/while문은 먼저 실행하고 조건 부합 여부를 따지기에, 첫 1회는 수행된 것을 확인할 수 있습니다.

 

 

 

 

 

 

[for문]

for(변수 지정; 조건; 변수++){수행문;}

특정 범위만큼 수행문을 반복합니다. 

 

int main()

{    
    int num1 = 8, num2 = 4;
    printf("for문을 통해 8의 배수를 출력합니다.\n");
    for (int i=1; i < 101; i++){
        if (i%8 == 0){
            cout << "8의 배수 " << i << " 입니다." << endl;
        }
    }
}

 

결과

for문을 통해 8의 배수를 출력합니다.
8의 배수 8 입니다. 
8의 배수 16 입니다.
8의 배수 24 입니다.
8의 배수 32 입니다.
8의 배수 40 입니다.
8의 배수 48 입니다.
8의 배수 56 입니다.
8의 배수 64 입니다.
8의 배수 72 입니다.
8의 배수 80 입니다.
8의 배수 88 입니다.
8의 배수 96 입니다.

for문을 이용해서 1부터 100까지 반복하도록 합니다.

그중에서 i 변수가 8로 나눠지는 경우를 골라내서 출력되도록 했습니다. 

* for문 안에서 생성된 변수는 for문이 종료되는 순간 사라집니다. 

 

 

 

 

 

 

[범위 기반의 for문]

for (변수 : 범위){수행문;}

특정 범위를 지정해서 for문을 돌릴 수 있습니다. 

 

int main()

{    
    int num1 = 8, num2 = 4;
    // 배열 생성하기
    int arr[20];
    printf("0부터 19까지 배열을 생성합니다.\n");
    for (int i=0; i < 20; i++){
        arr[i] = i;
    }

    // 특정 범위
    for (int element : arr){
        printf("현재 element는 %d 입니다.\n", element);
    }
}

 

결과

0부터 19까지 배열을 생성합니다.
현재 element는 0 입니다.
현재 element는 1 입니다.
현재 element는 2 입니다.
현재 element는 3 입니다.
현재 element는 4 입니다.
현재 element는 5 입니다.
현재 element는 6 입니다.
현재 element는 7 입니다.
현재 element는 8 입니다.
현재 element는 9 입니다.
현재 element는 10 입니다.
현재 element는 11 입니다.
현재 element는 12 입니다.
현재 element는 13 입니다.
현재 element는 14 입니다.
현재 element는 15 입니다.
현재 element는 16 입니다.
현재 element는 17 입니다.
현재 element는 18 입니다.
현재 element는 19 입니다.

먼저 arr 배열을 선언해주고, for문을 통해 20개의 요소를 채웠다. 

그다음 범위 기반의 for문을 이용해서, 배열 안의 element를 출력하도록 했다. 

 

 

 

 

 

 

continue문, break문


 

continue문과 break문은 반복문, 조건문을 수행하는 데 있어 이정표 역할을 한다.

continue문은 "신경쓰지 말고 계속하라"

break문은 "전부 멈춰!"

 

 

 

continue문, "신경쓰지 말고 계속하라"

continue문은 for문을 돌리던 도중, 다음 순번으로 넘어가게 합니다.

 

int main()

{    
    int num1 = 8, num2 = 4;
    int arr[] = {23,34,25,27,31,57};
    for (int element:arr){
        if (element > 33){
            printf("아니, 33살 이상은 너무 하잖아? 다음 후보자!\n");
            continue;
        }
        printf("맞선 상대의 나이가 %d 입니다.\n", element);
    }
}

 

결과

맞선 상대의 나이가 23 입니다.
아니, 33살 이상은 너무 하잖아? 다음 후보자!
맞선 상대의 나이가 25 입니다.
맞선 상대의 나이가 27 입니다.
맞선 상대의 나이가 31 입니다.
아니, 33살 이상은 너무 하잖아? 다음 후보자!

 

맹구는 맞선 상대를 찾고 있다. 다만, 33살 이상인 상대의 경우 위와 같이 반응한다.

 

 

 

 

 

break문은 "전부 멈춰!"

break문은 돌리고 있던 for문을 아예 멈춰버립니다.

 

int main()

{    
    int num1 = 8, num2 = 4;
    int arr[] = {23,34,25,27,31,57};
    for (int element:arr){
        if (element > 33){
            printf("아니, 33살 이상은 너무 하잖아? 다 관둬!\n");
            break;;
        }
        printf("맞선 상대의 나이가 %d 입니다.\n", element);
    }
}

 

결과

맞선 상대의 나이가 23 입니다.
아니, 33살 이상은 너무 하잖아? 다 관둬!

 

철수는 맞선 상대를 찾고 있다. 다만, 33살 이상인 상대가 나오자마자 저렇게 화를 내버렸다.

그래서 그 다음 후보자들은 철수를 만나보지도 못했다. 

 

 

 

 

 

지금까지 C++의 조건문과 반복문을 다뤄보았다. 

혼자서 코드를 써보면서 손에 익도록 하길 바란다. 다음 포스팅에선 배열을 다루도록 하겠다.