Study JavaScript 0417 - 1hr while, for 반복문

변승훈·2022년 4월 17일
0

Study JavaScript

목록 보기
6/43

1. While 반복문

while 반복문의 문법은 다음과 같이 사용할 수 있다.

	while (condition) {	// 조건이 true이면 코드 실행!
      // 코드
      // '반복문 본문(body)'이라 불림
	}

condition(조건)이 ture이면 반복문에 본문에 있는 코드가 실행된다.

다음 예제는 i < 3 을 만족할 동안 i를 출력해주는 코드이다.

let i = 0;
while (i < 3 ) {	// 0, 1, 2가 출력
	alert(i)
    i++;
}

위의 코드에서 반복문 본문이 총 3번 반복하는 것을 알 수 있다.

아래의 예시는 while(i != 0)을 이용하여 while(i)로 만든 코드이다.
추가로 반복문 본문이 한 줄짜리라면 대괄호 { } 를 생략할 수 있다.

	let i = 3;
	while (i) { // i가 0이 되면 조건이 false가 되므로 반복문이 멈춘다.
      alert( i );
      i--;
	}
    <!-- { } 생략 버전 -->
    //	while(i) aler(i--);

2. do-while 반복문

do-while문법을 사용하면 조건을 반복문 본문 아래로 옮길 수 있다.

  do {
    // 반복문 본문
  } while (condition);

본문이 먼저 실행되고, 조건을 확인한 후 조건이 ture인 동안에만 본문이 계속 실행된다.

  let i = 0;
  do {
    alert( i );
    i++;
  } while (i < 3);

그렇다면 어떤 경우에 do-while문을 사용할까?
dp-while 반복문은 조건이 ture인지 아닌지에 상관 없이, 본문을 최소한 한 번 이라도 실행하고 싶을 때만 사용해야한다.
대부분의 상환에선 while문이 적합하다.

3. for 반복문

for 반복문은 while반복문 보다는 복잡하지만 가장 많이 쓰이는 반복문이다.

  for (begin; condition; step) {	// 시작, 조건, 단계
    // 반복문 본문
  }

아래의 예시를 살펴보자.

	for (let i = 0; i < 3; i++) { // 0, 1, 2가 출력됩니다.
      alert(i);
	}
구성요소예시설명
begin(시작)i = 0반복문에 진입할 때 단 한 번 실행
condition(조건)i < 3반복마다 해당 조건이 확인된다. false면 반복문 중지
body(본문)alert(i)조건이 true일 동안 계속해서 실행
step(단계)i++각 본문이 실행된 이후에 실행

일반적인 반복문의 알고리즘은 다음과 같다.

begin을 실행함
→ (조건이 true이면 → 본문 실행 후, step을 실행)
→ (조건이 true이면 → 본문 실행 후, step을 실행)
→ (조건이 true이면 → 본문 실행 후, step을 실행)
→ ...

for문에서 중요한 것은 ";"을 꼭 2개를 사용해줘야 하는 것이다.

4. Break

보통은 조건이 false면 반복문이 종료된다.
하지만 break를 사용해서 원하는 때에 빠져나올수 있다.

아래의 예시를 살펴보자.

  let sum = 0;

  while (true) {

    let value = +prompt("숫자를 입력하세요.", '');

    if (!value) break; // 사용자가 아무것도 입력하지 않았을 때

    sum += value;

  }
  alert( '합계: ' + sum );

5. Continue

continue는 현재 반복을 종료시키고 다음 반복으로 넘어가고 싶을 때 사용할 수 있다.

아래의 예시를 살펴보자.

  for (let i = 0; i < 10; i++) {

    // 조건이 참이면(짝수) 뒤의 본문은 실행되지 않는다.
    if (i % 2 == 0) continue;

    alert(i); // 1, 3, 5, 7, 9가 차례대로 출력됨
  }

6. Label

여러개의 중첩 반복문을 한 번에 빠져나와야 하는 경우가 종종 있다.

아래의 예시는 i와 j를 반복하여 (0,0)부터 (2,2)를 구성하는 (i,j)좌표를 입력하게 해주는 예시이다. 한 번 살펴보자.

  for (let i = 0; i < 3; i++) {

    for (let j = 0; j < 3; j++) {

      let input = prompt(`(${i},${j})의 값`, '');

      // 여기서 멈춰서 아래쪽의 `완료!`가 출력되게 하려면 어떻게 해야 할까?
    }
  }
	alert('완료!');

위의 코드에서 단순히 break를 사용하면 되는게 아닐까? 라고 생각했다면 틀렸다.
반복문이 2개가 중첩이므로 두 개 모두를 빠져나올수는 없다.
이럴때 레이블을 사용하면 된다.

  labelName: for (...) {
    ...
  }

반복문 안에서 break labelName 문을 사용하면 해당 반복문을 빠져나올 수 있다.

  outer: for (let i = 0; i < 3; i++) {

    for (let j = 0; j < 3; j++) {

      let input = prompt(`(${i},${j})의 값`, '');


      if (!input) break outer; // 사용자가 아무것도 입력하지 않거나 Cancel 버튼을 누르면 두 반복문 모두를 빠져나온다.

      // 입력받은 값을 가지고 무언가를 함
    }
  }
  alert('완료!');
profile
잘 할 수 있는 개발자가 되기 위하여

0개의 댓글