본문 바로가기

JavaScript/[theory]

[제어문] #1. if문과 if-else문

728x90
반응형

[실습] 3의 배수 검사기

해당 프로그램은 사용자가 프롬프트 창에 값을 입력하면 입력한 값이 3의 배수인지 확인 후 출력하는 프로그램이다.

코드는 다음과 같다.

<!DOCTYPE html>
<html lang="kr">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Calculater</title>
    <style>
        body{
            font-size: 10;
            text-align: center;
        }
    </style>
</head>
<body>
    <h1>3의 배수 검사기</h1>
    <script>
        var key = 1;
        while(key == 1){
            var inp = prompt("숫자를 입력하세요.");
            if(inp < 3) inp = prompt("숫자를 다시 입력하세요.");
            else{
                if(inp%3 == 0) document.write(inp + "은 3의 배수입니다.");
                else document.write(inp + "은 3의 배수가 아닙니다.");
            }
        }
    </script>  
</body>
</html>

if문과 if-else문의 작동 원리

프로그램을 짤 때 작성한 순서대로 명령이 실행되는 경우는 별로 없고, 개발자가 원하는 상황에 맞춰 조건에 따라 명령을 실행하기 위해서 조건문을 사용한다. 이때 하나의 조건을 확인하는 경우 if 문을, 두 개 이상의 조건 즉 조건과 맞지 않을 때와 맞을 때를 구분해야 한다면 if else 문을 사용한다.

if 문

소괄호 안의 조건이 true 이면 중괄호 안의 자바스크립트 소스를 실행하고, 조건이 false 인경우 실행하지 않는다.

var inp = prompt("숫자를 입력하세요.");
    if(inp < 3) inp = prompt("숫자를 다시 입력하세요.");
    else{
        if(inp%3 == 0) document.write(inp + "은 3의 배수입니다.");
        else document.write(inp + "은 3의 배수가 아닙니다.");
}

해당 코드에서 입력한 숫자가 3보다 작으면 3의 배수를 검사하는 의미가 없으므로 먼저 입력 한 숫자의 범위를 확인하고 재입력받기 위한 조건문을 작성했다.

if else 문

조건을 확인해서 조건이 맞을 때 실행할 명령과 조건에 맞지 않을 때 실행할 명령이 있을 때 if-else 문을 사용한다. 위의 코드에서 볼 수 있듯, 먼저 3보다 작은 경우를 제외한다면(조건에 맞지 않는 경우가 있다면) 3의 배수를 확인하는 명령을 수행한다.

조건 연산자

조건 연산자

만약 조건이 하나이고 true 일 때와 false 일 때만 구분하면 된다면 긴 문장으로 이루어진 if-else 문보다 조건 연산자를 사용하는 것이 가독성과 신속성 측면에서 훌륭하다. 해당 조건 연산자를 잘 활용한다면 여러 개의 if-else 문을 하나의 문장에 중복된 조건 연산자를 활용하며 한 줄로 표현할 수 있다.

 

물론 가독성의 영역은 하나의 조건 연산자의 경우에는 바로 알아보기 쉬우나 조건 연산자를 겹쳐서 사용한다면 논리를 따져야 하므로 가독성은 떨어짐에 주의한다. 하지만 여러 줄의 코드를 한 줄로 줄인다면 큰 프로그래밍 작업에서 공간의 창출을 가져온다는 큰 메리트가 존재한다!

 

위의 3의 배수 확인 프로그램을 조건 연산자로 프로그램한 코드는 다음과 같다.

var inp = prompt("숫자를 입력하세요.");
        inp<3?(inp = prompt("다시 숫자를 입력하세요.")):
        (document.write(inp%3==0?inp + "은 3의 배수입니다.":(inp + "은 3의 배수가 아닙니다.")));

위의 코드와 비교하면 6줄의 코드가 3줄의 코드로 확연하게 줄었음을 알 수 있다.

truthy 값과 falsy 값

논리형 자료 값은 true와 false 뿐이다. 하지만 일반 값 중에서도 "true로 인정할 수 있는 값"과 "false로 인정할 수 있는 값"이 존재한다. 이를 각각 truthy 값과 falsy 값이라고 한다.

 

다음은 자바스크립트에서 falsy 하게 인정하는 값이다.

  • 0 //숫자
  • "" //빈 문자열
  • NaN // 숫자가 아님
  • undefined
  • null

위의 값을 제외한 나머지 값은 자바스크립트에서 true로 인정하는 값이 된다.

 

 truthy 값과 falsy 값은 같은 조건을 확인할 때 유용하게 사용된다. if 문에서 조건을 확인할 때, 프롬프트 창에 아무것도 입력하지 않았거나 [취소] 버튼을 누르게 되면 입력에 null 값이 들어가게 되므로 결국 입력값은 false 처리된다. 반대로 어떠한 값을 입력하든 입력이 되었다면 그 값은 true가 된다.

728x90
반응형
댓글