728x90
반응형
반복(loop) 문
-
특정 조건에 따라 문장 또는 블록을 반복 실행하는 문
-
for문, while문으로 구분됨
for문은 주로 반복 횟수가 정해져 있는 반복문에 사용되며, while문은 주로 반복횟수가 정해져 있지 않은 반복문에 사용됨
-
초기식, 조건식, 증감식, 실행문(블록)으로 구성됨
for문
-
초기식, 조건식, 증감식의 위치가 정해져 있는 반복문 (초심자에게 유리)
-
초기식으로 제어 변수를 초기화 한 후, 조건식을 통해 반복 여부를 결정한 뒤 결과가 true 이면 반복할 문장을 실행하고 증감식을 통해 제어변수를 증감시킴
이후 조건식 -> 실행문 -> 증감식 순으로 반복 수행하다 조건식 결과가 false 가 되면 반복문을 종료하고 빠져나감
기본 문법
for(초기식(1); 조건식(2); 증감식(4)) {
// 조건식 결과가 true 일 때 반복 실행할 문장들...(3)
}
=> 초기식(1) : 반복 횟수를 제어하는 제어변수를 초기화(선언 포함)
(for문 시작 시 단 한 번 수행됨)
=> 조건식(2) : 반복 여부 결정을 위해 조건 판별
(조건식 결과가 true 일 때 반복, false 일 때 종료)
=> 증감식(4) : 제어변수를 조건식에 가까워지도록 증감 수행
=> 조건식이 true 일 동안 2 -> 3 -> 4 를 반복 수행함
System.out.println("1 : Hello, World!");
System.out.println("2 : Hello, World!");
System.out.println("3 : Hello, World!");
System.out.println("4 : Hello, World!");
System.out.println("5 : Hello, World!");
System.out.println("6 : Hello, World!");
System.out.println("7 : Hello, World!");
System.out.println("8 : Hello, World!");
System.out.println("9 : Hello, World!");
System.out.println("10 : Hello, World!");
System.out.println("-------------------");
// for문을 사용하여 "Hello, World!" 문자열 출력 작업을 반복 수행
for(int i = 1; i <= 10; i++) {
// 조건식 판별 결과가 true 일 때 실행할 문장
System.out.println(i + " : Hello, World!");
}
위의 반복문에 대한 흐름 확인(= 디버깅, Debugging)
제어변수 i | 조건식 i <= 10 | 실행결과(출력) | 증감식 i++ |
1 | true | "1 : Hello, World" 출력 | 1 -> 2 |
2 | true | "2 : Hello, World" 출력 | 2 -> 3 |
3 | true | "3 : Hello, World" 출력 | 3 -> 4 |
- - - 생략 - - - | |||
8 | true | "8 : Hello, World" 출력 | 8 -> 9 |
9 | true | "9 : Hello, World" 출력 | 9 -> 10 |
10 | true | "10 : Hello, World" 출력 | 10 -> 11 |
11 | false | for문을 종료하고 빠져나감 |
System.out.println("----------------------------");
// 제어변수 i가 1 ~ 10까지 2씩 증가하면서 i 값 출력
// => 1 3 5 7 9
for(int i = 1; i <= 10; i += 2) {
System.out.print(i + " ");
}
System.out.println(); // 줄바꿈
System.out.println("----------------------------");
// 제어변수 i가 2 ~ 10까지 2씩 증가하면서 i 값 출력
// => 2 4 6 8 10
for(int i = 2; i <= 10; i += 2) {
System.out.print(i + " ");
}
System.out.println(); // 줄바꿈
System.out.println("----------------------------");
// 제어변수 i가 10 ~ 1까지 1씩 감소하면서 i 값 출력
// => 10 9 8 7 6 5 4 3 2 1
for(int i = 10; i >= 1; i--) {
System.out.print(i + " ");
}
for문과 if문의 조합
- for문 내에서 if문을 사용하여 반복 과정에서 특정 조건에 만족하면 지정된 문장을 실행하거나 실행하지 않음
// for문을 사용하여 i가 1 ~ 10까지 1씩 증가하면서 반복 => i 출력
for(int i = 1; i <= 10; i++) {
// 1 ~ 10 까지 정수 중 i값이 5일 때 출력
// if(i == 5) {
// System.out.println("i = " + i);
// }
// 1 ~ 10 까지 정수 중 i값이 5보다 작을 때 출력
if(i < 5) {
System.out.println("i = " + i);
}
}
System.out.println("==========================");
// for문을 사용하여 i가 1 ~ 10까지 1씩 증가 반복
// => i값이 짝수일 때 "i = X, 짝수!" 출력하고,
// i값이 홀수일 때 "i = X, 홀수!" 출력
for(int i = 1; i <= 10; i++) {
if(i % 2 == 0) { // 짝수일 때
System.out.println("i = " + i + ", 짝수!");
} else { // else if(i % 2 == 1) 대신 else 문 사용 가능
System.out.println("i = " + i + ", 홀수!");
}
}
반복문을 사용한 합계(연산의 누적) 계산
- 합계를 누적할 누적 변수 선언 및 초기화 ex. 덧셈을 누적할 total 변수를 0으로 초기화 : int total = 0
- 합계를 계산할 범위의 반복문 작성 (ex. 1 ~ 10까지 1씩 증가하면서 합계 계산) for(int i = 1; i <= 10; i++) {}
- 반복문 내에서 합계 누적 ex. i값을 total에 누적 : total += i
- 반복문 안 또는 바깥에서 누적 결과 출력
/*
* 1 ~ 10 까지의 합 계산
* => 1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 = 55
* => 1 ~ 10까지 1씩 증가하면서 반복하는 반복문 필요
* => 1 ~ 10 까지 1씩 증가하는 숫자를 반복해서 누적할 누적변수 필요
*/
int total = 0; // 합계를 누적할 누적변수 선언 및 0 으로 초기화
for(int i = 1; i <= 10; i++) {
// 누적변수 total 에 제어변수 i 값을 누적
// => total 에 i값을 더해서 다시 total 에 저장
total += i; // i값 누적(total = total + i 과 동일)
// 만약, 누적 과정을 출력하려면 반복문 내에서 출력문 사용
// System.out.println("i = " + i);
// System.out.println("1 ~ 10까지의 합 : " + total);
}
// 반복문 종료(누적 종료) 후 결과를 출력
System.out.println("1 ~ 10까지의 합 : " + total);
중첩 for문
- for문 내부에 또 다른 for문을 기술하는 것
- 특정 작업의 반복에 대해 다시 반복을 적용하여 중첩 반복을 수행 ex) 시계의 분 & 초를 표현하거나, 운동장 트랙을 10바퀴 도는 것
- 중첩 for문 중에서 바깥쪽에 기술된 for문을 바깥쪽 for문, 안쪽에 기술된 for문을 안쪽 for문이라고 한다. 안쪽 for문의 반복 횟수가 바깥쪽 for문 반복 횟수보다 많다. 안쪽 for문 반복 횟수 = 안쪽 for문 반복 횟수 * 바깥쪽 for문 반복 횟수
기본 문법
for(초기식1; 조건식1; 증감식1) {
문장1; // 바깥쪽 for문 반복 횟수만큼 반복
for(초기식2; 조건식2; 증감식2) {
문장2;
// 안쪽 for문 반복 횟수만큼 반복 * 바깥쪽 for문 반복횟수 만큼 반복
}
문장3; // 바깥쪽 for문 반복 횟수만큼 반복
}
실행 순서
초기식1 -> 조건식1(true 일 때) -> 문장1 -> 초기식2 -> 조건식2(true 일 때) -> 문장2 -> 증감식2 -> 조건식2(반복) -> 조건식2(false 일 때) -> 문장3 -> 증감식1 -> 조건식1(반복)
for(int i = 1; i <= 3; i++) { // 바깥쪽 for문
System.out.println("i = " + i);
for(int j = 1; j <= 5; j++) { // 안쪽 for문
// 안쪽 for문 반복 횟수 = j 5번 * i 3번 = 15번
System.out.println("--------------> j = " + j);
}
System.out.println("========================");
}
반복문에서 제어 변수의 활용
- 반복문에서 제어변수의 초기식, 조건식, 증감식 등에 다른 변수(제어 변수 포함)를 조합하여 사용 가능 특히, 계속 변화하는 제어 변수를 조건식 등에 사용할 경우 반복 횟수가 동적으로 변하는 반복문을 구현할 수 있다.
/*
* 안쪽 for문의 반복횟수가 바깥쪽 for문의 제어변수에 영향을 받는 for문
* * i = 1, j = 1 ~ 1
* ** i = 2, j = 1 ~ 2
* *** i = 3, j = 1 ~ 3
* **** i = 4, j = 1 ~ 4
* ***** i = 5, j = 1 ~ 5
* => j 값의 조건식(최대값)이 i값과 동일함
* 따라서, j 반복의 조건식에 i값을 사용하여
* 조건식을 동적으로 변화시킬 수 있다!
*/
for(int i = 1; i <= 5; i++) {
for(int j = 1; j <= i; j++) {
System.out.print("*");
}
System.out.println(); // 줄바꿈
}
728x90
반응형
'프로그래밍 언어 > JAVA' 카테고리의 다른 글
[JAVA] 자바의 메서드 Method (0) | 2021.01.18 |
---|---|
[JAVA] 자바의 배열 Array (0) | 2021.01.18 |
[JAVA] 조건문 if & switch (0) | 2021.01.18 |
[JAVA] 자바의 비교&논리 연산자 (0) | 2021.01.18 |
[JAVA] 자바의 연산자 (0) | 2021.01.18 |