제어문

제어문이란?

  • 프로그램 실행과정을 제어하기 위해 사용하는 구문
  • 반복 처리 및 선택 처리를 할 때 사용
    • 조건문(conditional statements) : 조건에 따라 다음 문장 선택적 실행
      • if문, if~else문, 다중 if~else문, switch~case문
    • 반복문(loop statements) : 동일 명령을 여러 번 처리하거나 특정 연산을 반복적으로 처리
      • for문, while문, do~while문
    • 보조 제어문(break or continue statement) : 조건문을 만나면 건너뛰거나 반복 수행 종료, 반복문 내에서 사용
      • continue문, break문


1. 조건문

  • 조건문이란 프로그램 내에서 주어진 결과값에 따라 수행하도록 제어하는 실행문입니다.
  • if문, if/else문, if/else if/else문, switch문


1 - 1. if문

  • 조건식이 참(true)이면 블록 내의 문장을 처리, 거짓(false)이면 블록을 빠져 나감
  • 조건식에 true 값을 직접 대입하면 무조건 처리하도록 제어 가능
  • if문 안에 다른 if문 포함 가능

      if(조건식) {
          실행문장
          }
    
      ------------
      if(조건식A) {
          실행문장;
          if(조건식B) {
              실행문장;
          }
      }
    


1 - 2. if/else문

  • 조건식이 참(true)인 경우와 거짓(false)인 경우 처리할 문장이 각각 따로 있을 때 사용
  • 조건식이 2가지 결과값을 명확히 제어하고자 할 때 사용

      if(조건식) {
          //조건이 참일 때, 실행문;
      } else {
          //조건식이 거짓일 때, 실행문;
      }
    


1 - 3. if/else if/else문 (다중 if~else문)

  • 여러 조건을 체크해야 할 때 사용
  • 다중 if~else문은 길어지면 전체적인 흐름 파악이 어려워, 이를 보완하는 switch/case문을 사용

     if(조건식a) {
         조건식a 결과가 참일 , 실행문;
     } else if(조건식b) {
         조건식b 결과가 참일 , 실행문;
     } else {
         위의 모든 조건식을 만족시키지 못한 경우의 실행문;
     }
    


1 - 4. switch/case문 (다중 조건문)

  • 다중 if~else문보다 가독성 측면에서 좋음

     switch(비교  근본) {
         case 비교 값1:
             실행문;
             break;
         case 비교 값2:
             실행문;
             break;
         default:
             위의 비교 값과 일치하는 값이 없는 경우 실행.
             else와 같은 역할, 생략 가능
     }
    




2. 반복문

  • 프로그램 내에서 똑같은 명령을 일정 횟수만큼 반복하여 수행하도록 제어하는 실행문입니다.
  • for문, while문, do~while문


2-1. for문

  • 반복 횟수에 중점을 둠. 조건이 만족되는 동안 반복 실행
  • 괄호 안에 두 개의 세미콜론(;)으로 분리된 세 개의 수식

    · for(초기식; 조건식; 증감식) {}

  • 수식의 동작에 따라 블록 안의 문장 반복 실행
  • 조건식에 부합하면 반복문을 빠져나감

      for(초기식; 조건식; 증감식) {
          실행 문장;
      }
    
  • 초기식: 반복 변숫값 초기화. for문 시작할 때 단 한번만 실행
  • 조건식: 블록 내 문장을 얼마나 반복할지 결정. 조건식이 참인 동안 반복
  • 증감식: 초기식에서 초기화한 변수의 값 증가 또는 감소


2 - 2. while문

  • 조건이 참(true)인 동안 블록 내 문장 처리, 거짓(false)이면 블록을 벗어나 다음 문장 처리
  • 만약 while문의 조건식을 처음 실행할 때 거짓(false)이면 한 번도 블록 내 문장을 처리하지 않고 블록을 벗어남
  • 또한 while문의 조건식이 항상 참(true)이 되면 무한 반복
    • 이런 경우 실행 문장 내에 if문과 break문을 사용하여 특정 조건을 만족하면 반복을 중단하도록 해야 한다.
      while(조건식) {
          실행 문장; //조건이 참인 동안 실행되는 실행문;
      }
    


2 - 3. do~while문

  • while문이 조건식을 먼저 체크 후 참이면 블록 내의 문장을 처리하는 것에 반해, do~while문은 블록 내 문장을 먼저 처리한 후 조건식 체크
    • 따라서 블록 내 문장을 한 번 이상 반드시 수행
  • do~while문을 작성할 때는 끝에 세미콜론(;)을 꼭 작성

      do {
          실행 문장;
      }
      while(조건식;)
    


2 - 3. 보조 제어문 break문

  • break문은 for문, while문, do~while문과 같은 반복문에서 사용
  • switch~case문 내에서 해당 블록을 강제적으로 벗어나, 다음 문장을 처리하도록 할 때 사용
  • break문 예시
      //3의 배수로 0~100까지 출력
                  for(let i = 0; i <= 100; i+=3) {
                      //document.writeln(i);0 3 6 9 12 15 18 21
                      if(i>=20) {
                          break;//제어문에서 벗어날 때 사용.
                      }
                      document.writeln(i);
                  }
    


2 - 4. 보조 제어문 continue문

  • if문과 함께 많이 사용되며, if문의 조건식이 참이면 continue문 이후의 문장을 처리하지 않고 제어를 반복문의 시작 위치로 옮기는 역할
  • break문은 반복문을 완전히 벗어나게 하는 역할을 하는 반면, continue문은 제어를 반복문의 시작 위치로 이동시키는 차이점이 있음

      var x=0;
      var sum=0;
      for(x=1; x<=100; x++) {
          if(x%3 != 0)
          continue;
    
          sum+=x;
          document.write(x+" ");
      }
      document.write("<p/>");
      document.write("1~100까지 수 중 3의 배수 합 : <b>" + sum + "</b>");
    

    · 결과물

      3 6 9 12 15 18 21 24 27 30 33 36 39 42 45 48 51 54 60 63 66 69 72 75 78 81 84 87 90 93 96 99
    
      1~100까지 수 중 3의 배수 합 : 1683