1. 소개
다음과 같은 과제가 있다고 상상해 보세요: 화면에 “안녕!”을 열 번 출력하기. 물론 System.out.println("안녕!"); 열 줄을 그대로 쓸 수도 있지만 — 이제 while 반복문을 알고 있으니 문제없이 해결할 수 있겠죠.
그런데 또 다른 반복문 — for — 이 있습니다. 필요한 횟수만큼 동작을 반복해 주고, 심지어 스스로 카운트를 관리합니다!
전형적인 예는 다음과 같습니다:
for (int i = 0; i < 10; i++)
{
System.out.println("안녕!");
}
이 코드는 무엇을 할까요? 화면에 “안녕!”을 정확히 10번 출력합니다. 복붙도 없고 손목 통증도 없습니다.
2. for 반복문의 문법
for 반복문은 키워드 for 뒤 괄호 안에 작성되는 세 가지 구성 요소로 이루어집니다:
for (initsializatsiya; uslovie; izmenenie)
{
// 반복문 본문
}
for 반복문의 일반적인 문법
각 요소를 자세히 살펴봅시다:
- 초기화 — 보통 반복 횟수를 세는 카운터 변수를 만드는 단계입니다(int i = 0).
- 조건 — 각 반복 전에 검사합니다. 조건이 참이면 반복문 본문을 실행하고, 거짓이면 반복을 종료합니다. 예: i < 10.
- 변경 — 각 반복 후에 실행되는 연산자입니다. 보통 카운터 값을 증가하거나 감소시킵니다(i++).
다음과 같은 흐름도를 그릴 수 있습니다:
3. for와 while 비교
사실 for는 while 반복문을 다른 형태로 쓴 것이라고 생각하면 이해가 쉬울 겁니다.
while 반복문이 이렇게 있었다고 해봅시다:
int i = 0; // 반복문을 위한 변수 초기화
while(i<10) // 반복 계속 조건 검사
{
System.out.println(i); // 유용한 동작(반복문 본문)
i++; // 카운터 증가
}
for 반복문으로 바꾸려면, 반복을 제어하던 동작들을 괄호 안으로 옮기기만 하면 됩니다:
for (int i = 1; i <= 10; i++) // 초기화; 조건 검사; 카운터 증가
{
System.out.println(i); // 유용한 동작(반복문 본문)
}
두 반복문의 동작 순서:
- 초기화 int i = 0;는 반복문 시작 전 한 번만 실행됩니다.
- 그다음 조건 i <= 10을 검사합니다
- 그다음 반복문의 유용한 동작 System.out.println(i);
- 그다음 카운터를 증가 i++합니다
- 그다음 2단계로 다시 돌아갑니다.
4. for 반복문 사용 예시
가장 간단한 예
1부터 5까지 출력해 봅시다:
for (int i = 1; i <= 5; i++)
{
System.out.println(i);
}
출력:
1
2
3
4
5
참고: 만약 i < 5로 작성했다면 마지막 출력은 4가 됩니다.
카운트다운
우주비행사가 된 기분을 느껴보고 싶나요? 카운트다운을 해봅시다!
for (int i = 5; i > 0; i--)
{
System.out.println(i);
}
System.out.println("출발!");
출력:
5
4
3
2
1
출발!
증가값이 1이 아닌 경우
증가값(혹은 감소값)은 1뿐 아니라 임의의 수로 설정할 수 있습니다:
for (int i = 0; i <= 10; i += 2)
{
System.out.println(i);
}
// 출력: 0 2 4 6 8 10
5. for 반복문의 변형
반복문에서 여러 변수 사용
두 변수를 동시에 추적하면 편리할 때가 있습니다. 예를 들어 오른쪽에서 왼쪽, 왼쪽에서 오른쪽으로 숫자를 나란히 출력해 봅시다:
for (int left = 1, right = 10; left <= 10; left++, right--)
{
System.out.println(left + " " + right);
}
출력:
1 10
2 9
3 8
...
10 1
무한 for 반복문
상황이 아주 특별하다면(예: 여러분의 프로젝트가 IT계의 영구기관이라면) “영원한” for 반복문을 만들 수도 있습니다:
for (;;) // 초기화도, 조건도, 변경도 없음
{
System.out.println("일하고, 일하고, 또 일하자!");
}
주의: 이런 반복문은 본문에 break, return 또는 throw가 있을 때만 종료됩니다. 특별한 이유 없이 사용하지 마세요 — 그렇지 않으면 고대의 악마, “프로세스가 응답하지 않습니다”를 깨울지도 모릅니다.
GO TO FULL VERSION