[TIL / JavaScript] 조건문과 반복문 (2)

Changyun Go·2021년 7월 21일
0
post-thumbnail

switch 문


  • switch 문은 switch 문의 표현식을 평가하여 그 값과 일치하는 표현식을 갖는 case 문으로 실행 순서를 이동시킨다.
switch (표현식) {
  case 표현식1:
    switch 문의 표현식과 표현식1이 일치하면 실행될 문;
    break;
  case 표현식2:
    switch 문의 표현식과 표현식2가 일치하면 실행될 문;
    break;
  default:
    switch 문의 표현식과 일치하는 표현식을 갖는 case 문이 없을 때 실행될 문;
}
  • switch 문의 표현식과 일치하는 표현식을 갖는 case 문이 없다면 실행 순서는 default 문으로 이동한다.
  • default 문은 선택적으로 사용할 수 있다.
  • switch 문은 논리(boolean)보다는 다양한 상황(case)에 따라 실행할 코드 블록을 결정할 때 사용한다. → 문자열, 숫자 값인 경우가 많다.

break 문

let a = 2 + 2;

switch (a) {
  case 3:
    alert( '비교하려는 값보다 작습니다.' );
  case 4:
    alert( '비교하려는 값과 일치합니다.' );
  case 5:
    alert( '비교하려는 값보다 큽니다.' );
  default:
    alert( "어떤 값인지 파악이 되지 않습니다." );
}
  • case 문 안에 break 문이 없으면 switch 문을 탈출하지 않고 이어지는 모든 case 문과 default 문을 실행한다. → 폴스루(fall through)라 한다.

위 코드를 실행하면 3개의 alert 문이 모두 실행된다.

alert( '비교하려는 값과 일치합니다.' );
alert( '비교하려는 값보다 큽니다.' );
alert( "어떤 값인지 파악이 되지 않습니다." );

올바른 switch 문은 case 문 마지막에 break 문을 사용한다.

let a = 2 + 2;

switch (a) {
  case 3:
    alert( '비교하려는 값보다 작습니다.' );
    break;
  case 4:
    alert( '비교하려는 값과 일치합니다.' );  // 실행
    break;
  case 5:
    alert( '비교하려는 값보다 큽니다.' );
    break;
  default:
    alert( "어떤 값인지 파악이 되지 않습니다." );
}

조건에 해당하는 case 문만 실행된다.

  • default 문에는 break 문을 생략하는 것이 일반적이다.
  • 여러 개의 case 문을 중복해서 사용할 수도 있다.
var year = 2000; // 2000년은 윤년으로 2월이 29일이다.
var month = 2;
var days = 0;

switch (month) {
  case 1: case 3: case 5: case 7: case 8: case 10: case 12:
    days = 31;
    break;
  case 4: case 6: case 9: case 11:
    days = 30;
    break;
  case 2:
    // 윤년 계산 알고리즘
    // 1. 년도가 4로 나누어 떨어지는 해는 윤년(2000, 2004, 2008, 2012, 2016, 2020…)
    // 2. 그 중에서 년도가 100으로 나누어 떨어지는 해는 평년(2000, 2100, 2200...)
    // 3. 그 중에서 년도가 400으로 나누어 떨어지는 해는 윤년(2000, 2400, 2800...)
    days = ((year % 4 === 0 && year % 100 !== 0) || (year % 400 === 0)) ? 29 : 28;
    break;
  default:
    console.log('Invalid month');
}

console.log(days); // 29

[JavaScript] 반복문

  • 반복문(Loop statement)은 주어진 조건식(conditional expression)의 평가 결과가 true인 경우, false가 될 때까지 코드 블록을 반복 실행한다.
  • 조건문이 컴퓨터를 똑똑하게 한다면, 반복문은 컴퓨터를 강력하게 한다.

while 문


  • 조건(boolean)이 true에서 false가 될 때까지 코드 블록을 반복해서 실행한다.
while (조건){
    반복해서 실행할 코드
}

무한 루프

  • 무한 루프(infinite loop)는 종료 조건을 만나지 못해 프로그램이 끊임없이 동작되는 상태이다.

아래 코드를 실행시키면 무한 루프가 발생한다.

while(true){
    document.write('coding everybody <br />');
}

document.write는 JavaScript를 이용해서 웹페이지에 텍스트를 출력한다.

  • 무한 루프를 예방하는 방법은 적당한 시기에 종료 조건(false)를 만나는 것이다.
var i = 0;
// 종료 조건으로 i의 값이 10보다 작다면 true, 같거나 크다면 false가 된다.
while(i < 10){
    // 반복이 실행될 때마다 coding everybody <br />이 출력된다. 
    document.write('coding everybody <br />');
    // i의 값이 1씩 증가한다.
    i++
}

종료 조건에 의해 while 문이 9번 반복되고 프로그램이 종료된다.

var count = 0;

// 무한루프
while (true) {
  console.log(count);
  count++;
  // count가 3이면 코드 블록을 탈출한다.
  if (count === 3) break;
} // 0 1 2

코드 블록 탈출 조건을 if 문에 부여하고 break 문으로 코드 블럭을 탈출할 수도 있다.

P.S.

윤년을 구하는 예제를 보면서 나라면 어떻게 구현했을까 하는 생각이 문득 들었다🤔 앞으로 백준이나 프로그래머스 같은 사이트를 통해 코딩 과제를 수행하면서 코드를 작성하는 감을 익혀보고 싶다😀

참고 문서


0개의 댓글

관련 채용 정보