티스토리 뷰

Programming/JAVA

JAVA Web#5 Day 5 반복문

copotter 2019. 2. 25. 20:28

Day 5. 반복문


02.22 반복문에 대해서 배웠습니다.

( 주말 개인적인 사정으로 너무 늦게 포스팅하게 되었습니다..)


이번 강의엔 소스위주로 설명하셔서 소스에 주석으로 부가설명을 달아서 해뒀습니다.


<반복문>


for문, while문, do-while문 (while문, do-while문은 나중에 제대로 다루신다 하셨습니다.)

(for문은 반복 횟수를 알고 있을때 주로 사용하고,

while문은 조건에 따른 반복을 할때 주로 사용하신다 하셨습니다.)


                  false |----> exit

형식:                                                          |

for (초기식; 조건식; 증감식) { // 초기식 --> 조건식 --> 수행문 --> 증감식

수행문; | ^ true       |

} |ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ|


1
2
3
4
5
6
7
8
public class ForDemo1 {
    public static void main(String[] args) {
        
        for (int i=1; i<=5; i++) {            // for문의 i=1;은 붙여서 쓰기.
            System.out.println(i + "번째 실행");
        }
    }
}
cs

위 소스를 실행하면,

1번째 실행              <<<<<<   왼쪽에 보이는 바와 같이 출력이 됩니다.

2번째 실행                             4행에서 초기식 i=1부터 시작해서 i++인 1씩 증가하여,

3번째 실행                             i<=5,  i가 5가될때까지 for문안에있는 수행문을 수행시키는 것입니다.

4번째 실행                             5행의 처음 수행될때는 i가 1, 두번째에는 i가2 이되서 왼쪽과 같이

5번째 실행                             결과값이 나오는 것이죠.


1
2
3
4
5
6
7
8
9
10
11
12
13
public class ForDemo2 {
    public static void main(String[] args) {
        
        int total = 0;
 
        for ( int i=1; i<=10; i+=2) {
            System.out.println(i);
            total = total + i;
        }
 
        System.out.println("합계 : " + total);
    }
}

cs

6행의 증감식을 2씩하여 1,3,5,7 이렇게 반복되게 할 수도 있고,
반복문에 8행과 같이 작성하여 합계가 쌓이게 할 수도 있습니다.

1
2
3
4
5
6
7
8
9
10
11
public class ForDemo5 {
    public static void main(String[] args) {
        
        for (int i=1; i<=10; i++) {
            System.out.println(i);
            if (i == 6) {
                break;
            }
        }
    }
}

cs

 7행의 break문은 반복문이나 조건문에서 나올 수 있게 수행하는 문장이다.

같은 원리로,

1
2
3
4
5
6
7
8
9
10
11
public class ForDemo6 {
    public static void main(String[] args) {
        
        for (int i=1; i<=10; i++) {
            if (i == 6) {
                continue;        // 수행할 문장이 남아있어도 새 반복을 하러 넘어간다.
            }
            System.out.println(i);
        }
    }
}
cs
 continue문은 반복을 해야해도 새 반복을 하러 넘어가게 해준다.


for문을 잘 이해하셨다면, 구구단 출력 프로그램을 만들 수 있습니다.


--이중for문

1
2
3
4
5
6
7
8
9
10
11
12
13
public class ForDemo9 {
    public static void main(String[] args) {
        
        for (int x=1; x<=2; x++) {
            //System.out.println("바깥쪽 for문의 수행문");
            System.out.println("["+x+"]");
            for (int y=1; y<=3; y++) {
                //System.out.println("안쪽 for문의 수행문");
                System.out.println("{"+x+"}{"+y+"}");
            }
        }
    }
}

cs

이중for문은 for문 안에 for문을 넣는 것 입니다.

실행 결과를 보면,

---------- 실행 ----------

[1]                        //    이렇게 x가 1일때 y를 전부 반복하고

{1}{1}                     //    x가 2일때 y를 전부 반복합니다.

{1}{2}

{1}{3}

[2]

{2}{1}

{2}{2}

{2}{3}


이중for문을 완벽히 이해하신다면, 구구단 출력프로그램을 만드실 수 있게 됩니다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class ForDemo11 {
    public static void main(String[] args) {
        
        // 구구단 세로로 출력
 
        for (int a=1; a<=9; a++) {
            for (int dan=2; dan<=9; dan++) {
            System.out.print(dan + " * " + a + " = " + (dan*a) + "\t\t\t\t\t");
 
                if (dan*< 10) {
                    System.out.print(" ");
                }
            }
            System.out.println();
        }
    }
}
cs

위 소스는 제가 만든 구구단 출력 프로그램입니다. 참조하시고 직접 만들어 보세요.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
public class ForDemo13 {
    public static void main(String[] args) {
        
        int x = 0;
        int y = 0;
 
        for (x=1; x<=6; x++) {
            for (y=1; y<=x; y++) {
            System.out.print(x);
            }
            System.out.println("");
        }
    }
}
cs

7행에서 x가 1부터 6까지 반복을하고, 

그안에서 8행인  y가 1에서 x까지 반복을 하는데 

그 수행문이 9행입니다. x출력이죠. 이 말은

x가 1일때 y는 1로 x한번 출력,

x가 2일때는 y가 1로 x=2를 두번 출력하게됩니다.

출력후 11행은 줄을 바꾸게 되죠. 그렇다면 결과값은

---------- 실행 ----------

1

22

333

4444

55555

666666

이렇게 나오게 됩니다.



코딩tip!

tip! 변수의 범위 ( 가능한 한, 좁게 쓰는게 좋다.

   필요한 영역 내에서 위주로 )

: 변수가 생성된 그 블록내에서만 유효하다.


ex) a { // aaaaa는 a에서 사용할 수 없다.

  bbbbb; // bbbbb는 a, b, c에서 사용할 수 있다.

b {

     aaaaa;

           c {}

        }

     }

ex2) for문 예외 case

for (int i=0; i<=5; i++){

   // i는 이 곳에서만 사용 가능.

}


--난수 (소스 첨부)

Math = 수학의 유용한 기능들을 모아놓은 API

Math.random(); : 0보다 크고 1보다 작은 임의의 실수를 만들어내는 것

Math.random()*45; : 0 < ~ < 45

Math.random()*45 + 1; : 1 < ~ < 46

1
2
3
4
5
6
7
8
9
public class ForDemo10 {
    public static void main(String[] args) {
        
        for ( int i=1; i<=6; i++) {
            int number = (int) (Math.random()*45 + 1);        // Math.random(); : 0보다 크고 1보다 작은 임의의 실수를 만들어내는 것
            System.out.println(number);                // Math.random()*45; : 0 < ~ < 45
        }                                            // Math.random()*45 + 1; : 1 < ~ < 46
    }                                                // 
}
cs

5행은 랜덤으로 숫자를 뽑아주는 키워드입니다. 주석과 첨부한 소스파일들을 참고해주세요.


--향상된 for문            // 다음 시간에 자세히 다루도록 하겠습니다.

for (타입 a : 반복될 배열) {

a 배열을 담는 그릇(변수) (소스참조)

}


소스파일을 위주로 설명을 하다보니 포스팅 양이 훅 줄어드는 것 같습니다.

다음 포스팅엔 좀 더 살을 붙여보도록 하겠습니다.

아래 첨부 파일 소스안에 주석들이 설명이 잘 되있으니 참조해주세요.

day5.zip


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함