[JavaScript] 반복문

Parkboss·2022년 3월 11일
0

JavaScript

목록 보기
12/29
post-thumbnail

반복문

  • 선언문(Init Expression), 조건문(Test Expression), 증감문(Update Expression) 형태로 이루어진 반복문
  • 조건문이 faildl이 되기 전까지 코드 블록을 계속적으로 반복 수행
  • 선언문, 조건문, 증감문 자리에 공백 입력 가능

  1. 선언문(Init Expression) 먼저 만난다. 변수의 대한 초기화가 대표적 ex) let i = o
  2. 조건문(Test Expression) 은 선언문의 컨트롤 한다. ex) i < 5 (부등호나 나이꼴 사용)
    논리적인 리턴 값이 나오도록 한다.
  3. 조건문 이 true 일때 for 문 안에 코드가 수행된다. Statement Block 수행된다.
  4. 증감문(Update Expression) 선언문과 조건문에서 컨트롤 해준 변수의 대한 업데이트가 된다.
  5. 이런 식으로 반복 수행된다.
  • 선언문(Init Expression) 은 처음에 최초 1회만 수행되고 그 이후에는 조건문(Test Expression) Statement Block 증감문(Update Expression) 순서대로 수행(반복) 하면서 조건 판단한다.

for 예제

1. (let i = 0) 변수 초기화를 한다. --> 선언문
2. i < 3 은 true이니 0으로 출력한다. --> 조건문
3. i++; 에서 i가 ++를 만나서 1이되서 조건문으로 가서 1 출력한다.
--> 선언문 에서 조건문으로 반복 수행한다.
4. 1 출력 후 i++; 증감문을 만나 2 출력한다.
5. 2 출력 후 i++; 해서 3이라는 값으로 조건문을 만난다.
6. 3 < 3 false 이기 때문에 구문을 탈출한다.
총 출력 값은 0, 1, 2이다.

1. 두번째 예시는 i =10; 변수 초기화한다.
2. 10 < 3 은 false 이기 때문에 console.log(i); 코드가 수행되지 않고 for문 종료하게 된다.

for 예제 2

let num = 0; 선언문을 맨 위로 올리고 num++; 증감문을 아래로 빼주면 첫번째 예시와 다른 코드 작성을 할수 있다.


2중 for 예제

1. let i =0; 선언문 조건 판단하게 되고 아래있는 let j = 0; 코드를 수행한다.
이때, i = 0인 상태이다.
2. 두 번째 for문에서 j가 0에서부터 끝까지 수행이 다되고 코드 블록이 끝난다. (출력 값 0, 1, 2)
3. j의 코드 블록이 끝난 다음 i의 증감문 i++;가되서 1로 반복이 된다.


반복문 while

  • 조건문이 참일 때 코드 블록을 계속해서 반복 수행하는 반복문
  • for문에 비해 선언문과 증감문 없이 loop를 수행하며, 무한 loop 등 수행 시 많이 사용
  • 조건문을 코드 블록보다 아래로 옮긴 do.. while 반복문도 존재
    (최소 한번 수행이 필요할 때 많이 사용)
  • 조건에 대한 판단을 앞에서 하면 while
  • 조건에 대한 판단을 뒤에서 하면 do...while
    do...whille 같은 경우는 뒤에서 하니깐 무조건 최초 수행이 된다는 특성이 있다.
    (일반적으로 while을 많이 쓴다.)

위 예시 참고
1. A가 조건문(Test Expression) 에서 true이면 Statement Block으로 간다.
2. 다시 위로 올라가서 조건 판단을 하면서 무한루프에 빠진다.
3. 종료의 대한 변수 업데이트가 필요하다.
(보통은 Statment Block에서 변수 업데이트를 해서 종류 시킨다.)

  1. do를 만나 무조건 최초 수행하면 4가 찍히게 된다.
  2. false이니깐 수행을 안한다.
    (false 임에도 불구하고 최초 do에서 실행되었다.

여기서 for문과 비슷하다.
let num = 0;
for (; num < 2 ;) {
consol.log(num);
} num++;


반복문 제어

  • break
    • 반복문 수행 시 코드 블록을 탈출할 때 사용되는 식별자
    • 다중 반복문일 경우 가장 안쪽의 반복문을 종료
    • Label을 통하여 다중 반복문을 한번에 종료 가능
      ! Label: 반복문 앞에 콜론과 함께 쓰이는 식별자
  • continue
    • 반복문 수행 시 코드 블록 실행을 해당 라인에서 중지하고
      블록 코드를 종료 시킨 후 반복문 내 명시된 조건 판단

break, continue 예제

1. break 요소를 작성하여 어느 지점에서 멈추는 코드이다.
if문을 사용해 (i === 3 ) break; 의 해석은 i가 3일때 코드를 종료해라라는 뜻이다.
(출력 값은 0,1, 2)
2. continue을 사용해서 나온 출력 값이 3을 제외한 값이 출력되었다.
그 이유는 if ( i === 3 ) continue가 수행이 되서 i의 값이 텍스트에 업데이트가 되지않고 그 다음 포분이 이어서 이어진것이다.

label 예제

  • 프로그램 내 특정 영역을 지정하여 별도 이름을 붙이는 식별자
  • break와 continue를 사용하는 반복문 안에서만 사용 가능하며, break나 continue지시사 위에 있어야 한다.

1.break요소를 넣으면 무조건 j =0;인 조건문일때만 수행이 되고 break 된다.
2.(let j = 0; j < 3, j++;) 일때 선언문에서 true여서 j++;인 증감문으로 간다.
3. 1인 값으로 다시 조건문으로 가는데 break 가 걸려서 계속 0 인 상태인 값으로 반복이 된다.


연습문제 - 1

>난 이 문제를 보고 문제의 정답을 찾지 못했다. 절망이였다😰

0~10까지의 정수 중 짝수의 합을 구한뒤 출력해주는 코드를 작성하시오.라는 이 문장에서 아예 풀지 못했다.

  1. let i = 0; i <= UNTIL_NUM; i++ 의 코드는 작성했다. 왜냐 이거를 배웠기 때문이다.
  2. 짝수의 합을 구하는 공식 자체가 도통 내 머릿속에서는 떠오르지 않았다.
  3. 정답을 봐도 왜 저런 답이 나오는지 이해가 안되었다.

연습 문제 풀이
1. if 문을 작성해서 ( i % 2 == 0 ) i의 값이 짝수일때 sum += i; 를 더해라는 뜻이다.
2. i 와 2를 나누면 나머지 값이 0이여야 sum += i; 더할 수 있다는 소리다!
3. i = 0이면 0 % 2의 나머지 값은 0이다. 그래서 맨 처음 값은 0+0 = 0이 나온다.
(% 몫과 나머지 값 계산은 [JavaScript] 산술대입 연산자 참고하자! )
4. i++; 증감을 하여 1인 값으로 1 % 2 = 0.5이다. 여기서 나머지 값은 1이여서 탈락!
5. 1이라는 값으로 i++; 증감을 하여 2 % 2 = 1이다. 나머지 값은 0이여서 2 + 2 = 4 나온다.
6. 이런식으로 계산하여 10 <= 10 true 값이 되어 10 % 2 = 5이다.
나머지 값은 0이고 10 + 0 = 10이 나온다.
7. console.log(sum); 30이라는 값이 나온다.

만약 반복문 for를 이용해서 0~10까지의 정수 중 홀수의 합을 구한 뒤 출력해주는 코드라면?
1. if ( i % 2 ==1 ) sum += i;라는 코드로 변경될 것이다.
2. 위의 풀이와 같이 계산을 하면 1+0=1, 3+0=3, 5+0=5, 7+0=7, 9+0=9 값이 출력된다.
3. console.log(sum); 25라는 값이 나온다.

연습문제 - 2

이 문제는 앞에 배운 예제와 비슷해서 금방 풀 수 있었다.
1. i의 변수 선언이 되었다.
2. 두 번째 for문에서 j가 0에서부터 9까지 수행이 다되고 코드 블록이 끝난다.
3. 그 다음 i++; 증감되어서 3이라는 값으로 업데이트 된다.


>어려웠다. 연습문제-1을 보고 개 멘붕이 왔지만 해석을 보면서 이해하고 벨로그에서 적으면서 다시 한번 또 이해하고 응용도 해보았다.
뿌듯하다!!!!!!!!!! 아자아자

profile
ur gonna figure it out. just like always have.

0개의 댓글