Web Front-end 공부/Java script
Js 반복문
Hanachoi
2022. 5. 21. 14:29
- 컴퓨터를 사용하는 이유 자체가 복잡한 계산이나 반복적인 작업을 처리하는데 매우 효율적이기 때문이다.
#반복문 while
- while(조건식){} 에서 조건식이 true 라면 조건식이 true인 동안은 실행문이 계속 실행된다.
- while 문을 실행시킬때 우리가 실수라 무한반복문을 실행시키는 경우가 상당히 많이 발생할 것이다. 이런 경우는 웹페이지가 잘 멈추는데 이때는 웹 브라우저를 강제종료해야 실행을 멈출 수 있다
- 그럼 어떻게 무한반복을 방지하고 true / false 일때의 상황을 분리해서 코드를 실행시킬 수 있을까?
- 이때 변수를 사용해서 변수를 true로 만든 동안은 반복, 그 뒤로는 false로 만들어서 반복문이 정지되도록 할 수 있따다.
- 변수 i를 설정해주고 이 i가 4보다 작은 동안에는 계속 실행되게 해준다. i가 4가 되는 순간 반복문은 멈추게 되는 것이다. 이렇게 숫자를 올릴 수 있는 코드는 i = i + 1;이고 i+=1; / i++; 이렇게 두개도 바꿔 쓸 수 있다.
i= 0;
while(i < 4){
console.log('hello');
i = i + 1;
}
- 프로그래밍을 할 때는 변수의 첫 번째 값으로 1 보다는 0을 더 많이 넣는다. 컴퓨터에서는 숫자를 0부터 세기 때문. 그럼 조건식에서 내가 4개의 값을 내고 싶다면 0부터 카운트가 된거니까 i<4라는 조건이 붙는거다 [0,1,2,3 == 4개]
#For 문
- 시작 부분은 한번만 실행되고 [조건식- 실행문- 종료식] 이렇게 순서대로 계속 실행된다.
for (시작 ; 조건식; 종료식)
실행문;
- whlile문과 유사한 부분이 있다. while문에 흩어져 있던 조건식들이 for 문에선 한 줄에 다 들어가는걸로 정리 할 수 있다.
- for문에서의 조건식은 생략도 가능하다. 그럼 무한 반복하게 됨. for(;;){}
- 1부터 100까지 찍는 for 문 코드
for(let i = 0 ; i < 100 ; i++){
console.log(i+1)
}
//i가 0부터 시작했기 때문에 그냥 console.log(i)를 하게 되면 0-99까지의 숫자가 출력된다.//
//콘솔창에 찍을때는 i+1해줘야 1부터 100까지 값이 정확하게 찍힌다.
- 이렇게 숫자를 더하는 조건식을 만들 때 i= i+1에서 꼭 더해지는 숫자가 1일 필요는 없다. 만약에 2씩 더해지는 for 반복문이라면? i 는 0부터 시작한다. 이때 console.log하면 i+1이 찍혀야되니까 값은 1이 찍힌다. 그뒤에는 i에 2씩 더하게 되는데, i = 0 에서 2를 더한 2가 다음 값으로 들어가게된다. 그럼 콘솔창에는 3이 찍힐 것. 이런식으로 반복문이 진행되다보면 결국 100 전에 존재하는 홀수 값만 찍히게 된다.
#break로 반복문 멈추기
- 반복문을 진행하다가 중간에 break를 쓰면 반복문을 멈출수가 있음.
- while 반복문에서 조건식이 true인 동안 5의 값을 찾을 때 까지 반복문이 돌아감. 그리고 5와 i 값이 일치하는 순간에 break함수가 실행되게 되고 while문이 동작을 멈춘다.
let i = 0;
while(true){
if(i===5) break; // 예를들어 i ==1이면 실행안되고 다음 i++로 넘어가서 숫자를 더해준다//
i++;
}
console.log(i);
- 이렇게 break를 넣어주면 무한반복문을 작성하더라도 중간에 멈출 수가 있기 때문에 무한 반복문도 사용이 가ㅡㅇ해진다.
- 그럼 for문과 while문 중 어떤게 더 사용하기 좋을까? for문으로도 가능하지만 while문이 더 간결하기 때문에 무한 바복문을 사용할때는 while문을 사용하는게 좋다. 그리고 for문을 무한반복문 만들때 사용하게되면 for(let i = 0; ;i++)이런식으로 조건식을 작성해야 되기 때문에 어색해진다.
#continue로 코드실행 건너뛰기
- continue가 걸려있을때, 그 조건식이 true면 그 부분을 빼고 함수를 진행함.
- continue에 걸려서 continue가 실행안되면 그 뒤로 함수는 쭉 실행 안된다. 그리고 다시 처음으로 넘어감.
- if(i % 2 === 0){ conitue; } 이 부분이 i 가 2의 배수면 건너띄고 그 다음으로 넘어가라는 의미가 됨.
let i = 0;
while(i<10){
i++;
if(i % 2 ===0 ) { //2로 나눴을때 나머지가 2인애들은 짝수란 소리!!//
continue;
}
console.log(i);
}
// 1,3,5,7,9 출력//
#중첩된 반복문
- for문안에 다른 for문이 들어가있다. i, j, k등 여러 문자가 나올 수 있음
for(let i = 0 ; i < 10 ; i++){
for(let j= 0 ; j < 10 < j++){
console.log(i,j)}
}
- i가 0에서 시작할때, i<10일때까지 작동하잖아? 그다음 작동하는 실행문이 안에 있는 for문이다. 그럼 i는 그대로 0인상태에서 j의 for문이 계속 돌아가니까 j가 9일때까지 작동한다. 그리고 다시 i++가 작동하면 i = 1, j = 0부터 다시 시작됨.
- 아래 이미지처럼 쭉쭉 i = 9 / j = 9 될때 까지 실행될 것.
- 삼중 반복문도 있다.
- 보통 최대 3중 4중 반복문까지 볼 수 있음.
> for (let i = 0; i < 5; i++) {
if (i % 2 === 0) continue;
for (let j = 0; j < 5; j++) {
if (j % 2 === 0) continue;
for (let k = 0; k < 5; k++) {
if (k % 2 === 0) continue;
console.log(i, j, k);
}
}
}