Java - 반복문 while , do-while , for
반복문
조건이 참(true)인 동안 반복 수행하기
반복 횟수나 값의 비교 결과 - True 냐 False 냐
주어진 조건에 맞는 동안(true) 지정된 수행문을 반복적으로 수행하는 제어문
조건이 맞지 않으면 반복하던 수행을 멈추게 됨
조건은 주로 반복 횟수나 값의 비교의 결과에 따라 true, false 판단됨
예) 달리는 자동차, 일정 횟수만큼 돌아가는 나사못, 특정 온도까지 가동되는 에어컨 등
while , do-while , for
각 반복문은 주로 언제 사용하나요?
While 문
수행문을 수행하기 전 조건을 체크하고 그 조건의 결과가 true인 동안 반복 수행
while(조건식) {
수행문 1;
...
}
수행문 2;
...
예제 : 1부터 10까지 더하여 그 결과를 출력해 보자
정수형 변수 선언
지역변수는 초기화해주는 것이
중요하다
while 문 ( 조건식 ) {
수행문 1;
수행문 2;
}
수행문 3;
수행문 4 ;
num++수행문으로 인하여
수행 후 1 더한 값으로 출력
GOOD :)
+ 무한 반복할 때
while(true){
......
}
사용
do-while 문
조건과 상관없이 한번은 수행문을 수행
while문은 조건을 먼저 체크하고 반복 수행이 된다면,
do-while은 조건과 상관 없이 수행을 한 번 하고 나서 조건을 체크
do {
수행문 1;
...
} while ( 조건식 ) ;
수행문 2;
...
조건이 맞지 않으면(true 가 아니면) 더 이상 수행하지 않음
do-while 예제) 입력받는 모든 숫자의 합을 구하는 예제 단, 입력이 0이 되면 반복을 그만하고 합을 출력
스캐너로 입력받겠다.
선언 초기화
while 문
스캐너로 입력받겠다.
선언 초기화
do - while 문
input 입력값 2개라 하나 삭제
먼저 입력받으려고 순서 변경
while 조건식 입력
0 나오면 다 더해서 종료
어떤 값을 일단 받아서 실행하려 할 때나, 잘 실행되나 한번은 테스트해보고 실행하려할때 등
한 번은 수행하고 나서 반복할 때 do- while 문 사용
for 문
카운팅이나 횟수 부분에 최적화
for( 초기화식; 조건식; 증감식)
{
수행문 1;
...
}
for 문의 수행 순서
초기화 후
num=1 num출력
num에 +1
num=2 num출력
.....~
i=1; i<=10; 보다는
i=0; i<10 으로 사용하자.
for문과 while 문 비교 예제)
1부터 10까지 더한 결과를 출력하세요
for(초기화식; 조건식; 증감식;){
수행문 1
.....
}
while( 조건식 ) {
수행문 1
.....
}
수행문 2;
for문의 문장들은 생략 가능합니다.
초기화식 생략 // 조건식 생략 // 증감식 생략 // 무한 반복
↓ 이미 이전에 값이 초기화되어 for 내부에서 값을 지정할 필요가 없는 경우 ↓
↓ 반복 수행에 대한 조건이 수행문 내부에 있는 경우 ↓
↓ 증감식에 대한 연산이 복잡하거나 다른 변수의 연산 결과값에 결정되는 경우 ↓
↓ 무한 반복 시 ↓
+@
i+1 과 i++은 다릅니다.
i+1 자체는 i 값이 증가되지 않습니다. 증가하기 위해서는 대입연산자를 써야합니다.
하지만 i++은 i = i+1, i+=1 과 동일한 의미입니다.
따라서 값을 1씩 증가하려고 한다면 i++을 사용하세요
++i 와의 차이점도 알아두자. 증가한 후 수행. 11
i++ 은 수행한 후 증가 10 // 11
중첩 반복문
반복문 내부에 또 다른 반복문이 있음
여러 겹으로 반복문을 겹쳐서 구현 가능 (단 수행 시간에 문제가 발생할 수 있음 O(n^2/3/4/)
외부 반복문과 내부 반복문 간의 변수 값 변화에 유의하며 구현하여야 함
( while 밑에 속해있는 while에서 빠져나갈 때 초기화되는 것 주의 )
예제) 구구단을 for와 while로 구현해 보자
초기화
dan <=9 이면 밑에 for 수행하고
dan++
count <=9이면 밑에 println수행
count++
2.3.4.--9까지 하고 조건식에서 false 면 위에 for로 돌아가서 dan판단.
while 조건식 참이면
수행문 1 count=1;
수행문 2 while~ 수행
while 조건식 참이면
수행문 1 print수행
수행문 2 count++수행
거짓이면
수행문 1 dan++수행
수행문 2 print 수행
구구단 출력 잘 됨을 확인 GOOD :)
중간에 멈추는 break문, 무시하고 계속 진행하는 continue문
break문 사용하기
감싸고 있는 제어문의 블록을 빠져나오는 기능 (switch문에서도 사용)
반복문에서는 주로 조건문(if)과 같이 사용하여 조건에 해당되는 경우 반복 수행을 멈추고 반복문 외부로 수행이 이동
여러 반복문이 중첩되어 있는 경우엔 break 문이 포함되어 있는 반복문만 빠져나옴
continue문 사용하기
반복문 내부에서 조건문(if)과 같이 사용하며,
조건이 맞는 경우(true 이면) 이후 반복문 블록 내부의 다른 수행문들을 수행하지 않음
무시하고 진행해라가 아닌 밑에 부분 무시하고 증감이나 연산 부분, 제어 부분으로 가라는 뜻으로 이해
break문 예제 ) 1부터 숫자를 더하여 100이 넘는 순간의 그 숫자와 합을 출력하세요
continue문 예제) 1부터 100까지 숫자 중 3의 배수를 출력하세요
sum >= 100 이면 멈추고 빠져나가라
14까지 더했을 때 100이 넘는다.
( num%3) != 0 일 때
빠져나가는 것이 아니라 조건식 증감식으로 가라
100까지 3의 배수 출력
GOOD :)
review
반복문 while / do-while / for
조건식과 수행문이 표현된 표를 보니
고3 컴퓨터 학원에서 정보처리기능사 자격증 공부할 때가 생각났다.
그려가면서 했던 기억이 ㅎㅎ
while과 do while은 참과 참이 아닌 것만 따져서
반복하는 것이라 크게 어렵진 않았다.
for문은 생각보다 형식과 방법이 복잡했다.
형식을 잘 숙지해놓아야겠다.
break와 countinue 예제를 만들어보고
어떤 느낌으로 쓰는지 알았다.
확실히 반복문까지 들어오니 활용해서 만드는 예제들이
점점 실생활에 적용할 수 있는 것으로
가까이 가고 있는 느낌이다.
아직 멀었지만 한 단계씩 나아가 보자
GOOD :)