본문 바로가기
JAVA/기본 이론

9. 반복문 - while 문, do while 문

by D.O.T 2024. 2. 10.
while 문 이란?

 

while문도 for문과 마찬가지로 ~동안 이라는 뜻을 가지고 있는 반복문입니다.

이전 포스트에서 for문에서 ~동안을 의미하는 곳이 조건식이라고 설명했습니다.

while문도 마찬가지로 '조건식' 동안 반복을 하겠다는 의미가 됩니다.

 

조금 더 자세히 알기 위해서 for문의 수행 과정을 복습해보겠습니다.

 

첫 번째 수행 (초기값),

먼저, '초기값'에 들어가는 내용은 0개 이상 작성하면 됩니다.

초기값을 설정하지 않아도 수행되는 것이죠.

저는 3개의 변수 i, j, cnt를 초기값으로 특정 값을 할당 했습니다.

 

두 번째 수행 (조건식),

조건동안 for문을 수행할 수 있는지 확인합니다.

조건은 i < j 이므로, (i : 10) < (j : 20) 를 만족합니다.

두 번째 수행에서 조건을 만족하는 경우 세 번째 수행으로 넘어가고,

조건을 만족하지 않는 경우 여기서 for문은 종료됩니다.

※ 조건식은 boolean 값만 됩니다. C++은 다름.

 

세 번째 수행 (문법),

두 번째 수행에서 만족한 경우 세 번째 수행을 합니다.

세 번째 수행은 for 문의 중괄호 { } 로 묶여 있는 문법을 수행하는 것 입니다.

우리가 수행할 문법은 for문의 각 수행 횟수에 대한 i와 j를 출력합니다.

모든 문법이 끝나면 네 번째 수행을 시작합니다.

 

네 번째 수행 (증감식),

사람들이 말을 증감식으로 표현한 것이지 사실은 다음 수행할 명령입니다.

즉 문법에서 마지막 줄에 추가하는 것과 같습니다.

우선 위 코드에서 해당하는 네 번째 수행은 cnt와 i를 1씩 증가하고 j를 2씩 감소하는 것입니다.

 

다섯 번째 수행 (반복),

조건식에 따라 종료 될 때까지 반복합니다.

 

for에서 초기 조건과 증감식을 제외한 예제를 작성했었는데요.

int i = 0;
for (; i < 10; ) i++;

위 코드와 같은 형태였죠? 여기서 세미콜론(;)을 없애고 for를 while로 바꾸면 그냥 while문 입니다.

 

int i = 0;
while (i < 10) i++;

// or

while (i < 10) {
	i++;
}

while문도 for문과 마찬가지로 조건식에는 boolean 값이 들어가야합니다.

continue와 break를 작성하는 것 또한 똑같습니다.

 

for문과의 차이

 

위 설명만 들었을 때는 for문과 차이가 없죠??

for문의 경우, 초기값과 증감식에 대한 정보를 별도로 저장해둡니다.

그리고 맨처음 초기값 선언을 포함한 총 5번의 연산을 수행하게 되죠.

반면에, while문은 초기값에 대해 별도로 저장할 수 없으며 while 문 밖에서 할당을 해야하죠.

 

즉, 주로 for문은 for문 내부의 데이터를 연산할 때 사용하고

while문은 for문 외부의 데이터를 연산할 때 사용합니다.

 

for (int i = 0; i < 10; i++) {
	System.out.printf("%d ", (i+1));
}

int i = 0;
while (i < 10) {
	System.out.printf("%d ", (i+1);
}

 

 

첫 번째 수행 (조건식),

조건동안 while문을 수행할 수 있는지 확인합니다.

조건을 만족하지 않는 경우 여기서 while문은 종료됩니다.

※ 조건식은 boolean 값만 됩니다.

 

두 번째 수행 (문법),

while 문 블럭( 중괄호, {} ) 내에 표현 된 문법들을 수행합니다.

※ 이 때, while문을 종료시키기 위한 조건을 판별하기 위해 if문과 break, continue 문을 섞어서 사용합니다.

 

세 번째 수행 (반복)

do - while 문

 

while 문에는 do - while문이라는 것도 존재합니다.

do - while문은 먼저 실행 후에 조건식을 검사하는데요.

 

while문은 세 가지 수행을 하는데 do - while문도 마찬가지로 세 가지 수행을 합니다.

다만 순서가 바뀝니다.

 

첫 번째 수행 (문법),

do 문 블럭( 중괄호, {} ) 내에 표현 된 문법들을 수행합니다.

※ 이 때, do-while문을 종료시키기 위한 조건을 판별하기 위해 if문과 break, continue 문을 섞어서 사용합니다.

 

두 번째 수행 (조건식),

조건동안 do-while문을 수행할 수 있는지 확인합니다.

조건을 만족하지 않는 경우 여기서 do-while문은 종료됩니다.

※ 조건식은 boolean 값만 됩니다.

 

세 번째 수행 (반복)

 

public class Main
{
	public static void main(String[] args) {
	    int i = 0;
	    do {
	        System.out.printf("%d ", ++i);
	    }
	    while (i < 10);
	}
}

 

노션 정리 URL

https://www.notion.so/24jihwan/019643d1ca304dd684ceaa73c34cf08e

 

논리 사고 | Notion

연산자와 명령문 이해

24jihwan.notion.site

'JAVA > 기본 이론' 카테고리의 다른 글

4. 입/출력 (Input/Output, I/O)  (0) 2024.02.24
8. 반복문 - for 문  (1) 2024.02.10
7. 다차원 배열 (Multi Dimensional Array)  (1) 2024.02.10
6. 배열 (Array)  (1) 2024.02.10
5. 연산자(Operator)와 연산 순위  (1) 2024.02.10