본문 바로가기

프로그래밍 기초/javascript

[JS 프로그래밍 5] 반복문

저번 시간에는 조건문에 대해서 알아 보았는데
이번 시간에는 조건문을 변화시킨 반복문에 대해서 알아보도록 하겠습니다.


반복문이란?
-반복문은 크게 while 을 이용한 반복문과 for 문을 이용한 반복문으로 나뉩니다.
이 문법을 통해서 만약 ~~라면(조건문과 같은 부분) 어떠한 코드를 반복적으로 실행하거나
그냥 반복 횟수를 정해서 반복 시킬 수도 있습니다.
먼저 while을 이용한 반복문부터 알아보도록 하겠습니다.

while 을 쓰는 방법
while을 이용하는 방법은

while(boolean){
코드
}
위과 같이 쓸 수 있는데 boolean 은 저번에 설명드렸던 것처럼 true 나 false를 뜻하고
당연히 true 일 때만 아래의 코드가 실행됩니다. 하지만 코드에서 위의 boolean 값에 영향을 주지 않는다면
코드가 계속 저 안에서만 반복이 되어서 '무한 반복' 이 일어나 컴퓨터나 핸드폰 등의 기기에 과부하를 일으키게
될 것입니다.
예제를 봅시다.

var a = 0;
while(a<10){
a++;
console.log(a);
}
위의 예제처럼 쓸 수 있습니다.
여기에서 지금까지 배우지 않은 부분이 있습니다.
바로 '++'입니다.
++는 1을 더하는 것으로 해석할 수 있습니다.
따라서 a--;   를 한다면 1을 뺀다는 것으로 해석할 수 있습니다.
또 다른 유용한 문법으로는 +=나 -=이 있습니다.
+=는 앞의 숫자나 변수에 뒤의 데이터를 더한다는 뜻입니다.
a += 10;   이라고 한다면 a라는 변수의 데이터 값에 10을 더한다는 뜻입니다.
그리고 -=은 아시다시피 반대입니다.

그렇다면 위의 코드를 해석해 봅시다
먼저 변수 a를 0으로 설정해 주었습니다.
그리고 while 문을 사용해 a가 10보다 작다면~ 이라고 boolean 값을 주었고
그렇다면 이 boolean 값은 true가 되게 됩니다.
그 후 a에 1을 더해 주었습니다. 그렇다면 a의 값은 이제 1이 됩니다.
그리고 console.log를 통해서 변수 a를 console로 출력해 주었습니다.
그리고 나서 위의 while로 올라가 다시 검사하고, 더하고, 출력합니다. 그리고 이것을 a가 9가 될 때까지 하고
아직 10 미만이기 때문에 1을 더해주어서 10이 되고 console.log로 출력해 주었습니다.
그리고 다시 while로 돌아갔지만 이번에는 a 가 10으로 boolean 값이 false가 되었습니다.
그래서 중간의 코드를 건너뛰고 끝나게 됩니다
출력된 결과를 봅시다.

위와 같이 1~10까지 출력이 되었습니다.
지금까지 while을 쓰는 방법을 알아 봤습니다.


for를 쓰는 방법
for를 쓰는 방법은 while과 약간 다르며 다음과 같습니다.
for(초기화;boolean;연산){
코드
}
for는 코드 내에서 boolean 의 값에 영향을 주는 행동을 할 필요가 없습니다.
boolean 뒤의 연산이 해 주기 때문입니다.
차근차근 알아봅시다.
먼저 초기화는 변수를 초기화 하는 것입니다.
var a = 0; 과 같이 말이죠 while을 쓸 때는 while 앞에 썼던 구문이었습니다.
boolean 값은 while과 같습니다.
연산은 코드를 끝마치고 할 연산입니다.
a++ 이나 a-- a+= a-= 등 여러 연산이 들어갈 수 있습니다.
그러나 while과 같이 boolean 을 a<10 으로 놓고 연산을 a++ 로 한다면 조금 다른 결과가 나올 것입니다.

위와 같이 출력될 것입니다.
왜 그럴까요?
그 이유는 '연산을 맨 마지막에 하기 때문'입니다
그러므로 while과 비슷하게 진행되지만 while의 예제에서 a++을 맨 뒤로 뺀 것과 같은 결과가 나오는 것이죠
for문에서는 연산을 나중에 하기 때문에 a의 초기화값인 0이 출력되고 a++이 실행되어 1이 되고 반복되 9가 되어 출력되고
10이 되어서 9까지만 출력되었습니다.
그래서 while 과 똑같이 나오게 하려면 초기화 값을 1로 바꾸고 boolean 값을 a<=10 이나 a<11 로 바꿔 주어야 할 것입니다.

다음 시간에는 함수에 관하여 알아 보도록 하겠습니다.
도움이 되었거나 질문할 것이 있으면 댓글 남겨 주세요