curriculum.png


Ch. 05 선택문

1. if 문

if문을 사용하면 특정 조건을 만족할 때만 코드를 실행할 수 있습니다. 기본적인 구조는 다음과 같습니다.

if (조건식) {
    실행할 코드;
}

조건을 만족하지 못하는 경우, 즉 조건식이 거짓일 경우 특정 코드를 실행되도록 하려면 if 뒤에 else를 추가해줍니다.

if (조건식) {
    참일 경우 실행할 코드;
}
else {
    거짓을 경우 실행할 코드;
}

만일 조건이 여러 개일 경우는 추가적인 조건식 만큼 else ifif 뒤에 추가해 줍니다.

if (조건식1) {
    참일 경우 실행할 코드 1;
}
else if (조건식2) {
    참일 경우 실행할 코드 2;
else {
    거짓을 경우 실행할 코드;
}

조건식은 문법은 간단하지만 조건식을 어떻게 설정하는지, 순서를 어떻게 설정하는지에 따라 프로그램의 복잡도나 가독성이 상이해질 수 있습니다. 프로그램을 제어할 때 그 흐름을 쉽게 파악할 수 있도록 프로그래밍 전에 Flow Chart를 그려볼 수 있습니다. 가령 아래와 같은 Flow Chart가 있다고 가정합시다.

https://documents.lucid.app/documents/d8fbad03-bbce-45d5-b355-29b27161a278/pages/0_0?a=254&x=-79&y=-93&w=2477&h=1220&store=1&accept=image%2F*&auth=LCA 3c4c74c4cefbb7a8723ac1ae6be421e11072373f59b9ee72e214f90affa1fe7d-ts%3D1721738955

이를 code로 나타내면 다음과 같습니다.

#include <stdio.h>

int main() {
    int score;
    scanf("%d", &score);
    
    if (score >= 90) {
        printf("A);
    }
    else if (score >= 80) {
        printf("B");
    }
    else if (score >= 70) {
        printf("C");
    }
    else if (score >= 60) {
        printf("D");
    }
    else {
        printf("F");
    }
    
    return 0;

2. switch - case문

swich-case문은 if문으로도 구현이 가능하지만 여러 개의 선택지가 주어지고 그 중에서 골라야 하는 경우에 프로그램 가독성이 좋아져 자주 사용되는 문법입니다. 예를 들어 대회에 참가해서 순위에 따라 상금을 차등 지급하는 경우를 생각해 봅시다. if문을 쓰면 다음과 같이 표현 가능할 것입니다.

int rank, prize;
scanf("%d", &rank);

if (rank == 1)      prize = 1000;
else if (rank == 2) prize = 500;
else if (rank == 3) prize = 300;
else                prize = 100;

if와 else가 상당히 많이 반복되는 것을 볼 수 있습니다. 경우의 수가 많아지면 가독성도 떨어지게 됩니다. 이 경우 swich-case를 이용해 보기 좋게 만들 수 있습니다. switch-case 구문은 조건식을 검사하는 switch와 검사 결과에 따라 제어 흐름을 가져오는 레이블(label)인 case로 이루어져 있습니다. 위 코드를 switch-case로 바꾸면 다음과 같습니다.