반복문?
- 같은 행동을 정해진 만큼 반복을 수행하는 문장
- 같은 코드를 복붙해서 넣으면 되지만 이렇게되면 코드의 가독성이 매우 낮고 효율도 낮아진다.
- 원하는 횟수, 조건 등에 맞춰 반복을 수행해줘서 같은 행동을 하는 코드라면 반복문으로 결합을 해보쟝
For 문의 형태
초기식, 조건식, 변화식 뭔지 1도 모르겠지만 천천히 설명을 들어보자...
초기식 = 변수 선언하고 초기값 설정 ( 주로 이때 변수는 루프 본체에서도 사용되니깐 잘 생각하고 선언하자 )
조건식 = 변수에 대한 조건 ( 조건이 참이면 루프 본체 수행, 거짓이라면 반복문을 빠져나감 )
변화식 = 변수가 한번 진행 될때마다 어떻게 변할지 선언
만약 우리가 6번을 수행하고 싶다???
그러면 우리는 반복횟수를 루프선언문에서 선언을 해주고 처음에 0으로 지정해 -> int i =0;
이후 조건을 i<6 으로 설정해보자 이건 왜 이렇게 설정했는지 다음에 설명함
그리고 변화식을 i++;로 해보자
이렇게 되면 조건식이 i<6이니깐 5번 수행하는거 아니냐 물어볼수있어
근데 for문의 진행 순서는 어떻냐면
조건 확인 -> 수행 -> 변화 -> 조건확인 -> 수행 -> .... 이런식으로 진행된다
그럼
i=0일때 1번 루프 돌고 i는 1로 변화
i=1일때 2번 루프 돌고 i는 2로 변화
i=2일때 3번 루프 돌고 i는 3로 변화
i=3일때 4번 루프 돌고 i는 4로 변화
i=4일때 5번 루프 돌고 i는 5로 변화
i=5일때 6번 루프 돌고 i는 6로 변화
이후 i=6이니깐 조건식을 만족시키니 않으므로 반복문을 종료시킨다.
- 다중 반복문 ( 이중 for문 )
이렇게 for문이 두개가 겹치는거는 코딩 좀만 하면 졸라 쉽게 봄
단순하게 안쪽에 있는 for문은 파란색을 반복하는거야
이때 초기값이 j=1이고 조건식이 j<=i 이고, 변화식이 j++이니깐 총 i번 반복하는거겠네?
바깥쪽에 있는 for문은 빨간색을 반복하는데 10번 반복하는거지
이거를 잘 생각해봐 큰거부터 생각해봐
빨강 빨강 빨강 빨강 빨강 빨강 빨강 빨강 빨강 빨강 - 이렇게 빨강이 10번 수행하는거야 그런데 빨강이 뭔데? 파랑 i번 반복이고 이때 i는 바깥 for문에서 정해지지
그러면 위의 식은 아래와 같아지지
(파랑) (파랑 파랑) (파랑 파랑 파랑) (파랑 파랑 파랑 파랑) ..... (파랑 열개)
왜 이딴거 쓰냐고?
코테 많이 써보면 알아 이거 이중반복써야겠다.. ㅅㅍ..
break 문은 또 뭔데
반복하다 짜증나? 그럼 break 쓰세요. 만나면 반복 깨드립니다.
for문 안에 절대 break를 그대로 쓰진않아 왜냐면 그렇게 쓰면 반복안하고 1회 수행때 break 만나면 바로 반복문에서 빠져나오니깐
주로 if문 즉 조건문과 같이 사용해
위의 그림을 보면 100회 수행 반복문인데 조건안에 num1이라는 변수가 10이되면 반복 깨라하네
걍 10번만 수행하고 끝나는 문장이겠네
예시는 진짜 간단하지만 의외로 break가 유용하게 쓰일때가 있어
주로 무한반복문이야 ㅇㅅㅇ...
예를 들자면 골키퍼가 기다리고 있다가 공이 오면 공을 막으려는걸 생각해봐
골키퍼는 공이 오기 전까지는 가만히 있지 그런데 공이 오는 순간 가만히 있는걸 종료하고 공을 막는 행동을 하는거야
이를 코드로 대충 써보자면
for ( ; ; ) <- 이렇게 적어주면 무한반복임 알아두셈
{
if ( 공이 골대로 날아온다 ) {
break;
}
}
왜 이건지 잘 생각해보셈..나는 정말 열심히 설명함....
While 문의 형태
for문에서 변한거는 총 두가지
1. 초기식을 while문 이전에 선언해줘야함
2. 변화식은 루프본체에 있음. ( 만약 없다면 뭐 무한루프 도는거지 )
for 문의 진행과 완전 똑같아
초기식 -> 조건식 -> 루프 와 변화식 -> 조건식 -> 루프와 변화식 -> 조건식 ....
모든 반복문은 조건부터 확인하고 루프와 변화를 한다 생각하면 됨.
while문과 for문이 왜 둘다 있냐고 물어보면 당당하게 이렇게 말할게
나도몰라.
근데 확실히 일반적인 반복문을 작성할때는 for문을 사용하는게 많아 왜냐면 좀더 읽기 편함 while은 변화식이 안에 있다보니 조큼 그렇긴하더라
그리고 while문은 주로 무한반복문 작성할때 사용하지
while ( true ){
반복
}
이렇게 설정한다면 조건이 항상 참이니깐 무한하게 반복을 하게되지 껄껄
Continue는 또 뭔데;;
일단 말할게 솔직히 나도 이거 왜쓰는지 모름
위의 두개의 코드를 비교해 보자
왼쪽은 continue 없고 오른쪽은 continue가 있어
continue는 뭐냐면 break처럼 만나면 이후 코드를 안해 하지만 반복문은 빠져나가지 않아.
루프 안에서 continue를 만난다면 루프의 이후 코드들을 수행 안하고 다시 조건식으로 가서 조건을 판단해 이후 다시 루프를 도는거야.
이거도 while문이랑 자주 쓰여서 왜 쓰는건진 모르겠어 그냥 if-else문 쓰면 되는거 아닌가...