Javascript(반복문)

전예훈·2023년 2월 21일
0

for

for문은 반복문의 가장 기초적인 반복문으로
반복문을 배우기 전까지는 일일이 코딩하거나 수기로 작성해서 원하는것을 작성하였습니다.

하지만 이 방법에는 한계가 있는데 만약 1부터 5까지의 합이 아니라 100,000까지의 합이라면 어떻게 될까요? 같은 코드를 100,000줄을 반복해서 작성해야 할 것입니다. 코드를 작성하는 것도 힘들지만, 그런 코드는 가독성도 매우 떨어질 수 밖에 없습니다.

이때 반복문을 사용하면 불필요한 코드를 반복적으로 사용하지 않고 간결하게 코드를 작성할 수 있습니다. 1부터 5까지의 수를 모두 더하는 코드를 for문으로 구현하면 다음과 같습니다.

let result = 0;

for (let num = 1; num <= 5; num++) {
  result = result + num;
}

console.log(result); // 15

for 기본적인 형식은

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

으로 이루어져 있습니다.

for 뒤에 오는 소괄호(())에는 각각 초기값, 조건식, 증감식이 들어갑니다. 코드블록에는 반복해서 실행할 코드가 들어갑니다. for문을 구성하는 각 요소에 대해 하나하나 자세히 살펴 보겠습니다.


초기값: 증감식 반복횟수를 카운트하는 역할을 하는 변수입니다. (이때 변수는 정수를 의미하는 ‘integer’의 약자인 i를 주로 사용합니다.) 초기값은 반복문의 코드블록 내부에서만 유효합니다.

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

조건식: 코드블록 내부의 코드를 실행 여부를 결정합니다. true일 경우에는 코드를 실행하며, false일 경우 반복문이 종료됩니다.

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

증감식: 코드블록 내부의 코드를 실행한 후 초기값으로 선언된 변수를 증가 또는 감소시키기 위한 표현식입니다.

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

문자열과 반복문

문자열에서도 반복문을 활용 할 수있는데 몇가지 예제를 보면서 반복문을 공부하도록 하겠습니다.

인덱스(index)

문자열의 각 문자는 순서를 가지고 있습니다. 첫 번째 문자의 인덱스는 0입니다.

let str = 'yeahhun';
console.log(str[0]); // 'y'
console.log(str[4]); // 'h'

길이

문자열의 길이는 문자열 뒤에 .length를 붙임으로써 조회할 수 있습니다.

let str = 'yeahhun';
console.log(str.length); // 7

반복문의 중첩

반복문은 중첩이 가능하고 박복문 내부에 또 다른 반복문 사용이 가능합니다.

두개의 주사위를 굴려서 나올 수 있는 모든 경우의 수를 구하는 예제를 보도록 하겠습니다.

for (let i = 1; i <= 6; i++) {
	for (let j = 1; j <= 6; j++) {
		console.log(`첫번째 주사위는 ${i}, 두번째 주사위는 ${j}입니다.`);
	}
}

위의 반복문을 보면 외부 반복문의 초기화와 조건식 평가가 이루어진 후, 내부 반복문이 실행됩니다. 내부 반복문 또한 초기화와 조건식 평가가 이루어진 후 내부에 있는 코드가 실행되고, 증감식, 조건식 평가가 반복적으로 이루어 집니다. 내부 반복문의 조건식 평가가 false가 되면, 내부 반복문은 종료가 되고 외부 반복문의 증감식과 조건식 평가가 이루어 집니다. 이때 조건식 평가가 true면, 다시 내부 반복문을 순환하는 방식으로 진행됩니다. 외부 반복문의 조건식이 false가 되면 모든 반복문이 종료가 됩니다.

반복문의 중첩으로 구구단 만들어보기

코딩을 공부할때는 직접 타이핑 해보면서 하는 것이 가장 큰 공부라고 생각됩니다. 그래서 구구단을 예제로 공부를 해보겠습니다.

for (let i = 2; i <= 9; i++) {
  console.log(`${i}단`);
  for (let j = 1; j <= 9; j++) {
    console.log(`${i} x ${j} = ${i * j}`);
  }
}

이런식으로 출력 결과 가 나오게 됩니다.


while문 do~while 문

대표적인 반복문인 for문을 학습했습니다. 이번에는 또다른 반복문인 while문을 배워 보겠습니다.

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

let num = 0;

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

위 코드를 for 문으로 바꾼다면 아래와 같이 됩니다.

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

while문을 사용할 때는 무한루프를 주의해야 합니다. 무한루프란 반복문이 종료되는 조건식이 항상 참으로 평가되어 무한히 반복되는 현상을 말합니다. 따라서 while문을 작성할 때는 조건식이 false로 평가되는 순간이 있는지 반드시 주의하여야 합니다.

do while 문

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

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

마지막으로 for 문과 while문을 총 정리 하자면

for문과 while문의 용도는 명확하게 구분되지 않습니다. while문으로 할 수 있는 것을 for문으로 구현이 가능하고, for문으로 할 수 있는 것을 while문으로 구현이 가능합니다.

for문을 사용하는 경우

반복 횟수가 비교적 명확할 때
배열, 문자열 내부를 순회할 때
반복문의 중첩이 필요할 때

while문을 사용하는 경우

반복 횟수가 명확하지 않을 때

profile
더욱더 QA스럽게!

0개의 댓글