본문 바로가기
Java

[Java] 제어문2_반복문(for); for문과 예시, 그리고 별찍기**

by 나는 개발자 2020. 12. 28.
TIL: 스스로 이해한 것을 바탕으로 정리하였기에 오류가 있을 수 있습니다. 틀린 부분은 댓글로 알려주시면 감사하겠습니다.

 

반복문(Loop, Iteration)

 

프로그램 흐름을 제어하는 제어문 중 하나

실행코드를 반복적으로 수행시켜준다.

 

크게 for문과 while문으로 나뉜다

 

 

 

 

 

for문

for( 초기식; 조건식; 증감식 ) {
                  반복적으로 실행시키고자 하는 코드 ;
}

- 초기식 : 반복문이 시작될 때 선언되는 초기값
              보통 반복문에서 사용될 변수를 선언 및 초기화 구문 ex) int i = 0;

- 조건식 : 반복문에서 반복적으로 수행될 조건
              조건식이 true일 경우 반복문 실행 => false가 되는 순간 멈추고 빠져나온다
             (보통 초기식에서 제시한 변수를 가지고 조건식을 작성한다) ex) i < 10; (i가 10보다 작을 때까지 수행하겠다.)

- 증감식 : 반복문을 제어하는 변수 값을 증감시키는 구문
             (보통 초기식에 제시한 변수를 가지고 증감식을 작성함) ex) i++
 

for문을 만나는 순간
초기식 --> 조건식에서 조건 검사 --> true일 경우 코드 실행 --> 증감식
          --> 조건식에서 조건 검사 --> true일 경우 코드 실행 --> 증감식
          --> 조건식에서 조건 검사 --> true일 경우 코드 실행 --> 증감식
          -------------- true가 false가 될 때까지 계속 반복 -----------------
          --> 조건식에서 조건 검사 --> false일 경우 코드 종료 --> 반복문을 빠져나온다.

 

 

 

 

 

 

예시 코드로 자세하게 알아보자

 

 

예시 코드 1) "안녕하세요"를 5번 출력하기

 

System.out.println("안녕하세요");

System.out.println("안녕하세요");

System.out.println("안녕하세요");

System.out.println("안녕하세요");

System.out.println("안녕하세요");

-> 100번 반복해야 한다면? 10000번 반복해야 한다면? 

계속해서 복사&붙여넣기를 할 수 없기에 효율적으로 반복문을 사용해주는 것이다.

 

for (int i = 1; i <= 5; i++) {
       System.out.println("안녕하세요");
}

i값이 1"에서부터" ; 5보다 작거나 같을"때까지" ; 매번 1씩 증가"할 동안" 반복을 수행한다.

int i = 1; => 조건 검사 ( 1이니 5보다 작아서 true) => 코드 출력 => 증감(1 + 1) 
            => 조건 검사 (2는 5보다 작으니 true) => 코드 출력 => 증감(2+1) => 조건 검사.. 5번 반복...
            => 조건 검사 (6이 됐을 때 5보다 크니 false) => 반복문 종료

 

 

 

 

 

 

예시 코드 2) 누적해서 더하고자 하는 값을 출력하기 

 

int sum = 0;

for( int i = 1; i<=10; i++) {

     sum += i ;

}

System.out.println( " 1에서부터 10까지의 총합계: "  +  sum ) ;

 

 

 

예시 코드3) 인덱스 별 한 문자를 각각 뽑아서 출력

 

//사용자에게 문자열을 입력받아서 
//각 인덱스 별 한 문자를 매번 뽑아서 출력 
ex.) " apple " -> a p p l e 
String str = " apple ";

a --> str.charAt(0); 출력

p --> str.charAt(1); 출력

p --> str.charAt(2); 출력

l  --> str.charAt(3); 출력

e --> str.charAt(4); 출력

 

// apple 길이: 5  strawberry : 10 kiwi : 4
// 01234 인덱스: 4   0123456789 : 9 0123 : 3
마지막 인덱스수 == 길이-1 

문자열의 길이   == 문자열.length( );

0번 인덱스 부터 마지막 인덱스(문자열.length()-1)까지 매번 1씩 증가할 때마다 반복 수행

 

 

 

 

 

각 문자열 출력

 

 

 

 

 

 

예시 코드 4) 구구단

 

printf 로도 출력이 가능하다

 

 

응용해서 2단부터 9단을 출력해보기

 

 

 

 

 

 

예시 코드 5) 별 찍기

for ( int i = 1 ;  i <= 4 ; i++) {

        for (int j = 1 ;  j <= 5 ;  j++) {

                   System.out.print( " * " ) ;

         }

         System.out.println( ) ;

 }

 

바깥쪽은 행! 안쪽은 열! 이라고 보면 쉽다.

 

*****

*****

*****

*****

 

응용) 

1***

*2**

**3*

***4 

의 출력을 원할때

행과 열이 일치할 때 숫자가 출력

댓글