Iteration Statements

수경, Sugyeong·2021년 8월 31일
0

JavaScript

목록 보기
9/18
post-thumbnail

  • 반복문이란?
  • 반복문 문법

  • 🥝 반복문 1. - 반복문이란?

    반복문이란 프로그램 내에서 똑같은 명령을 일정 횟수만큼 혹은 개발자가 원하는 횟수만큼 반복하여 수행하도록 제어하는 실행문이다. 프로그램이 처리하는 대부분의 코드는 반복적인 형태가 많으므로, 가장 많이 사용되는 실행문 중 하나라고 한다.

    예를 들어 'Hello World' 라는 문장을 100번, 1000번 혹은 그 이상을 반복하여 화면에 출력을 해야하는 상황이 생겼다고 치자. 그동안 우리가 배운 console.log로 화면에 100번 출력하는 방법이나 함수 선언 후 함수를 100번 호출하는 방법은 효율적이지 못할 뿐더러 같은 코드를 여러 번 사용하는 것은 개발자로서 지양해야 하는 포인트이다.

    또한 여러 번 입력한 코드를 전부 혹은 일부만 수정 해야한다면 그것 또한 수고로운 일이다.

    😱 무시무시한 예시 😱

    for (let i = 0; i < 10; i++) {
      console.log ('We are the world ' + i)
    }
    console.log('We are the world ' + 0);
    console.log('We are the world ' + 1);
    console.log('We are the world ' + 2);
    console.log('We are the world ' + 3);
    console.log('We are the world ' + 4);
    console.log('We are the world ' + 5);
    console.log('We are the world ' + 6);
    console.log('We are the world ' + 7);
    console.log('We are the world ' + 8);
    console.log('We are the world ' + 9);

    그리하여 나온 것이 반복문 이라는 실행문이다. 반복문에서는 동일한 코드를 반복적으로 여러 번 입력할 필요가 없으며 반복 실행해야하는 코드 1개만 수정하여도 해당 반복문이 적용된 여러 코드에 수정된 효과가 나타난다.

    🥝 반복문 2. - 반복문 문법

    반복문의 문법에는 크게 while 과 for 가 있다. 둘 다 '~하는 동안' 이라는 비슷한 의미를 담고 있지만 형식은 각각 다르다.

    1. while문의 구조

    while (조건){
        반복해서 실행할 코드
    }

    * 주의 * 웹브라우저는 true 라는 상태가 false가 될 때까지 작업을 반복하여 실행하게 되는데 아래와 같은 예제에서는 작업이 언제 끝날 것인지에 대한 반복 조건이 제시 되어 있지 않기 때문에 무한반복(infinite loop)을 발생시키므로 주의해야한다.

    while(true) {
      console.log('We are the world')
    }

    무한반복을 발생시키는 것을 막기 위해 우리는 while문에 반복 조건을 걸어본다. 기존의 예제에 i라는 변수를 선언해주고 0을 할당해준다. 그리고 반복적으로 실행될 때마다 i에 일정한 값을 증가시키는 코드를 넣어준다. 마지막으로 i가 10보다 작다는 비교 연산식을 세워준다. 좌항과 우항을 비교한 결과에 따라서 true나 false와 같은 boolean 데이터 타입을 반환한다. 반환 값이 true 인 경우 즉, 변수 i가 10보다 작을 때까지 while문을 반복하다가 10보다 커버리면 false가 되어 while 반복문을 종료하게 된다.

    let i = 0;	// 1) i라는 변수를 선언하고 0을 할당. 초기화 값임.
    while(i < 10) {	// 2) 변수 i가 10보다 작을 때만 while 문을 반복함.
      console.log('We are the world')
      i++	   // 3) 반복할 때마다 변수 i를 1씩 증가시켜 변수 i가 10보다 커지면 반복문을 종료함.
    }

    2. for문의 구조

    for문은 while문의 문법적인 문제점을 해소하는 문법이라고 할 수 있다. 각 요소들이 따로 떨어져 있기 때문에 그 요소 사이에 있는 코드가 길어지게 된다면 반복조건이 달라질 수 있는 등의 오류가 발생할 확률이 커진다. 이를 보완하기 위해 for 문에서는 3가지의 구성요소를 한 괄호 안에 나란히 두었다. 이를 통해 코드 수정의 용이함과 효율성 모두 잡을 수 있게 되었다.

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

    초기화문

    • 초기화문 작성 시 변수 선언자를 써주어야 한다.
    • 변수명은 보통 index를 의미하는 i로 선언한다.
    • index가 증가할 경우 숫자는 보통 0부터 시작한다.

    조건문

    • index의 범위를 설정한다.
    • index가 증가할 경우 특정한 숫자 미만 혹은 이하로 설정한다.
    • index가 감소할 경우 0 이상으로 설정한다.
    • 조건문이 true일 경우 반복문을 계속 실행한다.
    • 조건문이 false일 경우 반복문이 종료된다.

    증감식

    • index가 1씩 증가할 경우 ++을 써준다.(index의 숫자가 하나씩 증가)
    • index가 1씩 감소할 경우 --를 써준다.(index의 숫자가 하나씩 감소)
    • i++은 i = i+1 을 줄여서 쓴 것입니다. i += 1 로 표현할 수도 있다.
    • i++는 ++1로 표현할 수 있다.

    * i가 2이상 증가하거나 감소하는 증감식을 사용하고 싶다면 += 혹은 -= 을 사용하는 것이 좋다.

    • 더하기 할당 연산자(+=)는 오른쪽 피연산자의 값을 변수에 더한 결과를 다시 변수에 할당한다. 두 피연산자의 타입이 더하기 할당 연산자의 동작을 결정하며, 덧셈 또는 문자열 연결이 가능하다.

    예제

    // foo = 'foo'
    // bar = 5
    // baz = true 일 때
    bar += 2 // 7
    baz += 1 // 2
    baz += false // 1
    bar += 'foo' // "5foo"
    foo += false // "foofalse"
    foo += 'bar' // "foobar"
    • 빼기 할당 연산자(-=)는 오른쪽 피연산자의 값을 변수에서 뺀 결과를 다시 변수에 할당한다.

    예제

    //  bar = 5 일 때
    bar -= 2     // 3
    bar -= 'foo' // NaN

    i가 2씩 증가하도록 증감식을 설정하면서 홀수만을 result 배열에 담아 리턴하기

    function addOddNumber() {
      let Result = [];
      for (let i = 1; i  < 30; i+=2) {
        Result.push(i)
      }
      return Result
    }
    for (let i = 0; i < 10; i++) {
      console.log ('We are the world ' + i)
    }	// We are the world 0 , We are the world 1 ...

    i의 값이 0부터 시작하여 10미만까지 i를 1씩 증가시키면서 반복하겠다는 의미이다.

    function forLoops() {
      let myArray = [];
      for (let i = 1; i < 6; i++) {
      myArray.push(i);
     }
      return myArray;
    }	// [1, 2, 3, 4, 5]

    문제 1)

    • for 문과 array가 섞인 문제
    function makeSquare () {
      let arr = new Array(10)
    
      for(let i = 0; i < arr.length; i++)
      arr[i] = i ** 2;
      return arr
    }	// [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

    문제 2)

    • for 문, if 문이 섞인 문제
      처음 보는 사람은 숫자 0, 한 번 봤던 사람은 숫자 1로만 표기된 배열이 있다. 처음 보는 사람에게는 '안녕하세요' 라는 인사를, 한번 봤던 사람에게는 '또 만나네요'라는 인삿말을 남겨야 한다.
    const helloBot = people => {	// people은 화살표 함수의 매개변수
      let result = [];	// 빈 배열 생성
      for (let i = 0; i < people.length; i++) {
        if (people[i] === 0) {
          result.push('안녕하세요');
        } else {
          result.push('또 만나네요');
        }
      }
      return result;
    }
    
    let group1 = [0,1,1,0,0];
    let insaBot = helloBot(group1)

    <출처>
    TCPschool
    생활코딩

    0개의 댓글