2025-08-24 13:28
프로그래밍의 길잡이 조건문 완벽 핸드북
컴퓨터 프로그램은 어떻게 스스로 생각하고 판단을 내리는 것처럼 보일까요? 사용자가 버튼을 클릭했을 때, 게임 캐릭터가 장애물을 만났을 때, 혹은 로그인 정보가 일치하는지 확인할 때, 이 모든 순간의背后에는 바로 조건문(Conditional Statements) 이라는 강력한 도구가 있습니다. 조건문은 프로그램에게 “만약 ~이라면, 이렇게 행동해”라고 알려주는 논리의 핵심이자, 코드가 생명력을 갖게 하는 첫걸음입니다.
이 핸드북에서는 프로그래밍의 가장 기본적이면서도 중요한 개념인 조건문에 대해 깊이 있게 탐험해 보겠습니다. 조건문이 왜 탄생했는지 그 배경부터 시작하여, 가장 기본적인 if
문의 구조와 사용법, 그리고 더 복잡한 상황을 다루기 위한 else
, else if
, switch
문까지, 조건문의 모든 것을 체계적으로 배우게 될 것입니다. 마치 갈림길에서 표지판을 보고 길을 선택하듯, 조건문을 통해 프로그램의 실행 흐름을 자유자재로 제어하는 방법을 익혀보세요.
1. 조건문은 왜 만들어졌을까? 기계와의 소통을 위한 약속
초창기 컴퓨터는 주어진 명령을 순서대로 실행하는 계산기에 가까웠습니다. 1번 명령을 끝내면 2번, 2번을 끝내면 3번으로 넘어가는 식이었죠. 하지만 현실 세계의 문제는 이렇게 단순하지 않습니다. “만약 비가 오면 우산을 챙기고, 그렇지 않으면 그냥 나간다”와 같이 우리는 항상 특정 ‘조건’에 따라 다른 행동을 합니다. 프로그래머들은 기계에게도 이러한 논리적인 판단을 가르칠 필요성을 느꼈습니다.
이러한 필요성에서 탄생한 것이 바로 조건문입니다. 조건문은 프로그램의 실행 흐름에 ‘분기점’을 만들어 줍니다. 특정 조건이 참(True)인지 거짓(False)인지를 평가하고, 그 결과에 따라 실행할 코드 블록을 결정하게 해주는 것입니다. 이를 통해 프로그램은 더 이상 정해진 길로만 가는 기차가 아니라, 다양한 상황에 맞춰 스스로 경로를 변경하는 스마트한 자동차가 될 수 있었습니다. 조건문의 등장은 기계가 단순 계산을 넘어 논리적 추론을 흉내 낼 수 있게 된 혁명적인 사건이었습니다.
2. 가장 기본적인 갈림길 if
문
if
문은 조건문의 가장 기본이 되는 형태로, “만약 조건이 참이라면, { } 안의 코드를 실행하라”는 의미를 가집니다. 구조는 매우 직관적입니다.
if (조건식) {
// 조건식이 참(True)일 경우 실행될 코드
}
-
조건식: 평가했을 때 결과가 참(True) 또는 거짓(False)으로 나오는 표현식을 말합니다. 예를 들어,
나이 > 19
나비밀번호 == "1234"
와 같은 비교 연산이 주로 사용됩니다. -
코드 블록: 조건식이 참일 때만 실행되는 코드의 묶음으로, 중괄호
{ }
안에 작성합니다.
예시: 성인 인증 프로그램
간단한 나이 확인 프로그램을 상상해 봅시다. 사용자의 나이가 20세 이상일 때만 “성인입니다”라는 메시지를 출력하고 싶다면, if
문을 다음과 같이 사용할 수 있습니다.
let age = 25;
if (age >= 20) {
console.log("성인입니다. 입장을 환영합니다.");
}
이 코드에서 age >= 20
이라는 조건식은 25 >= 20
이므로 참(True)이 됩니다. 따라서 중괄호 안의 console.log
코드가 실행되어 “성인입니다. 입장을 환영합니다.”라는 메시지가 화면에 나타납니다. 만약 age
가 18이었다면 조건식은 거짓(False)이 되어 중괄호 안의 코드는 무시되고 프로그램은 다음으로 넘어갑니다.
3. 선택지 추가하기 else
와 else if
if
문만으로는 조건이 참일 때의 동작만 정의할 수 있습니다. 하지만 “만약 ~이라면 A를 하고, 그렇지 않다면 B를 하라”처럼 조건이 거짓일 때의 행동을 정의하고 싶을 때가 많습니다. 이때 else
가 등장합니다.
3.1. if-else
: 두 가지 길 중 하나
else
는 if
문의 조건이 거짓(False)일 경우 실행될 코드를 정의합니다. if
문 바로 뒤에 붙여서 사용합니다.
if (조건식) {
// 조건식이 참(True)일 경우 실행될 코드
} else {
// 조건식이 거짓(False)일 경우 실행될 코드
}
예시: 짝수와 홀수 판별
어떤 숫자가 짝수인지 홀수인지 판별하는 프로그램은 if-else
문으로 완벽하게 표현할 수 있습니다. 숫자를 2로 나누었을 때 나머지가 0이면 짝수, 그렇지 않으면 홀수라는 점을 이용합니다.
let number = 7;
if (number % 2 === 0) {
console.log(number + "는(은) 짝수입니다.");
} else {
console.log(number + "는(은) 홀수입니다.");
}
위 코드에서 number % 2 === 0
조건식은 7 % 2 === 0
이므로 거짓(False)이 됩니다. 따라서 if
블록은 건너뛰고 else
블록 안의 코드가 실행되어 “7는(은) 홀수입니다.”가 출력됩니다.
3.2. if-else if-else
: 여러 갈래의 길
선택지가 두 개 이상일 때는 어떻게 할까요? “성적이 90점 이상이면 ‘A’, 80점 이상이면 ‘B’, 70점 이상이면 ‘C’, 그 외에는 ‘F‘“와 같이 여러 조건을 순차적으로 검사해야 할 때 else if
를 사용합니다.
if (조건식1) {
// 조건식1이 참일 경우 실행
} else if (조건식2) {
// 조건식1은 거짓이고, 조건식2가 참일 경우 실행
} else if (조건식3) {
// 조건식1, 2는 거짓이고, 조건식3이 참일 경우 실행
} else {
// 위의 모든 조건이 거짓일 경우 실행
}
else if
는 위에서부터 순서대로 조건을 검사하다가, 처음으로 참이 되는 조건의 코드 블록만 실행하고 전체 조건문을 빠져나옵니다. 만약 모든 if
와 else if
조건이 거짓이라면 마지막 else
블록이 실행됩니다.
예시: 학점 계산기
let score = 85;
let grade;
if (score >= 90) {
grade = "A";
} else if (score >= 80) {
grade = "B";
} else if (score >= 70) {
grade = "C";
} else {
grade = "F";
}
console.log("당신의 학점은 " + grade + "입니다.");
score가 85점이므로, 첫 번째
if (score >= 90)은 거짓입니다. 다음
else if (score >= 80)은
85 >= 80이므로 참이 됩니다. 따라서
grade변수에 "B"가 할당되고, 나머지
else if와
else`는 검사하지 않고 조건문을 빠져나갑니다. 최종적으로 “당신의 학점은 B입니다.”가 출력됩니다.
4. 깔끔한 다중 선택 switch
문
if-else if
문이 계속해서 길어지면 코드가 지저분해 보이고 가독성이 떨어질 수 있습니다. 특히, 하나의 변수 값이 특정 값들과 일치하는지 비교하는 경우에는 switch
문을 사용하는 것이 훨씬 더 깔끔하고 효율적입니다.
switch
문은 하나의 표현식(주로 변수)을 평가한 뒤, 그 값이 일치하는 case
를 찾아 해당 코드 블록을 실행하는 구조입니다.
switch (표현식) { case 값1: // 표현식의 결과가 값1과 일치할 때 실행될 코드 break; case 값2: // 표현식의 결과가 값2와 일치할 때 실행될 코드 break; // ... 여러 case 추가 가능 default: // 표현식의 결과가 위의 어떤 case와도 일치하지 않을 때 실행될 코드 }
case
: 비교할 값을 명시합니다.switch
의 표현식 결과와case
의 값이 일치하면 해당case
아래의 코드가 실행됩니다.break
: 현재case
의 코드 실행을 마치고switch
문 전체를 빠져나가도록 하는 중요한 키워드입니다. 만약break
가 없으면, 일치하는case
이후의 모든case
코드가 조건과 상관없이 실행되는 ‘fall-through’ 현상이 발생하므로 주의해야 합니다.default
:if-else
문의 마지막else
와 같은 역할입니다. 일치하는case
가 하나도 없을 때 실행됩니다. (선택 사항)
예시: 과일 가격 알려주기
let fruit = "사과";
let price;
switch (fruit) {
case "바나나":
price = 2000;
break;
case "사과":
price = 3000;
break;
case "체리":
price = 5000;
break;
default:
console.log("해당 과일은 판매하지 않습니다.");
price = 0;
}
if (price > 0) {
console.log(fruit + "의 가격은 " + price + "원입니다.");
}
fruit
변수의 값은 “사과”이므로, switch
문은 case "사과":
를 찾아냅니다. 그 안의 코드 price = 3000;
이 실행되고, break;
를 만나 switch
문을 빠져나옵니다. 최종적으로 “사과의 가격은 3000원입니다.”가 출력됩니다. if-else if
로 작성하는 것보다 훨씬 구조가 명확하고 읽기 쉽습니다.
5. 심화: 조건문의 친구들, 삼항 연산자와 논리 연산자
5.1. 한 줄로 쓰는 조건문: 삼항 연산자
간단한 if-else
문은 삼항 연산자(Ternary Operator) 를 사용하여 한 줄로 축약할 수 있습니다. 구조는 조건 ? 참일_때_값 : 거짓일_때_값
입니다.
// if-else 문
let age = 20;
let type;
if (age >= 20) {
type = "성인";
} else {
type = "미성년자";
}
// 삼항 연산자
let type2 = age >= 20 ? "성인" : "미성년자";
console.log(type); // "성인"
console.log(type2); // "성인"
두 코드는 완전히 동일하게 동작합니다. 코드가 간결해지는 장점이 있지만, 너무 복잡한 조건에 사용하면 오히려 가독성을 해칠 수 있으므로 간단한 경우에만 사용하는 것이 좋습니다.
5.2. 조건을 더 풍부하게: 논리 연산자
때로는 여러 조건을 조합해야 할 필요가 있습니다. 이때 논리 연산자 &&
(AND), ||
(OR), !
(NOT)을 사용합니다.
-
&&
(AND): 양쪽 조건이 모두 참일 때만 전체가 참이 됩니다. “아이디와 비밀번호가 모두 일치할 때”와 같은 상황에 사용됩니다. -
||
(OR): 양쪽 조건 중 하나라도 참이면 전체가 참이 됩니다. “쿠폰이 있거나 VIP 회원일 때”와 같은 상황에 사용됩니다. -
!
(NOT): 조건의 결과를 반대로 뒤집습니다. 참은 거짓으로, 거짓은 참으로 만듭니다.
let isLoggedIn = true;
let isAdmin = false;
// AND: 로그인도 했고, 관리자여야만 접근 가능
if (isLoggedIn && isAdmin) {
console.log("관리자 페이지에 오신 것을 환영합니다.");
}
// OR: 로그인을 했거나, 관리자이기만 하면 접근 가능
if (isLoggedIn || isAdmin) {
console.log("사이트에 오신 것을 환영합니다.");
}
// NOT: 로그인하지 않은 사용자에게만 표시
if (!isLoggedIn) {
console.log("로그인이 필요합니다.");
}
결론: 논리를 코드로 번역하는 기술
조건문은 단순히 프로그래밍 언어의 문법 중 하나가 아닙니다. 그것은 우리가 생각하는 방식, 즉 현실 세계의 논리와 규칙을 컴퓨터가 이해할 수 있는 언어로 번역하는 핵심적인 도구입니다. if
라는 간단한 단어에서 시작하여 else
, else if
, switch
로 확장되는 이 구조를 통해 우리는 프로그램에 지능과 유연성을 불어넣을 수 있습니다.
오늘 우리는 조건문이 왜 필요한지부터 시작하여 다양한 형태의 조건문을 어떻게 사용하고, 또 어떻게 더 간결하고 효율적으로 표현할 수 있는지 알아보았습니다. 이 핸드북을 통해 얻은 지식을 바탕으로, 여러분의 코드에 더 풍부하고 동적인 논리를 설계해 보세요. 갈림길마다 올바른 표지판을 세워주듯, 조건문을 능숙하게 사용하여 사용자의 행동과 데이터의 상태에 따라 프로그램이 현명한 결정을 내리도록 이끌어 주시길 바랍니다.