12. for 반복문

반복문의_ 잘못된 _예


위코드 사전 스터디를 듣고 쓰는 글입니다.
수업 내용을 참고/인용하여 작성했습니다.

자바스크립트에서 중요한 구문 중 하나인, 반복문입니다.
반복문에는 forwhile이 있는데, 여기서는 for에 대해서만 쓸 거에요.

왜 필요한가요?

코딩은 주로 데이터들을 다루기 위한 언어로서, 밀려오는 데이터 자료들을 처리해야 할 일이 아주 많습니다.

  • 쇼핑몰의 회원 정보 관리
  • 연간 예산 관리
  • 개인 저작물의 미디어 관리
  • 기관에서의 연간 주요 계획 및 운영에 필요한 모든 정보들
    일단 생각나는대로 써놨는데 이외에도 엄청 많겠죠?

반복문을 바로 익히기 위해 어떠한 상황을 가정해봅시다.

신입사원 동글이는 회사에서 1번부터 100번까지 번호표를 만드는 일을 받았습니다.
동글이는 초인적인 집념으로 어떻게든 번호표를 만들었지만, 일이 끝나고 나니 벌써 퇴근시간에 가까워졌습니다. 그러다 갑자기 급하게 호출된 동글이는 충격적인 소식을 들었습니다.

"동글 씨, 1부터 500까지 번호표를 새로 만들어야하는데 30분 내로 해줄 수 있나요?"


졸지에 퇴근시간을 놓친 동글이이다.
과연 동글이는 퇴사하지 않고 무사히 일을 끝마칠 수 있을까요?

표현식

for(초기화문;조건문;증감식){
	//반복될 코드
}

if문과 비슷하면서도 괄호 안에 조건이 들어가는 것이 특징입니다. 우리는 이것을 사용해 동글이를 도울 것입니다.

for(let i = 1;i <=500 ;i++){
	console.log('번호표 '+i);
}

여기서 괄호 안의 내용을 해석해보면 이런 뜻입니다.

  • let i = 1; : 변수 i를 만들어줍니다. 보통 인덱스가 시작되는 조건을 써준다고 보면 됩니다. 동글이는 1번부터 필요하니까 1부터 시작했어요.
  • i <= 500 : i는 500과 같아질때까지 계속해서 반복합니다. 만약 < 500 이라 쓰였으면 500미만이므로 499까지 반복되겠죠.
  • i++ : i가 1씩 증가됩니다. 이것은 i+=1과도 같은 뜻이므로, 만약 i가 2씩 증가된다면 i+=2라고 바꿔 써주어야 합니다. i++2이 아니라요. 물론 증가뿐 아니라 감소도 가능하여 i--,i-=5 이런 식도 쓸 수 있습니다.

결론: 변수 i는 1부터 시작하며, 500이하까지 1씩 증가되는 것을 반복한다.
그리고 이러한 조건이 충족될 때마다 console.logi가 적힌 번호표가 하나씩 출력되겠죠.
동글이는 30분도 아니고 거의 5분만에 이 일을 끝낼 수 있을 겁니다.
이러한 반복문은 배열을 다루는 데에 아주 탁월한 효능을 지니고 있습니다.

예제1

for문을 사용하여 myArray 배열에 1부터 5까지의 숫자가 요소로 포함될 수 있도록 해주세요.

function forLoops() {
  let myArray = [];
  //빈 배열을 하나 만들어줍니다.
  for(let i = 1; i <= 5; i++){
    myArray.push(i);
  }
  //1부터 5 이하까지 i가 증가되면, i의 값을 빈 배열 myArray에 출력합니다.
  return myArray;
}

예제2

for문을 사용하여 1부터 9까지의 숫자 중에 홀수인 숫자를 myArray 배열에 순서대로 추가해주세요.

function forLoops() {
  
  let myArray = [];
  //빈 배열을 하나 만들어줍니다.
  for (var i = 0; i < 10; i++) {
    // 0부터 9까지의 수를 반복하라고 해준 다음
    if(i % 2 == 1){
      //if 문을 사용해 홀수를 판별할 수 있도록 i를 2로 나눈 나머지가 1이 되는 숫자만 걸러냅니다.
      myArray.push(i);
    }
  }

  return myArray
}

예제 2번처럼 짝수와 홀수를 걸러내는 간단한 방법은, i를 2로 나누어 그 값이 0인지 1인지를 판별하는 것이 있습니다.
물론 다른 방법으로도 홀수와 짝수를 판별할 수 있겠지만 일단 저의 수학 실력으로는 여기까지가 최선이네요!

예제3

for문을 사용하여 getAllLetters 함수를 작성하세요.
단어(str 인자)가 주어졌을 때 함수의 리턴값은 주어진 단어를 구성하는 모든 문자를 담고 있는 배열입니다.
만약 빈 문자열이 주어졌다면, 빈 배열을 반환해야 합니다.

function getAllLetters(str) {
  let strArray = [];
  for(let i = 0;i < str.length; i++){
    //str.length 처럼 메소드를 사용하여 스트링의 글자수만큼 한도를 정해놓을 수 있습니다.
    let string = str.charAt(i); //charAt은 문자열에서 인자로 주어진 값에 해당하는 문자를 리턴하는 메소드입니다.
    strArray.push(string);  //charAt으로 반환된 문자열을 strArray 배열에 추가해줍니다.
  }
  return strArray;
}
getAllLetters('Radagast');

마무리

이런 식으로 조건식이 다양해지거나 안에 들어가는 동작들이 다양해지면 반복문은 무궁무진한 힘을 발휘할 수 있지만, 예제 3번처럼 다양한 일을 수행하려면 더 많은 메소드를 알고 다양한 방식으로 구문을 짜는 방법에 익숙해져야 할 것 같습니다.
저에게도 그런 날이 오겠죠?

어렵다고 포기하지만 않아도 반은 먹고 들어갑니다.

좋은 웹페이지 즐겨찾기