본문 바로가기
프로그래밍/JAVA

09 제어문_반복문(while문,do~while문, 무한반복, for문)

by 윤지(●'◡'●) 2021. 3. 26.
반응형

 


저번 포스팅에선 제어문 중 조건문에 대해서 알아보았는데, 이번에는 반복문에 대해 작성하려 한다.

 

 

 

반복문

반복문은 특정한 코드나 행위를 반복해야 할 때 사용하는 문장이다.

▪ 조건에 의한 반복문  :  while문, do~while문
횟수에 의한 반복문  :  for문


 

01 while문

 

 

조건에 의한 반복문으로 조건이 참일 동안 문장이 반복되어 실행된다.
while문을 한번이라도 수행하기 위해서는 초기 조건식의 결과가 무조건 true여야한다.

 

※ while문의 기본 형태

while(조건식){
		조건식이 참일동안 반복할 문장
	}

 

while문 실행

 

 

예를들어, "식당의 음식 재고가 0이되면 영업이 종료된다"를 while문으로 만들어 본다면 아래와같이 쓸 수 있다 :)

 

int foodnum = 10;
		
	while(foodnum > 0) {
		System.out.println("음식이 팔렸습니다");
		foodnum--;
		System.out.println("남은 음식 재고 : " + foodnum);
			
		if(foodnum == 0) {
			System.out.println("음식재고가 0이되어 영업을 종료합니다.");
		}
			
	}

 

결과

 

음식이 팔렸습니다
남은 음식 재고 : 9
음식이 팔렸습니다
남은 음식 재고 : 8
음식이 팔렸습니다
남은 음식 재고 : 7
음식이 팔렸습니다
남은 음식 재고 : 6
음식이 팔렸습니다
남은 음식 재고 : 5
음식이 팔렸습니다
남은 음식 재고 : 4
음식이 팔렸습니다
남은 음식 재고 : 3
음식이 팔렸습니다
남은 음식 재고 : 2
음식이 팔렸습니다
남은 음식 재고 : 1
음식이 팔렸습니다
남은 음식 재고 : 0
음식재고가 0이되어 영업을 종료합니다.

 

 


02 do ~ while문

 

조건에 의한 반복문이다.
while문과 달리 초기값이 무엇이든 상관없이, do문을 실행하고 while로가  조건식 검사를 하기 때문에

  무조건 한번은 실행한다.

 

※ do~while문의 기본 형태

do{
		조건식이 참일동안 반복할 문장
	}
	while(조건식);

 

do ~ while문 실행

 

 

 

위의 while문 예시의 식당을 do~while문으로 변경하였다.

이때, 음식의 재고가 0이기 때문에 while문이라면 실행이 되지 않았을텐데 do~while문은 실행이 되는것을 볼 수 있다.

int foodnum = 0;
		
		do{
			
			if(foodnum>0) {
			System.out.println("음식이 팔렸습니다");
			foodnum--;
			System.out.println("남은 음식 재고 : " + foodnum);
			}
			
			else if(foodnum == 0) {
				System.out.println("음식재고가 0이되어 영업을 종료합니다.");
			}
			
		}while(foodnum > 0);

 

결과

 

음식재고가 0이되어 영업을 종료합니다.

03 무한 반복

무한 반복에 대해서 알아보자. 무한반복은 말 그대로 무한히 반복한다는 의미이다. 

 

※ 무한반복의 기본 형태 

while(true){
		무한 반복할 문장
	}

while문의 조건문이 True이므로 항상 참이 된다. 따라서 while문 안에 있는 문장들은 무한하게 수행될 것이다.

무한반복에 갇히지 않기 위해서는 특정한 조건일 때 break를 통한 탈출구 하나 이상을 만들어 주어야한다.

 

※ 무한반복 예시

lic static void main(String[] args) {
		int water = 1;
		int cup = 0;
		while(true) {
			cup += water;
			System.out.printf("컵에 물을 담자! 현재 물양 : %dL\n",cup);
			if(cup == 10) {
				System.out.println("그만! 컵이 넘치겠어 (;′⌒`)");
				break;
			}
		}

 

결과

 

컵에 물을 담자! 현재 물양 : 1L
컵에 물을 담자! 현재 물양 : 2L
컵에 물을 담자! 현재 물양 : 3L
컵에 물을 담자! 현재 물양 : 4L
컵에 물을 담자! 현재 물양 : 5L
컵에 물을 담자! 현재 물양 : 6L
컵에 물을 담자! 현재 물양 : 7L
컵에 물을 담자! 현재 물양 : 8L
컵에 물을 담자! 현재 물양 : 9L
컵에 물을 담자! 현재 물양 : 10L
그만! 컵이 넘치겠어 (;′⌒`)

 

탈출구를 만들지 않는다면, 컵에 물을 계속해서 담았겠지만 break로 탈출구를 만들어 무한반복에 갇히지않는다.

 


04 for문

 

횟수에 의한 반복문이다.
반복 횟수가 특정된 경우에 사용한다.

for 문은 while 문과는 달리 자체적으로 초기식, 표현식, 증감식을 모두 포함하고 있는 반복문이다.

  따라서 while 문보다는 좀 더 간결하게 반복문을 표현할 수 있다.

 

※ for문의 기본 형태 

 

for(초기식;조건식;증감식){
		반복할 문장
	}

for문 실행

 

 

초기식에서는 새로운 변수를 하나 선언한다.(내부에서 그 변수를 이용해 for문 안쪽에서 변하는 값으로 나타낼 수 있다.)

 

★ for문은 예시로 살펴보거나, 문제를 많이 풀어보는것이 좋다

 

※ for문 예시

 

for (int i = 0; i < 10; i++) {
   // i가 10 미만인 동안 i 증감
			System.out.println(i);
		}

 

결과

0
1
2
3
4
5
6
7
8
9

 


마지막으로 한번더 while문 / do ~ while문 / for문의 차이를 살펴 보자

 

  while문 do~while문 for문
특징 ▪ 조건이 참인 동안 반복

▪ 조건이 맞지 않으면 수행
  되지 않음
▪ 조건이 참인 동안 반복

▪ 수행 후 조건문 체크를 하기 때문에 무조건 한번은 실행
▪ 횟수에 의해 반복

반복 횟수가 특정된 경우
사용한다.

초기식, 표현식, 증감식을 모두 포함하고 있다

 

 

 

 

 

반응형

'프로그래밍 > JAVA' 카테고리의 다른 글

11 1차원 배열  (0) 2021.04.01
10 For문을 사용한 문제 풀이  (0) 2021.03.30
08 제어문_조건문(if문,switch문 / 기타,누적,증감 연산자)  (0) 2021.03.25
07 연산자  (0) 2021.03.24

댓글