본문 바로가기

개발자 이야기/JAVA

자바 반복문에 대해 알아보자 1편, for문

주말을 푹 쉬고 다시 새로운 한 주가 시작되었다. 주말에 맥북을 팔아버린 관계로 포스팅을 하지 못해서 짬이 난 김에 이렇게 정리 포스팅을 한다. 새로운 윈도우 노트북도 주문하여 오늘 도착 예정이기 때문에 요 당분간은 새 노트북 버프(?)로 열심히 공부해서 정리 포스팅을 할 수 있을 것 같다. 물론 키보드와 외부 모니터가 있으면 더 공부 열심히 할텐데 ㅎㅎ.. 이런 핑계를 또 대고 있다. 키보드는 다음주에나 구매 예정이고 모니터는 아직 잘 모르겠다.. 돈만 있으면 바로 지를 텐데 .. 역시 그 놈의 돈이 문제다. 아무튼 사설을 줄이고 이제 포스팅을 시작해야겠다.


지난 포스팅에서는 조건문에 대해서 정리해봤다. 개인적으로 프로그래밍의 꽃은 조건문 / 반복문이라고 생각하기 때문에 매우 중요하다. 조건문이랑 반복문 없이는 간단한 프로그램 외에는 진짜 짤 수가 없을 것 같다. 그만큼 중요한 부분이다! 반복문은 말 그대로 반복하는 것이다. 대표적으로 for문과 while문을 많이 쓰는데, 아주 가끔 do-while문도 써봤던 기억이 있다. 최근에는 써본 기억이 없지만.. 반복문이 정리할 게 많아서 이번 포스팅에선 for문만 정리하고 다음 포스팅에서 while문과 do-while문을 한꺼번에 정리하려고 한다.



▶ for문


우선 반복문 중에서 가장 기본적인 것은 for문이다. 사실 for문을 제일 많이 쓰는 것 같다. while문도 있지만 최근엔 쓴 기억이 없다. for문의 기본적인 형식을 살펴보면,



이러하다. 지난 포스팅에서 정리했던 조건문처럼 for문과 같은 반복문도 조건식이 존재한다. 조건식을 일치하는 만큼 반복문을 돌기 때문이다. 다만 for문의 조건식은 단순히 if문이나 switch문이랑은 다르다. 한번 살펴보자. for문 뒤에 소괄호 안에 있는 조건식을 세미콜론(;)을 기준으로 나눠서 살펴보겠다. for(①; ②; ③) 이런식으로 말이다. 


우선 반복횟수를 나타내는 변수를 선언(for문 전에 선언했다면 선언할 필요 없음)하고 초기화하는 부분이다. 

그리고 에서 에서 초기화한 변수가 얼마나 반복문을 돌 것인지를 설정한다. 즉, ①에서 초기화했던 변수가 ② 조건식을 만족할 때까지 반복문을 돌겠다는 뜻이다.

마지막 은 증감식을 쓰는데, 반복문이 한 바퀴 돌면 에서 선언한 변수에 대해 증감을 수행한다. 


for문을 한마디로 정리해보면, for문 조건식 처음에 초기화한 변수가 조건을 만족할 때까지 반복을 하는데, 괄호 안의 내용이 다 수행될때마다 변수가 증감한다는 것이다. for문의 예를 간단하게 살펴보자.


1
2
3
4
5
6
7
8
9
10
11
12
package test;
 
public class test {
    public static void main(String[] args) {
        int sum = 0;
        for(int i=1; i<=10; i++){
            sum += i;
        }
        System.out.println("1부터 10까지의 합은 " + sum + "입니다.");
    }
}
//출력값 : 1부터 10까지의 합은 55입니다.
cs


위의 코드는 1부터 10까지의 정수의 합을 구하는 코드이다. for문을 살펴보면 우선 int형 변수 i를 선언하고, 1로 초기화해주었다. 그리고 i가 10이하일 동안 for문을 돌고, for문 한 바퀴를 돌 때마다 i는 1씩 증가한다는 것이다. 그럼 i는


i = 1, 2, 3, 4, 5, 6, 7, 8, 9, 10


이렇게 10번이 반복된다. 그리고 돌 때마다 sum이라는 변수에 i를 누적해서 더해간다. 그래서 결과값은 저렇게 나오게 된다. 그리고 이런 for문은 단일 for문이 아닌 중첩해서 사용할 수 있다. 대표적으로 구구단을 들 수가 있다. 별 찍기도 마찬가지이다. 간단한 구구단 코드를 살펴보자.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
package test;
 
public class test {
    public static void main(String[] args) {
        for(int i=2; i<=9; i++){
            for(int j=1; j<=9; j++){
                System.out.println(i + "*" + j + "=" + (i*j));
            }
        }
    }
}
/*
출력값
2*1=2
2*2=4
2*3=6
...
9*8=72
9*9=91
*/
cs


이 코드는 2단부터 9단까지 출력한다. 우선 겉에 있는 for문을 살펴보면, 2부터 9까지 돌게 되어 있다. 그리고 안에 있는 for문은 1부터 9까지 돌게 되어 있다. 이 for문은 어떻게 도냐면


i = 2, j = 1, 2, 3, 4, 5, 6, 7, 8, 9

i = 3, j = 1, 2, 3, 4, 5, 6, 7, 8, 9

...

i = 9, j = 1, 2, 3, 4, 5, 6, 7, 8, 9


이런 식으로 돌게 된다. 안에 있는 for문이 다 돌아야 겉에 있는 for문이 한 번 다 돌게 되는 것이다. 이런 이중 for문도 많이 쓰인다.




이렇게 해서 반복문 중에 우선 for문만 정리해봤다. while문과 do-while문은 한꺼번에 다음 포스팅에서 정리할 예정이다.