조건문과 반복문 (2)

jojaljaejal·2024년 8월 19일

Java

목록 보기
2/3

for

반복된 횟수를 알고있을 경우 사용하기 적합한 반복문


"for"라는 예약어를 만나는 경우 ( ) 안에 있는 조건이 참이면 반복실행하겠다. 라는 뜻

(1)

for(`초기화; 조건식; 증감식;) {
// 조건식이 참일 때 수행될 문장들
}

초기화는

초기화;
변수를 초기화하는 부분이며 처음에 기준값이 된다.

조건식은

for(초기화; 조건식; 증감식;) {
// 조건식이 참일 때 수행될 문장들
}

for의 뜻이 '~하는 동안' 이므로 조건식이 참인 동안 반복을 계속한다.
예를 들어 (int i=1; i<10; i++) 라고 가정한다면 i는 1을 초기값(i=1)으로 가지며 i가 10 보다 낮으면(i<10) 계속 반복하겠다 라는 뜻이다.

증감식은

for(초기화; 조건식; 증감식; ) {
// 조건식이 참일 때 수행될 문장들
}

반복문에서 초기화에 사용한 변수를 증가 또는 감소시키는 식이다.
처음 초기화시킨 i=1 의 변수 값을 ++(증가) 점진적으로 증가시켜 결국 조건이 거짓이 되어 (i가 10보다 커졌을 때) for문을 벗어나게 된다.

for(int i =1; i<=10; i++) { ... } // 1부터 10까지 1씩 증가
for(int i =1; i<=10; i--) { ... } // 1부터 10까지 1씩 감소
for(int i =1; i<=10; i+= 2) { ... } // 1부터 10까지 2씩 증가
for(int i =1; i<=10; i*= 3) { ... } // 1부터 10까지 3배씩 증가

for( ) {

} for문에서 이 코드블럭( {} )이 한 범위이다. 그렇기 때문에 for문의 범위 내에서 사용된 지역변수는 for문이 종료되는 순간 소멸한다. 또한 범위가 끝나기 전에 만나는 코드들은 모두 실행시키고 다시 조건식으로 올라온다는 점을 꼭 기억하자 .

✏️구구단 2단에서 9단까지 생성하기.

// 구구단 example.

        for(int i= 2; i < 10; i++){
                System.out.println( "=== " + i + "단 ===" );
            for(int j= 1; j < 10; j++){
                int result = i*j;
                System.out.println( i + " * " + j + " = " + result);
            }
        }

👉첫번째 example 코드흐름

  1. for(예약어)가 읽혀 ( ) 안에 식들을 참인지 거짓인지 확인함.
  2. int i = 2; i 라는 변수에 2 라는 값을 초기값으로 셋팅함.
  3. i < 10 라는 조건에 부합함으로 (2 < 10) 코드블럭실행 { }
  4. 코드블럭 실행중 한 번 더 for등장 동일하게 조건을 확인하고 진행
  5. 두 번째 for문에서는 System.out.println( i + " * " + j + " = " + result); } 를 마지막으로 코드블럭이 닫힌다. 코드블럭이 닫히기 전까지 모든 코드를 실행시켰고 더 이상 실행시킬 코드가 존재하지 않으니 다시 반복하기 위해 두 번째 for문으로 올라간다.
  6. 두 번째 for문을 반복에 반복을 거쳐 조건이 부합하지 않을 경우 두 번째 for문을 탈출하게 되고 탈출한 뒤엔 원래 진행하던 첫 번째 for문의 흐름을 이어탄다.

-------------------------------------------------------------------------------

✏️1부터 10까지의 합을 구한 뒤 평균 구하기.

// 1부터 10까지의 합을 구한 뒤 평균을 구하는 Example
        int sum = 0; // 전역변수를 선언.
        for(int i=1; i<11; i++){
            sum = sum + i; 
            System.out.println(sum);
        }
        int avg = sum / 10;
        System.out.println(avg);

👉두번째 example 코드흐름

  1. int sum = 0; 이라는 전역변수 선언
  2. for가 읽혀 int i=1 라는 초기값을 가지고 i<11 을 만족할 때까지 증가하는 for문 실행
  3. 전역변수를 끌어와 sum = sum + i 를 통해 기존의 값에 i를 더해가는 계산식을 실행 (for 내 존재하는 지역변수는 for문의 범위를 벗어나는 순간 폐기)
  4. System.out.println(sum); 까지 실행 후 모든 코드를 실행시켰으니 다시 반복문으로 올라감.
  5. 점진적으로 증가하다 조건식에 만족하지 못했을 때 탈출하게 되며 이때 전역변수에 저장된 값을 불러와 10으로 나누면서 avg 라는 변수에 담아 평균 값을 계산한 후 출력.

-------------------------------------------------------------------------------

✏️공백을 포함하여 피라미드모양 별찍기.

// for문의 꽃 별찍기

        for(int i = 1; i<6; i++){
            for(int j = 5; j>i; j--){
                System.out.print(" ");
            }
            for(int n=0; n<i; n++){
                System.out.print("*");
            }
            System.out.println();
        }

👉세번째 example 코드흐름

  1. 첫번째 for문 실행
  2. 두번째 for문 실행 -> System.out.print(" "); j>i (j>1)가 만족할 때 까지 반복 -> 탈출
  3. 세번째 for문 실행 -> 동일하게 조건 만족할 때 까지 출력-> 탈출
  4. 첫번째 for문에 해당하는 System.out.println(); 실행 후 다시 첫 번째 for문 타러 이동
  5. i가 2를 가진 채로 2번과 3번 4번을 실행,i가 3를 가진 채로, i가 4를 가진 채 i가 5를 가진 채로 계속 반복하다 i가 6을 가지는 순간 i<6 인 조건과 부합하지 않아 (flase) 첫 번째 for문 탈출. 첫 번째 for문을 탈출한 순간 두 번째 세 번째는 자연스럽게 타지못하게 됨.

--작성중--

profile
Ader_Error

0개의 댓글