[Javascript] 반복문 for / while_실습

한효찬·2024년 9월 10일

[공부] Javascript

목록 보기
11/24

부트캠프에서 과제로 내준 반복문 실습을 해볼 예정이다.

실습.1

// for 반복문으로 문자열의 짝수 번째 요소를 출력하는 코드를 작성하세요.
let str = ' 이 것 은 반 복 문 을 위 한 테 스 트 입 니 다';

// for 반복문으로 문자열의 짝수 번째 요소를 출력하는 코드를 작성하세요.

for (let i = 1; i <= str.length; i += 2) {
  console.log(str[i]);
}
  • str의 문자열 안에서 0과 짝수 번째를 제외한 홀수 번째에만 문자가 있다.
  • 따라서 처음 시작은 0번째가 아닌 1번째부터 시작하며 2씩 증가하도록 만들었다.(2씩 증가해야 홀수가 나오므로)
  • str의 문자열에 i를 적용하여 홀수 번째의 문자만 나오도록 했다.

    회고: 처음에는 조건문을 1씩 증가하게하고 반복 코드에 console.log(str[i + 2]);을 넣어볼까 생각했었다. 순간적으로 1+2=3, 3+2=5, 5+2=7 이런식으로 생각했고, 1부터 끝자리까지 순서대로 반복되는 반복문의 특성을 제대로 이해하지 못했기 때문이었다.
    홀수를 만들어내기 위해서는 조건문을 2씩 증가하는 방법이 있다는 것을 깨닫고 풀었다.

실습.2

// 1부터 10까지의 모든 숫자의 합을 구하는 코드를 작성하세요.
// while 반복문으로 구현해야 합니다.

let num = 1;
let result = 0;
while (num <= 10) {
  result = result + num;
  num++;
}
console.log(result);
  • num이라는 변수에 초깃값 1을 넣어줌으로써 1부터 반복이 시작되도록 했다.
  • 조건문에 num이 10보다 작거나 같을 때 코드를 반복 실행하도록 작성했다.
  • result변수에 result와 num의 초기값을 더했을때의 값부터 대입하는 것을 시작하여 루프가 돌때마다 그만큼 업데이트 되는 result와 num의 합계를 계속해서 대입한다.
  • 결론적으로 1+2+3 ... dl이 되어 정답인 '55'를 호출한다.

    회고: 변수에 똑같은 변수를 계속 대입하는 개념이 생소했지만 계속해서 업데이트 된다는 개념으로 이해했다. result의 기존값을 1씩 증가된 num과 더해 또 다시 result에 대입하고, 값이 바뀐 result에 또 +1된 num값과 더해 또 result에 대입하고..의 반복이다.
    마찬가지로 루프가 돌 때마다 num은 1씩 증가하고 그 값이 10이상보다 커질 경우 루프를 빠져나오게 만들었다.

실습.3

// 구구단 2단부터 9단까지 출력하는 코드를 작성하세요.
// 조건1. 2부터 9단까지만 출력되어야 합니다.
// 조건2. 이중 for문을 사용해야 합니다.
for (let i = 2; i <= 9; i++) {
  for (let j = 1; j <= 9; j++) {
    console.log(`${i} x ${j} = ${i * j}`);
  }
}
  • 외부는 2단부터 9단까지 반복할 조건과 변수 i
  • 내부 조건문은 외부에서 반복할 2 ~ 9단의 각 단마다 1 ~ 9까지 반복 곱해줄 조건과 변수 j
  • 변수 i를 내부 for문으로 가져와 ${2 ~ 9단(i)} x ${1 ~ 9까지 곱함(j)} = ${i와 j의 곱}

    회고: 처음에 함수의 스코프(범위)를 제대로 알지 못해 i를 내부의 j와 함께 쓸 수 있다는 것을 잘 몰랐다. 따라서 내부에 j만 쓰고 외부에 i만 사용해서 구구단이 나오기는 하나 1x1=1, 2x2=4, 3x3=9...9x9=81의 코드가 7번 반복되는 결과만이 나왔다.
    2단은 2단끼리, 3단은 3단끼리... 등등의 결과가 어떻게 나올지 고민하며 구글링 해본 결과 함수의 스코프에 따라 한 함수 내에서 작성된 함수는 외부 함수에 있던 변수도 사용할 수 있다는 것을 알게 되었다. 위의 지식을 토대로 i를 내부 함수에 적용해서 풀 수 있었다.

개인적으로 반복문은 한번에 이해하기 어려운 개념이라는 생각이 들었다. 특히 이중for문이 어려웠다..
익숙해지기 위해서라면 반복 학습이 필수라는 생각이 들었다...

profile
hyohyo

0개의 댓글