JS) 반복문(for, while)

Cecilia·2022년 12월 6일
0

JavaScript

목록 보기
5/36
post-thumbnail

<초보자를 위한 JavaScript 200제>와 MDN을 참고한 글입니다.


for

특정 코드를 반복하는 흐름을 제어한다.


문법은 아래와 같다.

for (초기값; 조건식; 어떤 간격으로) {
  실행할 문장
}

for (var i =0; i<10; i++) {
    console.log(i + '번째 반복할 문장입니다.');
}

//0번째 반복할 문장입니다.
//1번째 반복할 문장입니다.
//2번째 반복할 문장입니다.
//3번째 반복할 문장입니다.
//4번째 반복할 문장입니다.
//5번째 반복할 문장입니다.
//6번째 반복할 문장입니다.
//7번째 반복할 문장입니다.
//8번째 반복할 문장입니다.
//9번째 반복할 문장입니다.

0부터 시작이기 때문에 0~9까지 열 번이 반복된다.



let str = '';

for (let i = 0; i < 9; i++) {
  str = str + i;
}

console.log(str);
// expected output: "012345678"



while

조건문이 참일 때 실행되는 반복문이다. 조건은 문장안이 실행되기 전에 참, 거짓을 판단한다.

while (조건식) {
  반복하게 될 문장
}


아래 2개 문제 출처
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=diceworld&logNo=220178704694

//Q. while문을 이용하여 1 부터 100까지 더하고 그 결과를 출력하시오.

//문제의 주석은 내가 해석한 내용
//사용할 변수선언
var val = 0;
var i = 0;

while (i <= 100) {
  //i=0, 101번 돈다. (반복되는 횟수는 0~100 = 101번)
  //val은 0, 0 + i
  val = val + i;
  //증감연산자 ++ (1씩 더해준다는 뜻)
  i++;
}

console.log("val : " + val);
//val : 5050

i가 1이어도 val = 5050이다.
i가 1일때 반복은 1~100으로, 100번 반복하게 된다.



//Q. while문을 이용하여 1부터 10까지 난수를 출력하는 소스를 반복실행시키되 숫자 7이 나오면 종료되도록 처리하시오.

//문제의 주석은 내가 해석한 내용
var val;

while (true) {
  //0부터 1사이의 값이 소수점이 붙어서 무작위로 출력
  //Math.random() = 0.xxx... ~ 0.999...
  //(Math.random() * 10) = 0.xxx... ~ 9.99999...
  //Math.ceil = 올림(9.9 = 10)
  //따라서 val = 1 ~ 10
  val = Math.ceil(Math.random() * 10);
  console.log("val : " + val);

  //만약 반복하다가 val값이 7이 나올경우 break
  if (val == 7) {
    break;
  }
}

Math.random()
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Math/random

난수 생성 참고
https://hianna.tistory.com/454

소수점 처리 참고
https://velog.io/@koseony/javaScript-%EC%86%8C%EC%88%98%EC%A0%90-%EC%B2%98%EB%A6%AC-%EC%98%AC%EB%A6%BC-%EB%B2%84%EB%A6%BC-%EB%B0%98%EC%98%AC%EB%A6%BC

문제에서 오래 고민했던 부분은 Math.random()의 범위다.
0이 나오면 val의 범위는 0 ~ 10이 아닐까?라는 생각.

하지만 Math.random()은 0 ~ 1미만의 '난수'를 출력한다.
난수는 0부터 1사이의 값 중 소수점이 붙어 무작위로 출력된다.
무엇보다도 0은 '정수'이기 때문에 애초에 출력되지 않는다!

따라서 Math.ceil(Math.random() * 10)에서 0은 나오지 않는다.

console.log(Math.random() * 1);
//0.0xxxxxxx.....

profile
'이게 최선일까?'라는 고찰을 통해 끝없이 성장하고, 그 과정을 즐기는 프론트엔드 개발자입니다. 사용자의 입장을 생각하며 최선의 편의성을 찾기 위해 노력합니다.

0개의 댓글