반복문

1) for문

조건문에서는 수많은 경우의 수에서 조건에 부합하는 명령만 실행했다면, 반복문에서는 횟수를 정해서 그만큼 명령을 반복실행시킬 수 있다. 10번, 혹은 100번 정도의 반복은 사람이 충분히 복사 붙여넣기를 통해서 할 수 있지만, 극단적으로 얘기해서 반복횟수가 1억, 1조가 되어야 한다면, 직접 만드는건 사실상 불가능할 것이다.

조건문의 기본적인 형태를 살펴보자.

for(초기화: 조건식; 증감식){
	문장들;
	...
}

반복문의 원리는 하나의 정수를 초기화 시키고, 그 정수의 조건을 세운 다음, 증감식을 통해 반복 횟수를 결정시키는 방법이다.

for(i=1; i<=10; i++){	// 1 <= 10 --> run --> i++ --> 2 <= 10 --> run ....
	System.out.println("목요일입니다.")
}

위 반복문에서 i값이 1로 초기화되었고, 조건은 i가 10이하, 한번 반복할때마다 i는 1씩 증가된다는 조건이다.

1로 시작해서 10까지 명령문을 반복실행하고, 11이 되어서 조건을 만족하지 않을때 블럭을 빠져나온다.

 

※ for문 응용

for문 안에 if문

for(int i=1; i<=100; i++) {
	if(i%2==0) {
		System.out.println(i);
	}
}

다중 for문

for(초기화, 조건식, 증감식){
	for(초기화, 조건식, 증감식){
		문장들;
		...
	}
}

다중 for문의 형태는 행렬과 같다.

첫번째 for문의 조건식을 만족하면, 두번째 for문이 실행되고,

두번째 for문이 조건에 맞게 실행되면 블럭을 빠져나오면 첫번째 for문의 증감식 --> 조건식 확인 후 또 다시 두번째 for문이 처음부터 실행된다.

예제로 살펴보자.

for(char i='A'; i<='Z'; i++) {
	for(char j=i; j<='Z'; j++) {
		System.out.print(j);
	}
	System.out.println();
}

첫번째 for문에서 i='A'가 조건을 만족하기 때문에, 두번째 for문의 조건 또한 성립한다. (j=i='A')

두번째 for문의 명령을 실행하면 A~Z까지 줄바꿈 없이 쭉 나열할 것이다.

Z까지가 조건이기 때문에 나열 후 블럭을 빠져나와 줄바꿈을 해준 뒤에, 다시 첫번째 for문의 증감식 i++로 돌아온다.

이때 i는 A가 아닌 B가 되고, 조건을 만족하기 때문에 다시 두번째 for문의 조건으로 넘어간다.

첫번째 실행과는 다른 점은 i='B'이기 때문에, B~Z까지 나열한다는 점이다.

이 모든 과정은 i가 Z일때까지 반복된다.

 

2) while문

while(조건식){
	실행문;
}

while문은 for문의 초기화, 증감식이 빠진 형태를 보인다.

빠진 초기화는 while문 위에, 증감식은 실행문 밑으로 위치가 바뀐다.

int x=1;
while(x<=10) {
	System.out.println("목요일입니다.");
	++x;
}

위 예제와 for문의 첫 예제는 출력값이 완전히 똑같다. 코드의 형태만 다를 뿐이다.

for문의 예제들 모두 while문 형태로 바꿔써줄 수 있다.

 

3) do~while문

do{
	실행문;
}while(조건식);

do~while문은 while문에서 파생된 형태를 가지고 있다.

마찬가지로 초기화는 do 위에, 증감식은 실행문 밑에 온다.

 

※ while과 do~while의 차이점

int x=10;
		
while(x>50) {	// while(false) --> don't run
	System.out.println(x);
}

do {
	System.out.println(x);	// run --> while(false) : 최초 1번은 실행
}while(x>50);

서로 매우 유사한 while과 do~while의 차이점은 최초 실행이 존재하냐 안하냐이다.

 

※※ for과 while의 차이점

현재 단계에서는 체감되지 않지만, 추후에 웹과의 연결에 있어서 for과 while이 다르게 사용된다.

for문은 주로 수치반복일때 주로 쓰이고, while문은 레코드 단위의 데이터 반복 처리 및 행위 제어에 주로 쓰인다.

물론 둘 다 서로의 역할을 해낼 수 있지만, 각각의 경우에 쓰기 편하기 때문에 이렇게 나뉘는거라고 볼 수 있다.

'Java' 카테고리의 다른 글

10.21.(금) Java-08: 함수  (0) 2022.10.22
10.20.(목) Java-07: 배열  (0) 2022.10.21
10.19.(수) Java-05: 제어문(조건문)  (0) 2022.10.19
10.18.(화) Java-04: 연산자 예시  (0) 2022.10.19
10.18.(화) Java-03: 연산자  (0) 2022.10.19

+ Recent posts