Javascript 제어문

2022. 8. 18. 12:20JavaScript

조건문 / 반복문


1.조건문


  -if문
    
  -switch문 
  
1) if문
    조건절 => 관계연산자/논리연산자 => true(0/false/null을 제외한 모든 값)/false
    {}생략시 조건이 참일 때 다음 한줄만 계산


단일조건문 - 조건절 1개 
      if(조건절){
        //조건에 true일 때 처리할 코드;
      }
      
양자택일문 - 조건절 2개
      if(조건절){
        //조건에 true일 때 처리할 코드;
      }else{
        //조건에 false일 때 처리할 코드;
      }

ex)

!(number<1 || number>100) = (number>=1 && number<=100)

ex) 영어 대/소문자

if(alpha>='a' && alpha<='z')

ex) 영문

if(alpha>='a' && alpha<='z' || alpha>='A' && alpha<='Z')

ex) 특수문자가 포함된 영문

if(alpha>='a' && alpha<='z' || alpha>='A' && alpha<='Z' || alpha=='#' || alpha=='@')


다중조건문 - 조건절 2개 이상

      * else 절은 경우에 따라서 생략 가능

 

       if(조건절1){ //조건1에 true 이면 처리할 코드 작성;}

       else if(조건절2){ //조건2에 true 이면 처리할 코드 작성;}

       else{ //위의 모든 조건에 맞지 않으면 처리할 코드 작성;}

ex)

var person = prompt('성별을 입력하세요(m/f)','');
    if(person=='m'||person== 'M'){
        console.log('당신은 남성입니다');
    }else if(person=='f'||person=='F'){
        console.log('당신은 여성입니다');
    }else{
        console.log('잘못 입력 하셨습니다');
    }
    console.log('종료됩니다.');

ex) 아래 예제에서 첫 조건절에 참일 때 그 아래 조건문은 계산하지 않는다

var num = Number(prompt('정수를 입력하시오',''));
    if(num%2==0){
        console.log('짝수입니다.');
    }else if(num%2==1){
        console.log('홀수입니다.');
    }if(num%3==0){
        console.log('3의배수입니다.');
    }
    console.log('종료됩니다')

ex) 중복 제거

 var result = Number(prompt('영어점수를 입력 하세요',''));
    if(result>=90 && result<=100){
        console.log('당신의 학점은 A학점입니다.');
    }else if(result>=80 && result<=89){
        console.log('당신의 학점은 B학점입니다.')
    }else if(result>=70 && result<=79){
        console.log('당신의 학점은 C학점입니다.')
    }else if(result>=60 && result<=69){
        console.log('당신의 학점은 D학점입니다.')
    }else{
        console.log('당신의 학점은 F학점입니다.')
    }
var result = Number(prompt('영어점수를 입력 하세요',''));
var grade = '';
    if(result>=90 && result<=100){
        grade='A';
    }else if(result>=80 && result<=89){
        grade="B";
    }else if(result>=70 && result<=79){
        grade="C";
    }else if(result>=60 && result<=69){
        grade="D";
    }else{
        grade="F";
    }
    console.log('당신의 학점은'+grade+'입니다.')

중첩 조건문
       if/else/if else 문 안에 if 문을 추가할 수 있다

var result = Number(prompt('영어점수를 입력 하세요',''));
    var grade = '';
    if(result>=0 && result<=100){
        if(result>=90 && result<=100){
        grade='A';
        }else if(result>=80 && result<=89){
            grade="B";
        }else if(result>=70 && result<=79){
            grade="C";
        }else if(result>=60 && result<=69){
            grade="D";
        }else{
            grade="F";
        }
        console.log('당신의 학점은'+grade+'입니다.')
    }else{
        console.log('잘못 입력 하셨습니다')
    }
var date = new Date();
var hour = date.getHours();
        if (hour < 11) {
            alert('아침 먹을 시간입니다.');
        } else {
            if (hour < 15) {
                alert('점심 먹을 시간입니다.');
            } else {
                alert('저녁 먹을 시간입니다.');
            }
        }

활용문제

놀이동산 입장료 계산

if문

var age = Number(prompt('나이를 입력하세요',''));
var code = prompt('입장코드를 입력하세요(A:야간 / B:주간)','');
var pay =0;
var discount =0;
var name = ''; //개장명

if(age>=1 && age<=500){
            if(code=='a' || code=='A'){
            name='주간개장';
            pay=30000;
            }else if(code=='b'|| code=='B'){
                name='야간개장';
                pay=20000;
            }
            else{
                console.log('잘못 입력하셨습니다.');
            }
            if(age>=1 && age<=3){
                discount = .1;
            }else if(age>=4 && age<=12){
                discount = .5;
            }else if(age>=13 && age<=19){
                discount = .7;
            }else if(age>=20){
                discount = 1;
            }
            total = pay*discount;
            console.log('당신은 '+ name +' 을 선택하셨고, 할인이 적용된 입장료는 '+ total +' 입니다.')
        }else{
            console.log('잘못 입력하셨습니다.')
        }

if문 + swtich 문

        var age = Number(prompt('나이를 입력하세요',''));
        var code = prompt('입장코드를 입력하세요(A:야간 / B:주간)','');
        var pay =0;
        var discount =0;
        var name = ''; //개장명

        if(age>=1 && age<=500){
            switch(code.toUpperCase()){
                case 'A':
                    pay=30000;
                    name='주간개장';
                    break;
                case 'B':
                    pay=20000;
                    name='야간개장';
            }
            
            if(age>=1 && age<=3){
                discount = .1;
            }else if(age>=4 && age<=12){
                discount = .5;
            }else if(age>=13 && age<=19){
                discount = .7;
            }else if(age>=20){
                discount = 1;
            }
            total = pay*discount;
            console.log('당신은 '+ name +' 을 선택하셨고, 할인이 적용된 입장료는 '+ total +' 입니다.')
        }else{
            console.log('잘못 입력하셨습니다.')
        }

2) switch문

  • 2개 이상의 조건을 처리할 때
  • if-else if-else 문을 대체할 수 있는 구조의 조건문
  • break - 해당 switch 문을 빠져나간다
  • break 문이 생략되면 그 다음 case 절이 참이 된다 ( or , || ) 
  • if 문의 경우 해당 조건절이 참일 때 자동으로 break 되지만 switch 문은 break로 해당 조건문을 종료 시켜주어야 한다.
  • 형식 
switch(변수/연산식/값){
case 값1:
//해당 값에 만족(참) 하면 실행할 코드;
break;

 case 값 2:
//해당 값에 만족(참) 하면 실행할 코드;
break;

case 값 3:
//해당 값에 만족(참) 하면 실행할 코드;
break;

default:
//위에 해당 case 값에 모두 만족하지 않을 때 실행할 코드;
}

if+switch 예시

var result = prompt('영어 점수를 입력하세요(0~100)','');
var grade = '';

if(result>=0 && result<=100){
            switch(parseInt(result/10)){
            case 10:
            case 9:grade='A';
            break;
            case 8:grade='B';
            break;
            case 7:grade='C';
            break;
            case 6:grade='D';
            break;
            default:grade='F';
          }
}else{
       alert('너 아까 그놈이지?');
}

alert('당신의 학점은 '+grade+' 입니다.')

2.반복문(loop문)

  • for()문 / for()in 문
  • while()문
  • do-while()문

1) for()문

   - 초기값 / 최종값(조건절) / 증감치 => 반복할 횟수

   - 중첩가능 / 조건문과 중첩가능

   - 반복 횟수가 명확할 때 사용

   - 형식

for(var 변수=초기값; 최종값/조건절; 증감치){
	//반복할 코드 작성;
    }

for문

var total1=0; //홀수
var total2=0; //짝수
for(var i=1; i<11; i++){
        total1+=i;
        total2+=i;
}

for 문 + if 문

var total1=0; //홀수
var total2=0; //짝수
var total3=0; //3의배수
for(var i=1; i<11; i++){
    if(i%2==1){
        total1+=i;
    }else{
        total2+=i;
    }
    if(i%3==0){
        total3+=i;
    }
}
console.log('1~10까지의 홀수의 합:' +total1);
console.log('1~10까지의 짝수의 합:' +total2);
console.log('1~10까지의 3의 배수 합:' +total3);

javascript 로 구구단 만들기

var i=prompt('구구단의 단을 입력 하세요','');
document.write("<h2>" +i+ "단 </h2>");
document.write("<table>");

for(var j=1; j<10; j++){
    document.write("<tr>");
    document.write("<td>" + i + "*" + j + " = " + i*j +"</td>");
    document.write("</tr>");
}
document.write("</table>");

학급 영어 평균

var result =0;
var grade ='';
var cnt =0;
var total=0;
var avg=0;

cnt=Number(prompt('학급 명 수를 입력하세요(명)',''));
   		for(var i=1; i<=cnt; i++){
        result = Number(prompt(i+' 번째 학생의 영어 점수를 입력하세요(0~100)',''));
        if(result >= 0 && result<=100){
            if(result>=90 && result<= 100){
                grade='A';
            }else if(result>=80 && result<=89){
                grade='B';
            }else if(result>=70 && result<=79){
                grade='C';
            }else if(result>=60 && result<=69){
                grade='D';
            }else{
                grade='F';
            }
            alert(i+'번째 학생의 학점은 '+ grade + '학점 입니다.');
            total+=result; // result 값이 참일 때 만 계산하기 위해 if문 안에 작성
        }else{
            alert('너는 또라이 입니까?');
            i--; // 잘못 입력 했을 때 반복 횟수를 1회 줄여 다시 그 반복차수로 돌아가기 위해 -1 처리 i-=1; 도 가능
        }
    }
    avg=total/cnt;
alert('학생 수는'+cnt+' 명 이고, 학생들의 영어점수의 총점은 :'+total+' 점 이고, 평균은:'+avg+' 점 이다');
alert('종료됩니다');

for문 안에 for문

 var i=0, j=0, total=0;
 
       for(i=2; i<10; i++){
        console.log(i+'단')
        for(j=1; j<10; j++){
            console.log(i+'*'+j+'='+i*j);
        }
       }

'JavaScript' 카테고리의 다른 글

Javascript window 객체  (0) 2022.08.30
Javascript object  (0) 2022.08.29
Javascript function  (0) 2022.08.22
Javascript 배열, 반복문  (0) 2022.08.19
Javascript 기초 자료형,연산자,내장함수, 배열  (0) 2022.08.18