새소식

프론트엔드 공부/자바스크립트

반복문 for, while, do while

  • -

반복문

다수의 기본적인 계산에서부터 완료해야 할 비슷한 작업들을 가지고 있는 상황들에 대해서까지, 반복문은 같은 것을 계속 그리고 계속 다시 하는 것에 모든 관련이 있는데, 이는 빠르게 반복적인 일을 완료하는 데 뛰어납니다.

반복문에는 for, while, do while 이 있습니다.


for문

JavaScript의 대표적인 반복문인 for문에 대해서 학습해 보겠습니다. 

for문의 다음과 같이 이루어져 있습니다. for 뒤에 오는 소괄호(())에는 각각 초기값, 조건식, 증감식이 들어갑니다. 코드블록에는 반복해서 실행할 코드가 들어갑니다

for (초기값; 조건식; 증감식) {
	// 실행할 코드
}

초기값 : 증감식 반복횟수를 카운트하는 역할을 하는 변수, 이것은 보통 숫자로 설정된 변수인데, 반복문이 실행될 횟수(count)까지 증가됩니다.

// 초기값(i)을 선언하고 1을 할당
for (let i = 1; 조건식; 증감식) {
	console.log(i);
}

조건식 : 코드블록 내부의 코드를 실행 여부를 결정, 이것은 언제 반복문이 반복을 멈춰야만 하는지를 정의합니다. 이것은 일반적으로 비교 연산자(comparison operator)를 특징으로 하는 표현식(expression)인데, 이는 종료 조건이 충족되었는지를 확인하는 테스트입니다.

// i가 3보다 작거나 같을 경우 코드 실행, 3보다 클 경우 반복문 종료
for (let i = 1; i <= 3; 증감식) {
	console.log(i);
}

증감식 : 코드블록 내부의 코드를 실행한 후 초기값으로 선언된 변수를 증가 또는 감소시키기 위한 표현식, 이것은 반복문이 전체 반복을 거쳤을 때마다 항상 평가(혹은 실행)됩니다. 이것은 보통 카운터 변수를 증가 (혹은 몇몇 경우에는 감소)시키기 위해, 조건이 더 이상 true가 아닌 지점에 가까워지게 하기 위해 제공됩니다.

// 코드가 실행될 때마다 i가 1씩 증가
for (let i = 1; i <= 3; i++) {
	console.log(i); // 1 2 3
}

 

코드 블럭을 감싸는 중괄호 { }  — 이 코드는 반복문이 반복될 때마다 실행될 것입니다.

 

// 문제 : 0 이상인 정수를 입력받고 입력받은 정수 모두를 합산한 값을 구하여라.

// 함수선언문으로 선언한 함수
// 함수선언 함수이름(매개변수){함수 실행시 실행 할 코드 작성}
function sumTo(num) {
  // 문제에 대한 의사코드 작성
  // 1. 수를 입력받는다
  // 2. 0이상인 정수 (정수는 양의 정수 음의정수가 있다. 0이상의 정수는 양의정수 즉, 1부터 ~ ++ )
  // 3. 0이상 ~ 해당 수 까지의 값을 합하여 리턴해야한다.
  let sum = 0  // sum 이라는 함수내 지역변수 선언
  for(let i = 0; i<=num; i++) {// for반복문 실행(i = 0 이라는 초기값, i<=num 매개변수와 같거나 작음 조건식, ++증가처리하는 증감식)
 							  // {} 안의 코드 실행
    sum += i; // sum이라는 지역변수에 반복 실행된 지역변수값을 합해준다.
  }
  return sum; // 위 반복문으로 실행된 sum값을 리턴받는다
}

//sumTo(100) 으로 함수호출시 1~100까지 값을 모두 더한 5050 출력됨.

 


while 문

또다른 반복문인 while문을 배워 보겠습니다. 초기화, 조건식, 증감식이 모두 필요한 for문과 달리 while문은 조건식만 입력한 후 조건식의 평가결과가 true인 경우 코드블록 내부의 코드를 반복하여 실행합니다.

for (let num = 0; num < 3; num++) {
	console.log(num); // 0 1 2
}

위 반복문 for 방법을 아래 while으로 바꾸면 이렇게 표현됩니다.

let num = 0;

while (num < 3) {
	console.log(num); // 0 1 2
	num++
}

while문을 사용할 때는 무한루프를 주의해야 합니다. 무한루프란 반복문이 종료되는 조건식이 항상 참으로 평가되어 무한히 반복되는 현상을 말합니다.

더보기

 경고    모든 반복문과 마찬가지로 —초기화식(initializer)이 결국 조건이 true가 아닌 지점에 닿도록, 경우에 따라, 증가되거나 혹은 감소되게 해야만 합니다. 만약 그렇지 않다면, 반복문은 영원히 계속될 것이고, 브라우저가 강제로 멈추게 하거나, 브라우저가 멈출(crash) 것입니다. 이것은 무한 루프(infinite loop)라고 불립니다.

 

let num = 1;
while (num > 0) {
	console.log(num);
	num++;
}

위 코드에서 num은 항상 0보다 크므로, 무한루프가 발생합니다. 따라서 while문을 작성할 때는 조건식이 false로 평가되는 순간이 있는지 반드시 주의하여야 합니다.


do…while문

do…while문은 while 뒤에 오는 조건식이 true로 평가되는 동안 do 뒤에 오는 코드블록 내부의 코드를 반복하여 실행합니다. 단, 이 경우 do의 코드블록 내부의 코드가 최소 한 번은 실행됩니다.

do {
	console.log('코드블록 내부의 코드는 최소 한 번은 실행됩니다.') 
	// '코드블록 내부의 코드는 최소 한 번은 실행됩니다.'
} while (false)

 


break 로 반복문 종료하기

만약 여러분이 모든 반복이 완료되기 전에 반복문을 종료하고 싶다면, 여러분은 break문을 사용할 수 있습니다. 입력 표현식과 일치하는 바반복문에서 case가 충족되었을 때, break문은 즉시 반복문을 종료하고 반복문 다음에 있는 코드로 이동합니다.

break문은 즉시 반복문을 종료하고 브라우저가 반복문 뒤에 있는 코드로 이동하게 합니다.

예제) 다음 함수는 i가 3일 때 while loop를 종료하는 break 문이 있고, 그러고는 3 * x값을 반환합니다.

function testBreak(x) {
  var i = 0;

  while (i < 6) {
    if (i == 3) {
      break;
    }
    i += 1;
  }

  return i * x;
}

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.