Ch4-13~14. for문
0. 목차
Chapter4. 조건문과 반복문
Ch4 - 13. for문
Ch4 - 14. for문 예제
Ch4 - 13. for문
▶ for문이란?
▷ 조건을 만족하는 동안 블럭{}을 반복
▷ 반복횟수를 알 때 적합
for (①초기화; ②조건식; ④증감식) {
// 조건식이 참일 때, ③수행문 수행
} // ⑤조건식이 거짓일 때, for문을 빠져나옴
Ch4 - 14. for문 예제
▶ 초기값 11; 1씩 증가; 5번 도는 for문?
▷ i = 11, 12, 13, 14, 15
for (int i = 11; i < 16; i++) {
System.out.printf("[%d] ", i);
}
// console
i = [11] [12] [13] [14] [15]
▶ 초기값 1; 2씩 증가; 10번 도는 for문?
▷ i = 1, 3, 5, 7, 9, 11, 13, 15, 17, 19
for (int i = 1; i < 20; i = i + 2) {
System.out.printf("[%d] ", i);
}
// console
i = [1] [3] [5] [7] [9] [11] [13] [15] [17] [19]
▶ 초기값 1; 2배 씩 증가; 10번 도는 for문?
▷ i = 1, 2, 4, 8, 16, 32, 64, 128, 256, 512
for (int i = 1; i < 513; i = i * 2) {
System.out.printf("[%d] ", i);
}
// console
i = [1] [2] [4] [8] [16] [32] [64] [128] [256] [512]
▶ 초기값 10; 1씩 감소; 10번 도는 for문?
▷ i = 10, 9, 8, 7, 6, 5, 4, 3, 2, 1
for (int i = 10; i >= 1; i--) {
System.out.printf("[%d] ", i);
}
// console
i = [10] [9] [8] [7] [6] [5] [4] [3] [2] [1]
-
i <= 1??
i <= 1 : i가 1보다 작거나 같을 때 까지
i >= 1 : i가 1보다 크거나 같을 때 까지 -
i = 10; 10 <= 1??
이건 처음부터 false
그래서 i >= 1
▶ 초기값 i = 1, j = 10; i = 1씩 증가, j = 1씩 감소; 10번 도는 for문?
▷ i = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10
▷ j = 10, 9, 8, 7, 6, 5, 4, 3, 2, 1
for (int i = 1, j = 10; i <= 10; i++, j--) {
System.out.println("i = " + i + ", j = " + j);
}
// console
i = 1, j = 10
i = 2, j = 9
i = 3, j = 8
i = 4, j = 7
i = 5, j = 6
i = 6, j = 5
i = 7, j = 4
i = 8, j = 3
i = 9, j = 2
i = 10, j = 1
- i와 j의 타입이 같아야 사용가능
- i와 j는 for문 내에서만 사용가능 - 외부사용 불가
▷ 변수의 범위(scope) : 선언위치부터 선언된 블럭{}의 끝까지
- for문 내부에서 변수i 선언
for (int i = 1; i < 10; i++) { // for () {_} → 변수의 범위 // i의 범위는 여기까지 } System.out.println(i) // 에러, 변수의 범위를 벗어남
- for문 외부에서 변수j 선언
publid static void main(String args[]) { int j; // main() {_} → 변수의 범위 for (j = 1; j < 10; j++) { } System.out.println(j) // 사용가능, j의 범위는 여기까지라서 }
변수의 범위는 좁을 수록 좋다
변수의 값이 잘못되었을 때 확인해야하는 범위가 좁으니까
▶ for문이 무한반복이 되는 경우
▷ 조건식 생략
▷ for문에 true 값을 넣은 경우
▶ sum에 1부터 1씩 커지는 수를 5까지 더하기 → 반복문으로 만들기
▷ sum = sum + 1; sum = sum + 2; … sum = sum + 5;
public static void main(String[] args) {
int sum = 0;
for (int i = 1; i <= 5; i++) {
System.out.printf("%d + ", sum);
sum += i;
System.out.printf("%d = %d\n", i, sum);
}
}
// console
0 + 1 = 1
1 + 2 = 3
3 + 3 = 6
6 + 4 = 10
10 + 5 = 15