본문 바로가기
카테고리 없음

JavaScript 기초 : 제어문 4. While 반복문

by 조크리 2020. 9. 8.
반응형

4. while 반복문 

//while문 
while (조건부분) {
  동작 부분
}

while문과 for문은 서로 대체가 가능하다.

while문은 조건 부분이 true 일 때까지 작동한다. 즉, false가 되면 멈춘다는 것이다. 

 

for문과 while문은 서로 대체 될 수 있다. 

 

하지만 while문은 for문과 다르게 초기화 부분이 없기 때문에 while문 밖에서 글로벌 변수를 만들어 주어야 한다!

 

4-1. while문의 실제 사용

//while문 
let i = 1;

while (i <= 10) {
  console.log(`${i} 가치 있는 서비스를 개발하자!`);
  i++;
}

//for문
for (i = 1; i <=10; i++) {
	console.log(`${i} 가치 있는 서비스를 개발하자!`);
}

 

그럼 while문은 언제 사용할까?

아래 예시를 보자. 

30이상의 수 중에서 7의 배수인 가장 작은 수를 출력하시오. 

//30이상의 수 중에서 7의 배수인 가장 작은 수를 출력하시오! 

let i = 30;

while (i % 7 !==0) {
  i++;
}

console.log(i);

이 경우 while 문을 사용하는 게 효과적이다.

일단 변수를 30으로 설정한 뒤에 변수 나누기 7을 해줘서 나머지가 있는지, 없는지 확인하는 것이다. 

while문의 조건 부분이 false이면, 즉 i 나누기 7을 했을 때 나머지가 0이면 while문이 끝나고, 그 i값이 출력된다!

 

 

4-2. for문과 while문의 차이점!

 

for문은 보통 조건 비교에 사용되는 값을 반복문 내부에서만 사용하고 반복이 끝나면 외부에서 사용할 수 없다. 

while문은 글로벌 변수를 조건 비교에 사용하고 반복문 내부에서도 사용하며

반복문이 종료된 후에도 변수를 사용해야 할 때는 for문보다 while을 사용하는 것이 좋다. 

 

 

4-3. for문 사용 예시

 

★1부터 100까지 중에 홀수인 수를 출력하라.

 

1) i를 1부터 100까지 반복하면서 2로 나누었을 때 나머지가 1인(혹은 나머지가 0이 아닌)경우만 출력하라!

//i를 1부터 100까지 반복하면서 2로 나누었을 때 나머지가 0이 아닌 경우만 i를 출력!

let i = 1;

while (i <= 100) {
  if (i % 2 !== 0) {
      console.log(i);
    }
  i++;
}

 

2) i를 1~50까지 반복하면서 i를 출력하는 방법

//i를 1~50까지 반복하면서 i * 2 - 1 값을 출력하는 방법

let i = 1;

while (i <= 50) {
  console.log(i * 2 - 1);
  i++;
}

 

2) i를 2씩 증가시키는 방법

//i를 1부터 100까지 반복하면서 i값을 2씩 증가시키는 방법

let i = 1;

while (i <= 100) {
  console.log(i);
  i += 2;
}

 

★정수 i가 정수n의 약수라면, n을 i로 나누었을 때 나머지가 0이 된다. 

while문을 사용해서 정수 200의 약수를 모두 출력하고, 총 몇 개의 약수가 있는지 출력하는 프로그램을 작성해보자!

const N = 200;

let i = 1;
let count = 0;

while (i <= N) {
  if (N % i === 0) {
    console.log(i);
    count++;
  }
  i++;
}

console.log(`${N}의 약수는 총 ${count}개입니다.`);

총 몇 개의 약수가 있는지 출력하려면 count 변수를 따로 설정해주어야 한다. 

그리고 count 변수 값은 if 문 내부에서 증가시켜주고 while문이 끝나고 난 뒤 따로 count변수 값을 출력해주면 된다.

 

중요한 건 if 문 안에 count 변수 값이 증가하게 하는 것,

if 문 밖, while문 안에서 i값이 1씩 증가하게 하는 것이다!

 

 

★while 문으로 구구단을 만들어보자!

//while 문으로 구구단 만들기
let i = 1;
while (i <=9) {
	let j = 1;
    while (j <=9) {
    	console.log(`${i} * ${j} = ${i * j}`);
        j++;
    }
    i++;
}

for문으로 구구단 만들기를 해보았는데 이번에는 while문으로 변환시켜 보았다. 

for문을 좀 더 풀어쓴 느낌이 난다. 

 

for랑 while은 꾸준히 예제를 풀며 연습해서 자동으로 사용할 수 있도록 해야겠다. 

 

★while 문으로 피보나치 수열을 만들어보자!

 

너무나 어려운 피보나치 수열.... for문으로 일단 변수 선언하는 것과 수행 부분 나타내는 것은

어느 정도 익혔으니 이제 while문으로 바꾸어만 보자!

//while문으로 피보나치 수열 만들기

let current = 1;
let previous = 0;
let i = 1;

while (i <= 50) {
  console.log(current);
  let temp = previous;  // previous를 임시 보관소 temp에 저장
  previous = current;
  current = current + temp;  // previou 말고  기존 previous 값이 저장돼 있는 temp 더해주기
  i++;
}

 

다음에는 break와 continue를 살펴보자!

 

반응형