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를 살펴보자!