[Java] for문 1

코드 속의 "진돌"·2023년 12월 30일
0
post-thumbnail

✅ for문


for문도 while문과 같은 반복문이고, 코드를 반복 실행하는 역할을 한다. for문은 주로 반복 횟수가 정해져 있을 때 사용한다.

✏️ for문 구조

for (1.초기식; 2.조건식; 4.증감식) {
	// 3.코드
}

for문은 다음 순서대로 실행된다.

  1. 초기식이 실행된다. 주로 반복 횟수와 관련된 변수를 선언하고 초기화 할 때 사용한다. 초기식은 딱 1번 사용된다.
  2. 조건식을 검증한다. 참이면 코드를 실행하고, 거짓이면 for문을 빠져나간다.
  3. 코드를 실행한다.
  4. 코드가 종료되면 증감식을 실행한다. 주로 초기식에 넣은 반복 횟수와 관련된 변수의 값을 증가할 때 사용한다.
  5. 다시 조건식부터 시작한다. (무한 반복)

for문은 복잡해 보이지만 while문을 조금 더 편하게 다룰 수 있도록 구조화 한 것 뿐이다.

예를 들어 1부터 10까지 출력하는 for문은 다음과 같다.

for (int i = 1; i <= 10; i++) {
	System.out.println(i);
}
  1. 초기식이 실행된다. int i = 1
  2. 조건식을 검증한다. i <= 10
  3. 조건식이 참이면 코드를 실행한다. System.out.println(i);
  4. 코드가 종료되면 증감식을 실행한다. i++
  5. 다시 조건식을 검증한다. (무한 반복) 이후 i <= 10 조건이 거짓이 되면 for문을 빠져나간다.

✏️ For1

package loop;

public class For1 {

  public static void main(String[] args) {
    for (int i = 1; i <= 10; i++) {
      System.out.println(i);
    }
  }
}

✅ 문제


i부터 하나씩 증가하는 수를 endNum(마지막 수)까지 더해라 (i ~ endNum 더하기)

✏️ For2

package loop;

public class For2 {

  public static void main(String[] args) {
    int sum = 0;
    int endNum = 3;

    // 1 + 2 + 3 = 6
    for (int i = 1; i <= endNum; i++) {
      sum = sum + i;
      System.out.println("i = " + i + " sum = " + sum);
    }
  }
}

✏️ 출력 결과

✅ for vs while


while문과 for문을 비교해보자.

✏️ While2_3

package loop;

public class While2_3 {

  public static void main(String[] args) {
    int sum = 0;
    int i = 1;
    int endNum = 3;

    while (i <= endNum) {
      sum = sum + i;
      System.out.println("i = "  + i + " sum = " + sum);
      i++;
    }
  }
}

둘을 비교했을 때 for문이 더 깔끔하다는 느낌을 받을 것이다. for문은 초기화, 조건 검사, 반복 후 작업 등이 규칙적으로 한 줄에 모두 들어 있어 코드를 이해하기 더 쉽다. 특히 반복을 위해 값이 증가하는 카운터 변수를 다른 부분과 명확하게 구분할 수 있다.

for (int i = 1; i <= endNum; i++)

여기서는 바로 변수 i가 카운터 변수이다. 증가하면서 반복 횟수가 올라가고, 또 변수 i를 사용해서 계속 반복할 지 아니면 빠져나갈 지 판단할 수 있다.

이렇게 반복 횟수에 직접적인 영향을 주는 변수를 선언부터, 값 증가, 조건식에 활용까지 for (초기식; 조건식; 증감식) 구조를 활용해서 처리하는 것이다.

덕분에 개발자는 루프 횟수와 관련된 코드와 나머지 코드를 명확하게 구분할 수 있다.

반면에 while문을 보면 변수 i를 선언하는 부분 그리고 i++로 증가하는 부분이 기존 코드에 분산되어 있다.

profile
매일 성장하는 주니어 개발자의 기록📝

0개의 댓글