ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • JAVA 제어문_004★반복문 for ~~
    카테고리 없음 2020. 2. 15. 10:57

    프로그래밍 언어에서 빼놓을 수 없는 중요한 명령의 1개이다.사람이 할 수 있는 것과 할 수 없는 것이 있지만 같은 일을 반복할 수 있는가 하는 차이가 존재한다.만약 같은 문장의 말을 5회 반복 칠로 쓰려고 하면 기쁜 마음으로 쓸 수 있다. 뭐꼬마...하면서가, 같은 문장의 말을 만번 반복해서 쓰라고 하면...? 쓰기 전에... 라고 말해버린 것이었다.그런 귀찮은 1을 컴퓨터는 해낼 수 있다.심지어 사소하고 복잡한 글 솜씨까지 해결할 수 있는 컴퓨터 반복 문장의 세계로 이끌"2. 번 나 문=>조건에 의해서 명령을 반복 실행 1)for문:반복 횟수가 결정되는 경우 형식)for(초기식:조건식;증감식){반복 실행되는 명령....}, 초기식>의 조건식>명령>증감식>의 조건식>명령>증감식>의 조건식>명령>.... for()안은 확실히;두개를 사용한다.   초기식, 증감식, 조건식 생략 가능 조건식이 생략되면 무족으로라도 정말 인식(무한루프) => 초기식, 증감식은 를 이용해 복수선언 가능하다.※eclipse 문장 정렬>> Ctrl + Shift + F


    >


    다음은 for 반복문에 대한 예제이다.11가 따라가봐, 코딩을 하자.


    >


    처음프로그래밍을시작하면이렇게쓰는게정상입니다.5회 반복하는 출력하는 방법을 모르기 때문에, print문을 5번 쓰는 것이 최선이니까요.그렇다면 5번이 아니다 1만번을 출력한다는 것이라면.일일이복/합격하는만만해있어야하나...?이것을편리하게하기위해서for문이등장했습니다.


    >


    for문은 챠후그와 함께 쓰이게 되지만 for(int i=0;i<5;i++){실행하는 명령.} 이러한 형식에 따르게 된다.여기서 for( ) 괄호 안에 있는 명령을 하과인씩 하나하나 살펴보자.int i=0;int i=0은 초기식이었다 초기식은 반복문식에서 가장 먼저 sound에 과인되는 식으로 반복 변수에 관한 정보를 과인하는 방식입니다.향후의 초기식에서는 for문에서 int형 변수 i를 선언하고 0으로 초기화했습니다.standard C에서는 지원하지 않는 방식이지만, 최근의 컴파일러는 for 글 중에서 변수를 직접 선언할 수 있다.다만, 지상 변수(Local Variable)로 선언되기 때문에, 일회성이라는 성질을 가지고 있다.즉, for문이 끝남과 동시에 i와 변수는 사라진다는 sound였다는 for문 밖에서 변수를 선언하고 그 변수를 초기화하는 과정을 유지하기 저 거치지 않고도 사용할 수 있다는 sound였던 예를 들어 보면, 일)int i=0;for(i=0;i<5;i++){}2)int i=0;for(;i<5;i++){} 이렇게도 사용이 가능하다는 sound이었다 초기식 차 풍란에 나에게 오도록 i<5;는 조건식였던 반목문의 종말을 고할 조건을 만드는 방식이었다.이 발복뭉에서는 'i가 5보다 어렸을 때까지 '이라는 의미를 담고 있다.부등호가 있는 i<5라는 문장이 되는 게 아니라 i!=5의 같은 조건도 쓸 수 있는데 이때 의미는 'i가 5이 없는 사이에 '이라는 의미를 담고 있다.마지막으로 i++는 증감식이었다.초기식 자연의 있는 지상의 변수에 대한 증감을 나 받을 수 있게 보통 i++이과인 i-, i+=2위에 응용하고 사용된다."i++"는 "i=i+일에서 일을 하루씩 증가합니다"란 뜻의 사용된다.이와 같이 for( )을 작성하고 과인면 {}에서 블록 처리를 하는데 블록 안에 명령을 입력하면 해당 명령을 반복 수행하는 역할을 합니다.이것이 for 문이었던 for 문의 실행 순서는 초기식부터 시작하여 조건식 > 명령 > 증감식 > 조건식 > 명령 > 증감식 >··차례로 진행되는데, 이것은 하나하나 손으로 디버깅하면서, 순서에 대한 파이프라인을 아는 것이 중요하다.후 소스에 대한 순서는 일)i=0;2)i<5(i가 5보다 작기 때문에)3)print("Java Programming");(실행)4)i++(i가 증가하고 i=일)5)i<5(i가 5보다 작기 때문에)6)print("Java Programming");(실행)7)i++(i가 증가하고 i=2)8)i<5(i가 5보다 작기 때문에)9)print("Java Programming");(실행)인 0)i++(i가 증가하고 i=3)한일)i<5(i가 5보다 작기 때문에)인 2)print("Java Programming");(실행)인 3)i++(i가 증가하고 i=4)인 4)i<5(i가 5보다 작기 때문에)인 5)print("Java Programming")(실행)인 6)i++(i가 증가하고 i=5)인 7)i<5(i가 5와 같으므로 for문 종료)총 한 7번의 커멘드의 실행을 통해서 5회 반복하는 프린트를 할 수 있다.


    >


    위 코드는 초기식에서 i를 5로 초기화하고, 증감식에서 i를 감소시키고 i의 전처나 5 4 3 2 1에서 전 비열한 코드였다 결과는 마찬가지다.


    >


    다소리는 증감식을 i+=2로 i의 값이 0 2 4 6 8로 바뀌면서 증가하는 식있다.별 다름 없이 5번 출력이 된다고 생각하는데 i의 변이가 다른 것을 자세히 살펴보자.


    >


    이후웅 1에서 5까지의 숫자를 출력하는 것을 하자.초기식으로 선언한 i 를 사용해 프린트 하면 간단하게 출력할 수 있다.


    >


    반대 방향도 증감식을 감소로 주고 코딩을 하면 된다.


    >


    2증가식 또 위에서 한 말이라서 그렇게 어렵지 않다.


    >


    변수 i 를 정수형이 아닌 문자형으로서도 활용 가능하다.ABC...XYZ까지 출력할 수 있다.


    >


    간단히 말해서 1에서 100까지 간의 관계를 본인 받는다는 소리입니다.이때 주의할 점은 sum이라는 정수형 변수를 따로 만들어 줬다는 것인데, i라는 값은 계속 변하기 때문에 더하는 값을 저장하려는 용도 변수가 따로 필요하다.이때 사용하라고 sum이라는 변수를 만들어주었다.그러나 sum이라는 변수를 초기화하지 않고 표준 사용하면 문제가 발발한다.sum만 만들어 놓고 0으로 초기화하지 않을 경우 쓰레기 값이 계속 보존되어 결과를 쓰레기가 자신 오게 된다.(Garbage In Garbage Out)sum을 꼭 0으로 초기화하고 주어서(1로 초기화하면 가격 자체가 다르므로, 반드시 0으로 초기화)sum+=i;과 함께 논리를 작성하고 5050이라는 답을 얻어 보자.


    >


    어려워 보이지만 전혀 어렵지 않은 문재다.4의 배수를 판별하는 법은 if조건문에서 배웠다.즉석 본인 머지 연산(%)을 이용하는 방법입니다.그 방법으로 4의 배수가 뭔지 구별을 하고, 4의 배수로 판별된 수에 대한 개수를 단순히 말하는 경우만 하면 이 프로그램은 끝났다.즉, 개수를 세어주는 변수(cnt)를 스스로 만드는 것이 핵심입니다.카운트를 하는 cnt변수를 선언하고 0으로 초기화한다.0으로 초기화하는 이유는 0+1=1이 되기 때문입니다.cnt++부라는 문장을 사용하기 때문이 무로 꼭 0으로 초기화를 시킨다.4의 배수를 골라내if문 if(i%4==0){}를 만들어 명령이 들어가야 하는 블록 안에 살며시 cnt++을 얹어 준다.if(i%4==0){cnt++;}정예기 쉽게 4의 배수의 개수를 세어 주는 프로그램을 작성할 수 있다.


    >


    만약 쵸소움 시작하는 것이 하나 0에서 쿳봉잉눙 수가 하나 7명의 수가 있다며.시작하는 수부터 끝나고 본인은 수중에 들어있는 값을 말해보라고 하면 뭐라고 하지?일일이 하나 2하나 3하나 4, 하나 5하나 6라고 대답했다. 우리는 하나 0과 하나 7사이의 숫자를 알고 있기 때문이었다.그러면 이것을 프로그램으로 작성하려면 어떻게 해야 할까? 반복해서 글을 이용하는 비결이 있다.초기식을 시작하는 수(start)에 두고 조건식을 마친 본인은 수(end)까지로 두면 이해하기 쉬울 것이다.이것을 그대로 소스로 옮겨 보면, for(inti=start;i

    >


    이하는 초기식, 조건식, 증감식 안에 들어가는 변수의 수가 많은 경우에 대한 이야기이다.위의 소스와 함께 i와 j변수를 활용하고 값을 출력하고 싶을 때에 int i=일, j=5처럼 반점(,)을 찍으면 다양한 변수를 for문에서 제어할 수 있게 된다.


    >


    위의 소스를 실행시키지 말고 결과치를 이미 유추해 보자.i라는 변수가 for 문 밖에서 선언되고 초기화까지 갔다.for문안에초기식을굳이넣지않아도이소스를작동시킨다.그렇다면 일일이 그 과정을 밟아보자.일)첫번째 for문:조건식 i<=4;에 해당하므로, 명령이 수행된다.2):일 프린트 3):증감식 i++로 i는 24):조건식 i<=4;에 해당하므로, 명령이 수행된다.5):2프린트 6):증감식 i++로 i는 37):조건식 i<=4;에 해당하므로, 명령이 수행된다.8):3프린트 9):증감식 i++로 i는 4일 0):조건식 i<=4;에 해당하므로, 명령이 수행된다.하루):4프린트인 2):증감식 i++로 i는 5일 3):조건식 i<=4;에 해당하지 않으므로 첫번째 for문 종료==>첫번째 for문까지 출력 가프일 2 3 40)두번째 for문:초기식이 없으니 i=5에서 시작된다.일): 조건식 i >= 일;에 해당되므로 명령이 수행된다.2):5프린트 3):증감식 i-에 의해서 i는 44):조건식 i>=일을 해당하므로, 명령이 수행된다.5):4프린트 6):증감식 i-에 의해서 i는 37):조건식 i>=일을 해당하므로, 명령이 수행된다.8):3프린트 9):증감식 i-에 의해서 i는 2일 0):조건식 i>=일을 해당하므로, 명령이 수행된다.하루):2프린트인 2):증감식 i-에 의해서 i는 일일 3):조건식 i>=일을 해당하므로, 명령이 수행된다.일 4):일 프린트인 5):증감식 i-에 의해서 i는 0일 6):조건식 i>=일을 해당하지 않아 두번째 for문 종료==>첫번째 for문을 포함하는 두번째 for문의 출력 가프일 2 3 45 4 3 2일본 두 for문의 차이를 제대로 알고 넘어가고 도로라고 한다.조건을 어떻게 쓰느냐에 따라 차이가 날 수 있기 때문이죠.


    >


    단지 프로그래머들 사이에서 우스갯소리로 자주 쓰이는 스토리가 있다.무한루프 도는...무한루프는 Infinite Loop에서 반복해서 무한히 이어지는 의의였던 즉, 프로그램은 절대적으로 끝나지 않는다는 것이다. 보통 무한루프는 우리가 그대로 사용하는 애플리케이션에서 사용하는데 이는 프로그램이 끝날 때까지 프로그램이 멈추는 스토리아여야 하기 때문이었다.하지만, 우리가 지금 코딩하고 있는 이상태에서는 무한루프는 발생스토리여야 한다.왜냐하면 우리가 만드는 프로그램은 반드시 끝을 가져야 하기 때문이었다. 이런 무한루프를 강제로 만드는 과정은 여러 가지가 있지만 그 중 단순히 for(;;){}라는 구문이 있다.for문의 초기식, 조건식, 증감식이 전혀 없을 경우 무제한으로 for문이 반복된다.위의 예제에서는 무한루프를 방지하기 위한 break;문을 사용하였으나, 아직 break;에 대해 잘 모르기 때문에 break;를 제외하고 실행해 보자.반복적으로 실행되는 명령이라는 문자가 console 창에서 무한히 생산되는 것이 보인다.역시한 무한 루프는 자기도 모르게 조건을 반드시 사실로 만들어 버렸을 때 발생하게 되는데 가장 간단한 예로서 for(int i=5;i>0;i++){}코드를 보면 i가 5에서 시작하는데 조건식이 i>0;이었다 즉 0보다 크게 때...게다가 증감식은 i++이었다 즉, i가 5 6 7 8 9하나 0하나 하나하나 2개 3개 4개 5하나 6하나 7하나 8하나 9 20 2개 22 23.... 끝나지 않는다.즉, 무한 루프가 돈다.초기식, 증감식, 조건식을 잘 확인하고 무한루프를 없애도록 노력하자.



    >


    소스에 대한 결과치였다.


    댓글

Designed by Tistory.