본문 바로가기

웹언어/JAVASCRIPT

[JS강좌] 3강 자바스크립트 if문 - 오쌤의 니가스터디

728x90
반응형

 

 

 

 

 

 

 

 

 

 

** 동영상으로 공부할 분은 아래 주소를 클릭해주세요.

https://www.youtube.com/watch?v=zN9YVbieTSQ 

 

 

 

 

 

 

 

 

 

 

1. if문

- 조건에 따라 다른 작업을 수행하려고 할 때 작성하는 구문입니다.

 

 

1) 기본 if문

- 조건이 맞을때의 결과만 표현해주는 구문입니다.

 

## 문법

if(조건식){
	//조건식이 참일때 표현식
}

 

 

## 문제

문제) 사용자에게 점수를 입력받아 80점이상이면 [합격]이라는 경고창 띄워주세요.

 

 

## 코드

<!DOCTYPE html>
<html lang="ko">
    <head>
        <meta charset="UTF-8">
        <title>JS 조건문</title>
        <script>
            var score = prompt('점수를 입력하세요','0~100사이의 정수');
            
            if(score >= 80){
                alert('합격');
            }
        </script>
    </head>
    <body>
        
    </body>
</html>

- prompt함수는 사용자에게 문자열을 입력받은 함수입니다.

- score라는 변수에 사용자가 입력한 점수를 담습니다.(이유는 사용자가 입력할 때마다 값이 변하기 때문입니다.)

- if문으로 만일 score에 작성된 숫자가 80보다 크거나 같으면 경고창에 합격이라고 띄워주는 프로그램 입니다.

 

 

## 결과

- 80점이나 90점을 입력하면 합격이라고 나오지만, 50이라고 입력했을때는 아무런 결과도 나오지 않습니다.

- 조건에 해당하지 않게 때문입니다.

 

 

 

 

 

 

 

 

 

 

 

2) if else문

- 조건이 맞을때와 틀릴때의 2가지 경우에 대한 코드를 작성하는 구문입니다.

 

 

## 문법

if(조건식){
	//조건식이 참일때 표현식
}else{
	//조건식이 거짓일때 표현식
}

 

 

## 문제

문제) 사용자에게 점수를 입력받아 80점이상이면 [합격], 그렇지 않으면 [불합격]이라는 경고창 띄워주세요.

 

 

## 코드

<!DOCTYPE html>
<html lang="ko">
    <head>
        <meta charset="UTF-8">
        <title>JS 조건문</title>
        <script>
            var score = prompt('점수를 입력하세요','0~100사이의 정수');
            
            if(score >= 80){
                alert('합격');
            }else{
                alert('불합격');
            }
        </script>
    </head>
    <body>
        
    </body>
</html>

- if문으로 만일 score에 작성된 숫자가 80보다 크거나 같으면 경고창에 [합격], 그렇지 않으면(80점미만) [불합격]이라고 띄워주는 프로그램 입니다.

 

 

 

## 결과

- 80점을 입력하면 [합격]이라고 뜨고, 50점을 입력하니 [불합격]이라고 뜨는 것 보이시죠?

 

 

 

 

 

 

 

 

 

 

 

 

3) if else if문

- 세상엔 결과가 2개인 [예, 아니오], [남, 여], [수신, 미수신] 등만 있지는 않습니다.

- 결과를 여러개를 보고 싶을 수도 있습니다.

- 그래서 결과가 3개 이상이면 if else if문으로 작성해줘야 합니다. 

 

 

## 문법

if(조건식1){
	//조건식1이 참일 때 표현식
}else if(조건식2){
	//조건식2가 참일 때 표현식
}else{
	//조건식1과 조건식2가 모두 거짓일 때 표현식
}

- 위의 경우는 3개의 결과만 작성했지만, 조건식은 else if()를 추가해서 계속 증가시킬수 있습니다.

 

 

 

## 문제

문제) 신입사원의 입사점수가 90점이상이면 [기획팀], 80점이상이면 [총무팀], 나머지는 [영업팀]을 경고창으로 반환하시오.

 

 

## 코드

<!DOCTYPE html>
<html lang="ko">
    <head>
        <meta charset="UTF-8">
        <title>JS 조건문</title>
        <script>
            var score = prompt('점수를 입력하세요','0~100사이의 정수');
            
            if(score >= 90){
                alert('기획팀');
            }else if(score >= 80){
                alert('총무팀'); 
            }else{
                alert('영업팀');
            }
        </script>
    </head>
    <body>
        
    </body>
</html>

- prompt함수로 점수를 입력받아 score변수에 담아줍니다.

- score의 수치가 90이상이면 [기획팀]으로 처리, 80이상이면 [총무팀]으로 처리, 나머지는 [영업팀]으로 처리되도록 코드를 작성하였습니다.

 

 

## 결과

- 브라우저에서 95를 입력하면 [기획팀], 85를 입력하면 [총무팀], 75와 50을 입력하니 [영업팀]이 나오는 것을 확인할 수 있습니다. 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2. 논리연산자 관련 if문

1) 논리연산자의 종류

연산자 설명
&& 논리곱연산자 - 모든 조건이 맞으면 true를 반환, 그렇지 않으면 false를 반환
|| 논리합연산자 - 조건 중 하나라도 맞으면 true를 반환, 모든 조건이 맞지 않으면 false를 반환
! 부정연산자 - 값이 true false, false true를 반환

- 위의 연산자들을 사용하면 결과값을 true와 false로 처리가 되므로 조건식을 여러개두는 if문과 함께 사용이 가능합니다.

 

 

 

 

 

 

 

 

 

 

 

 

2) 논리곱연산자 if문 - &&

- 논리곱은 조건이 여러개인 경우 모두 맞는 경우 true쪽 표현식을 반환, 그렇지 않으면 false쪽 표현식을 반환합니다.

- 보통 조건을 생각할때 [~~이고], [모두], [전부] 혹은 숫자의 사잇값이면 논리곱연산자를 사용하시면 좋습니다.

 

 

## 문법

if(조건식1 && 조건식2){
	//조건식1과 조건식2가 모두 참일때 표현식
}else{
	//조건 중 하나라도 거짓일때 표현식
}

 

 

 

## 문제

문제) 엑셀 점수가 70점이상이고, 액세스 점수가 70점이상이면 [합격], 그렇지 않으면 [불합격]을 경고창에 반환하시오.

 

 

## 코드

<!DOCTYPE html>
<html lang="ko">
    <head>
        <meta charset="UTF-8">
        <title>JS 조건문</title>
        <script>
            var excel = prompt('엑셀점수입력','정수입력');
            var access = prompt('액세스점수입력','정수입력');
            
            if(excel >= 70 && access >= 70){
                alert('합격');
            }else{
                alert('불합격');
            }
        </script>
    </head>
    <body>
        
    </body>
</html>

- excel이라는 변수에 엑셀점수를 사용자가 입력하도록 설정합니다.

- access라는 변수에 액세스점수를 사용자가 입력하도록 설정합니다.

- if문의 조건에 &&연산자를 사용하여 조건을 2개 모두 입력합니다.

 

 

 

## 결과

- 엑셀점수를 90, 액세스점수를 80이라 입력하면 모두 70점이상이므로 [합격]이라고 나옵니다.

- 엑셀점수를 90, 액세스점수를 50이라 입력하면, 액세스가 70점이상이 아니므로 [불합격]이라고 나옵니다.

- 엑셀점수를 50, 액세스점수를 50이라 입력하면, 둘다 70점이상이 아니므로 [불합격]이라고 나옵니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3) 논리합연산자 if문 - ||

- 논리합은 조건이 여러개인 경우 하나라도 맞는 경우 true쪽 표현식을 반환, 그렇지 않으면 false쪽 표현식을 반환합니다.

- 보통 조건을 생각할때 [~~이거나], [혹은], [하나라도] 등이 떠오른다면 논리합연산자를 사용하시면 좋습니다.

 

 

## 문법

if(조건식1|| 조건식2){
	//조건식1과 조건식2가 둘중 하나라도 참일때 표현식
}else{
	//조건들이 모두 거짓일때 표현식
}

 

 

## 문제

문제) 주민번호 뒷자리의 첫글자입력받아 1 혹은 3이면 [남자], 2 혹은 4면 [여자], 나머지는 [다시입력하세요]라는 경고창을 띄우세요.

 

 

## 코드

<!DOCTYPE html>
<html lang="ko">
    <head>
        <meta charset="UTF-8">
        <title>JS 조건문</title>
        <script>
            var first = prompt('주민번호 뒷자리의 첫글자입력','1자리만 입력');
            
            if(first == 1 || first == 3){
                alert('남자');
            }else if(first == 2 || first == 4){
                alert('여자');
            }else{
                alert('다시 입력하세요');
            }
        </script>
    </head>
    <body>
        
    </body>
</html>

- first이라는 변수에 사용자가 주민번호 뒷자리의 첫글자 한자리를 입력하도록 설정합니다.

- if else if문으로 첫번째에는 first가 1과 같거나 3과 같다면 이라고 조건을 걸어줍니다. 

- 두번째에는 first가 2와 같거나 4와 같다면 이라고 조건을 걸어줍니다.

 

 

 

## 결과

- 1과 3을 입력하면 [남자]가 잘 뜹니다.

- 2와 4를 입력하면 [여자]가 잘 뜹니다.

- 5와 6을 입력하면 [다시입력하세요]가 뜹니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4) 부정연산자 if문 - !

- 부정연산자(!)는 결과가 true일땐 false를 반환하고, false일때는 true를 반환합니다.

- if문과 함께 사용할 때는 보통 false의 결과만 반환하고자 할 때 사용합니다.

 

 

## confirm함수

- 확인 버튼을 누르면 [true]를 반환, 취소버튼을 누르면 [false]를 반환하는 함수입니다.

confirm('질문텍스트');

 

 

 

## 문제

문제) [결제하시겠습니까?]라는 확인창이 뜰때, 확인 버튼을 누르면 명령이 없고, 취소버튼을 누르면 [취소되었습니다]라는 경고창을 띄워주세요.

 

 

 

## 부정연산자를 쓰지 않은 코드

<!DOCTYPE html>
<html lang="ko">
    <head>
        <meta charset="UTF-8">
        <title>JS 조건문</title>
        <script>
            var q = confirm('결제하시겠습니까?');
            
            if(q){ //확인버튼눌렀을때
                
            }else{ //취소버튼눌렀을때
                alert('취소되었습니다');
            }
        </script>
    </head>
    <body>
        
    </body>
</html>

- confirm함수는 결과 자체가 불표현식(true/false)기 때문에 비교연산자를 사용하지 않습니다.

- 조건식의 결과가 true일때 명령이 없다보니 불필요한 코드를 작성한 것처럼 보이고 줄수도 길어집니다.

 

 

 

## 부정연산자를 사용한 코드

<!DOCTYPE html>
<html lang="ko">
    <head>
        <meta charset="UTF-8">
        <title>JS 조건문</title>
        <script>
            var q = confirm('결제하시겠습니까?');
            
            if(!q){
                alert('취소되었습니다.');
            }
        </script>
    </head>
    <body>
        
    </body>
</html>

- 조건앞에 부정연산자인 !를 사용하므로 코드가 많이 주는 것을 볼수 있습니다.

- false일때의 명령만 작성하면 됩니다. 

 

 

 

## 결과

- 확인버튼을 누르면 명령이 없고, 취소버튼을 누르면 [취소되었습니다]라는 경고창이 뜨는 것 확인되시죠?

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3. 중첩 if문

- 중첩 if문이란 if문 안에 if을 또 쓰는 것을 의미합니다.

 

## 문법

if(조건식){
	if(조건식){
    
    }
}

 

 

 

## 위쪽 if else문의 문제

문제) 사용자에게 점수를 입력받아 80점이상이면 [합격], 그렇지 않으면 [불합격]이라는 경고창 띄워주세요.

 

## 위쪽 if else문의 코드

<!DOCTYPE html>
<html lang="ko">
    <head>
        <meta charset="UTF-8">
        <title>JS 조건문</title>
        <script>
            var score = prompt('점수를 입력하세요','0~100사이의 정수');
            
            if(score >= 80){
                alert('합격');
            }else{
                alert('불합격');
            }
        </script>
    </head>
    <body>
        
    </body>
</html>

- 사실 이쪽 코드는 문제가 있었습니다. 원래 점수는 보통 0~100사이의 정수인데 120점이라 적어도 합격이라 나오고 있습니다. 

- 결과를 보고 문제가 뭔지 확인하겠습니다. 

 

 

## 위쪽 if else문의 결과

- 120을 작성해도 -20을 작성해도 결과가 처리되는 것을 확인할 수 있습니다. 

 

 

 

 

 

## 정확한 문제

문제) 사용자에게 점수를 입력받아 80점이상이면 [합격], 그렇지 않으면 [불합격]이라는 경고창 띄워주세요.
단, 점수는 0~100점사이를 받고 잘못입력시 [0~100사이의 정수로 입력하세요.]라는 경고창을 띄워주세요.

 

 

## 중첩if문 코드

<!DOCTYPE html>
<html lang="ko">
    <head>
        <meta charset="UTF-8">
        <title>JS 조건문</title>
        <script>
            var score = prompt('점수입력','0~100사이 정수입력');
            
            if(score >= 0 && score <= 100){
                if(score >= 80){
                    alert('합격');
                }else{
                    alert('불합격');
                }
            }else{
                alert('0~100사이의 정수로 입력하세요.');
            }
        </script>
    </head>
    <body>
        
    </body>
</html>

- if문 내부에 또 if문을 작성하였습니다.

- 바깥쪽 if문은 0~100사이를 조건으로 걸기위해 논리곱연산자(&&)를 사용하였습니다. 

 

 

## 중첩if문 결과

- 0~100사이일때만 [합격], [불합격]처리되고, 그외의 숫자는 다시입력하라는 경고창이 뜹니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90
반응형