brunch

매거진 코딩 학습

You can make anything
by writing

C.S.Lewis

by 스스로 코딩 두셀코 Nov 24. 2020

[코딩의 기초] 조건문 (2)

조건문 기차

안녕하세요, 스스로 코딩 두셀코입니다.


지난 글에서 조건문의 구성요소에 대해 알아본 것 처럼 조건문은 조건부와 실행부로 이뤄져있습니다. 그리고 그 구조는 기본적으로 '만약 ~ 라면 ~ 하고, 아니면 ~ 해라' 라고 배웠는데요, 이번 글에서는 더 많은 조건부와 실행부로 이뤄진 구조에 대해서 배워보도록 하겠습니다.




만약 A 라면 a를 하고, B 이면 b를 하고, C 이면 c 를 해라


조건문은 두 가지의 조건부와 실행부로 나눌 수 있을 뿐만 아니라, 여러 개의 조건부와 실행부로 나눌 수 있습니다. '만약 A 라면 a 를 하고 B 이면 b를 하고, C이면 c를 해라' 와 같이 표현할 수 있습니다. 이를 '조건문 사슬 (체인)' 이라고 부릅니다. 조건문 사슬이라고 부르는 이유는 마치 조건문이 사슬처럼 이어져 그렇게 부르는데요, 여기서는 '조건문 기차' 라고 부르겠습니다.


조건문 기차에서는 하나의 조건을 만족하지 않으면 다음 조건으로 넘어가게 되고 또 만족하지 않으면 다음 조건으로 넘어가게 됩니다. 모든 조건이 만족하지 않으면 수행되는 것 없이 넘어가게 됩니다. 예를 들어 볼까요?


만약 지금 날씨 = 비
    우산을 써라
만약 지금 날씨 = 눈
    집 앞에 눈을 쓸어라
만약 지금 날씨 = 미세먼지
     마스크를 써라
만약 지금 날씨 = 태풍
     집에 있어라


지금 날씨(태풍)는 조건 1(비)에 만족하지 않기 때문에 다음 조건으로 넘어갑니다.
지금 날씨(태풍)는 조건 2(눈)에 만족하지 않기 때문에 다음 조건으로 넘어갑니다.
지금 날씨(태풍)는 조건 3(미세먼지)에 만족하지 않기 때문에 다음 조건으로 넘어갑니다.
지금 날씨(태풍)는 조건 4(태풍)에 만족하기 때문에 실행부 (집에 있어라) 를 수행하게 됩니다.


만약 A 이면 a를 하고, B 이면 b를 하고 ... 아니면 z 를 해라


그리고 조건 1,2 ... 이렇게 사용하고 이 모든 조건에 해당하는 것이 없는 경우도 표현할 수 있습니다. 지난 글에서 배웠던 '만약 ~ 이면 ~ 하고, 아니면 ~ 해라' 라는 형식이 더 길어진 버전이라고 볼 수 있습니다.


만약 지금 날씨 = 비
    우산을 써라
...
아니면
    친구들과 약속을 잡아라


주의할 점


조건부 기차에서 중요한 것 중 하나는 조건 1이 만족하지 않았을 때 조건 2는 조건 1이 아니라는 조건이 숨어있기 때문에 굳이 명시하지 않아도 된다는 것 입니다. 조건 2, 3, 4도 모두 마찬가지입니다. 이게 무슨 말인가하면, 조건 2 (만약 지금 날씨 = 눈) 에서는 조건 1 (만약 지금 날씨 = 비) 이 아니다 가 포함되어있다는 것입니다. 조건 3은 조건 1 (만약 지금 날씨 = 비) 도 아니고 (만약 지금 날씨 = 눈) 도 아니라는 조건이 포함되어있는 것입니다.


이게 왜 중요할까요? 아래 예시를 보시면 조금 더 이해가 되실 수 있습니다.


[조건 1] 만약 미세먼지 농도 > 100 이면
    KF 94 마스크를 써라
[조건 2] 만약 미세먼지 농도 > 50 이면
    KF 80 마스크를 써라
[조건 3] 만약 미세먼지 농도 > 10 이면
    비말 / 덴탈 마스크를 써라
[조건 4] 만약 미세먼지 농도 > 0 이면
    마스크를 쓰지마라


이 예시에서 조건 2 (미세먼지 농도 > 50) 는 조건 1 (미세먼지 농도 > 100) 을 이미 만족하지 않은 상태에서 넘어온 것이기 때문에 (50 < 미세먼지 농도 <= 100) 과 같은 조건입니다. 조건 3 (미세먼지 농도 > 10) 도 사실은 (10 < 미세먼지 농도 <= 50) 과 같은 의미입니다. 따라서, '만약 미세먼지 농도 > 50 이고 미세먼지 농도 <= 100' 이라고 구체적으로 표현하지 않아도 된다는 것입니다.


두 번째로 조건부에서 중요한 것은, 조건이 만족되면 실행부를 수행하고 다른 아래 조건들은 보지 않고 조건문을 빠져나온다는 것입니다. 너무 당연한 거겠죠? 미세먼지 농도가 150 이어서 KF 마스크를 썼는데, 다시 KF 80 마스크를 쓰는 일은 없겠죠?




이번 글에서는 여러가지 조건을 구성된 조건문 기차 (또는 사슬, chain)에 대해서 알아봤습니다. 정리해보면 조건문은 다음과 같이 '만약 A 하면 a 하고, B 하면 b 하고, C 하면 c 한다' 또는 '만약 A 하면 a 하고, B 하면 b 하고 ... 아니면 z 한다' 등 여러 개의 조건부들로 구성할 수 있습니다. 여러 개의 조건부로 이뤄져있는 조건문을 '조건부 사슬' 또는 '조건부 기차' 라고도 부릅니다. 조건문에서 주의해야 할 점 두 가지를 배웠는데요, 첫 번째는 [조건 1] 다음의 [조건 2]는 [조건 1]이 아니다 라는 조건도 포함하고 있기 때문에 굳이 '[조건 1]이 아니다' 라는 조건을 줄 필요가 없다는 것입니다. 다른 한 가지는 조건부를 만족하면 다른 조건은 보지 않고 조건문을 바로 빠져나온다는 것입니다. 그 아래의 조건은 보지도 않고, 실행부는 당연히 수행되지 않는 것이지요.


<조건문 (1): 조건문의 구성요소> 와 <조건문 (2): 조건문 기차> 에 걸쳐서 조건문에 대한 거의 모든 내용을 배웠다고 볼 수 있는데요, 곧 발행할 [조건문 실습] 까지 보시면 이 내용을 좀 더 쉽게 이해할 수 있으실겁니다 :)




매거진의 이전글 [코딩의 기초] 조건문 (1)
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari