부트캠프에서 과제로 내준 반복문 실습을 해볼 예정이다.
실습.1
// for 반복문으로 문자열의 짝수 번째 요소를 출력하는 코드를 작성하세요.
let str = ' 이 것 은 반 복 문 을 위 한 테 스 트 입 니 다';
// for 반복문으로 문자열의 짝수 번째 요소를 출력하는 코드를 작성하세요.
for (let i = 1; i <= str.length; i += 2) {
console.log(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);
회고: 변수에 똑같은 변수를 계속 대입하는 개념이 생소했지만 계속해서 업데이트 된다는 개념으로 이해했다. 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)} 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문이 어려웠다..
익숙해지기 위해서라면 반복 학습이 필수라는 생각이 들었다...