말랑말랑 LAB

[JavaScript] 제어문 본문

JavaScript/JavaScript 스터디

[JavaScript] 제어문

쭈02 2018. 12. 28. 23:02

제어 구문


제어문(Control flow statement)은 주어진 조건에 따라 코드 블록을 실행(조건문)하거나 반복 실행(반복문)할 때 사용한다.

일반적으로 코드는 위에서 아래 방향으로 작성한 순서대로 실행되는데 이를 순차적 실행이라고 한다.

제어 구문은 이 순차적 실행 흐름을 변화시킨다.


o 조건문 (Conditional Statement)

  • 조건식의 값에 따라 실행 흐름을 분기
  • 주어진 조건식의 평가 결과에 따라 코드 블럭의 실행을 결정

- if/else문

  • 조건의 만족 여부에 따라 처리할 작업 선택
  • 즉, 논리적 참/거짓(true/false)에 따라 실행할 코드 블록 결정



  • 예제



## 아래 예제는 고혈압 판정에 대한 내용만 있다 --> 저혈압 판단 로직을 추가해보자 ! (저혈압 기준: 100/60mmHg)

예제 파일: 

high_pressure.html




## 아래 예제를 삼항 조건 연산자로 바꿔보자 !




- switch 문

  • 분기점이 2개 이상일 때 효과적

  • switch 문의 표현식을 평가하여 그 값과 일치하는 표현식을 갖는 case 문으로 실행 순서를 이동시킨다.

  • 이 때, switch문의 표현식과 일치하는 표현식을 갖는 case 문이 없다면 default 문으로 이동한다. (default는 옵션 - 사용할 수도 있고 사용하지 않을 수도 있다)


  • 예제



## 위의 윤년 예제를 이용해서 날짜가 주어졌을 때 일수를 구하는 로직을 switch문으로 구현한 예제

아래 빈칸에 들어갈 코드를 채워보자 !

* 힌트: case문은 반드시 하나만 사용해야 하는 것은 아님! 여러 개의 case 문을 중복해 사용할 수도 있다






o 반복문 (Loop Statement)

  • 일정한 처리를 한 다음, 원래 위치로 돌아가 똑같은 처리를 반복
  • 주어진 조건식의 평가 결과가 참인 경우 코드 블럭을 실행
  • 그 후 조건식을 다시 검사하여 여전히 참인 경우 코드 블록을 다시 실행한다. 이를 조건식이 거짓일 때까지 반복


- while문

  • 가장 먼저 조건식을 평가한 후, 참이면 코드 블록을 계속 반복해서 실행, 거짓이면 실행 종료

  • 만약 조건식의 평가 결과가 Boolean 값이 아니면 Boolean 값으로 강제 변환되어 참/거짓 구별 

  • 아래와 같이 조건식이 항상 참(True)이면 무한 루프에 빠지게 됨 --> break문으로 while 문을 탈출하는 조건을 추가해줘야 함

  • break문: while 문에서 빠져나옴
    continue문: while문의 시작 부분으로 되돌아감

  • 예제


(순차 검색, 이진 검색은 알고리즘에 대한 이해 필요)







- do/while문

  • 먼저 문장을 실행하고(do) 뒤에 조건식(while)을 평가







- for문

 

 

  1. for 문을 실행하면 가장 먼저 초기화식 var i = 0이 실행된다. 초기화식은 단 한번만 실행된다.

  2. 초기화식의 실행이 종료되면 조건식으로 실행 순서가 이동한다.
    현재 변수 i는 0이므로 조건식의 평가 결과는 true다.

  3. 조건식의 평가 결과가 true이므로 실행 순서가 코드 블록으로 이동하여 실행된다. 증감문으로 실행 순서가 이동하는 것이 아니라 코드 블록으로 실행 순서가 이동하는 것에 주의하자.

  4. 코드 블록의 실행이 종료하면 증감식으로 실행 순서가 이동한다. 증감식 i++가 실행되어 i는 1이 된다.

  5. 증감식 실행이 종료되면 다시 조건식으로 실행 순서가 이동한다. 초기화식으로 실행 순서가 이동하는 것이 아니라 조건식으로 실행 순서가 이동하는 것에 주의하자. 초기화식은 단 한번만 실행된다.
    현재 변수 i는 1이므로 조건식의 평가 결과는 true다.

  6. 조건식의 평가 결과가 true이므로 실행 순서가 코드 블록으로 이동하여 실행된다.

  7. 코드 블록의 실행이 종료하면 증감식으로 실행 순서가 이동한다. 증감식 i++가 실행되어 i는 2가 된다.

  8. 증감식 실행이 종료되면 다시 조건식으로 실행 순서가 이동한다.
    현재 변수 i는 2이므로 조건식의 평가 결과는 false다.
    조건식의 평가 결과가 false이므로 for 문의 실행이 종료된다.



## for문을 이용해 두 개의 주사위를 던졌을 때, 두 눈의 합이 6이 되는 모든 경우의 수를 출력해보자 !

힌트: for문 안에 for문을 중첩해서 사용할 수 있다





- for/in문

  • for (변수 in 객체 표현식) 문장 
  • 객체 안의 프로퍼티를 순회하는 반복문




o 점프문
  • 종류: break문, continue문, return문, throw문
- 라벨문(Label Statement)
  • 모든 문장에 라벨을 붙일 수 있다
  • 프로그램의 실행 순서를 제어하기 위해 사용
  • switch 문의 case 문default 문도 라벨문이다
  • 라벨문은 중첩된 for 문 전체를 빠져나올 때 유용하지만 그 외의 경우는 일반적으로 권장하지 않음
    • 라벨문을 사용하면 프로그램의 흐름이 복잡해져서 가독성이 나빠지고 오류를 발생시킬 가능성이 높아지기 때문 !
- break문
  • switch문과 반복문 안에서만 사용 가능
  • 가장 안쪽의 switch문/반복문에서 빠져나올 때 사용하며, 라벨을 지정하여 점프할 수 있다
  • 반복문을 더 이상 진행하지 않아도 될 때 불필요한 반복을 회피할 수 있어 유용
## 아래 예제의 결과값을 예측해보자 !



## 아래와 같이 라벨을 지정하지 않은 break를 쓰면 결과값이 어떻게 달라질지 생각해보자 !




continue문
  • 반복문 안에서만 사용 가능
  • continue문을 만나면 반복문 실행을 멈추고 반복을 새로 시작
  • 즉, 코드 실행을 현 지점에서 중단하고 반복문의 증감식으로 이동
    • break 문처럼 반복문을 탈출하지는 않는다
## 아래 예제의 결과값을 예측해보자 !



## 아래 빈칸에 들어갈 코드를 채워보자 ! (힌트: 바로 위 주석 참고)






Comments