본문 바로가기

Programming/Java

#07. 반복문, 제어문

이번 소개에서는 반복문과 반복문에서 쓰이는 제어문을 소개 해드리겠습니다.

저의 자바프로젝트이름은 Java#07, class이름은 Ex01로 하겠습니다.


반복문들은 for, while, do while등이 있어요. 말그대로 특정한 부분만 반복해서 코드를 여러번 실행하는 기능이에요. 이번 소개에서는 이3개의 반복문들에 대해서 알아보겠습니다.



1.for반복문


for 반복문은 숫자를 정해놓고 숫자가 변하면서 조건에 충족 하지 않을때까지 특정 부분 코드를 여러번 반복하는 반복문이에요. 말로는 이해하기가 어려우니 코드를 보면서 설명드릴께요.




가장 간단하게 만들어봤습니다. int i = 0;는 for반복문을 시작하는 수를 정하는거에요.

0 부터 시작한다는거죠. 이제부터 이 for반복문은 i라는 인티저변수를 사용해 계속 반복하는지 아니면 멈출것인지를 구별할수가있어요. 구별할때 쓰이는 기준이 i < 5; 입니다. 이뜻은 i라는 변수가 5보다 작을때까지 반복한다 라는 뜻이에요. 그럼 i변수가 가지고 있는 데이터를 코드가 한번 다돌때 마다 변하게 해주는 역활도 필요하겠죠. 그 역활을 하는게 i++입니다. i++는 저번에 소개 시켜드렸듯이 i변수에 들어있는 수에 +1을 하고 다시 i에 저장한다는 뜻이죠.


그렇다면 i는 처음에 0, 한번다돌고 1이 되겠쬬 이런식으로 계속 반복 합니다. 반복하다가

i 가 5가 되는순간 조건에 맞지 않기때문에 더이상 반복하지 않는거죠.


그럼 출력은 어떤식으로 될지 생각해보고 출력란을 봐보세요.




이런식으로 출력이되네요. 그렇다면 총 몇번 반본된걸까요? 5번이네요. 이런식으로

일정 부분의 코드를 반복 할수 있게도와주는것이 반복문이에요.



2.while반복문


while 반복문은 for반복문 보다 간편하게 작성할수있어요. while(true 또는 false) { 코드 } 이런식 으로 작성 합니다. 괄호 안에 boolean값이 true일경우 계속 반복합니다. 반복 하다 일정 코드로 인해 boolean값이 false로 바뀐다면 그때서야 반복을 멈추죠.




이런식으로 작성 해봤습니다. loop이라는 boolean변수가 while괄호안에서 true일동안 계속 해서 중괄호안에 있는 코드들을 반복시켜줍니다. 그럼 잘생각 해보시고 출력은 어떤식으로 될지 생각해보세요~




이런식으로 for반복문 예제와 같은 결과가 나왔네요.

이해를 잘 못하신분들을 위해 어떤식으로 이렇게 나왔는지 설명해드릴께요.


먼저 i = 0이라 정의 되어있습니다. 그럼 i는 현재 0을 보유하고있죠. loop이라는 boolean변수 역시 지금은 true라는 값을 저장하고있네요.


그럼 while(loop)을 봅시다. 지금 현재 while(loop)은 while(true)와 같은 형식이죠. 그렇기때문에 중괄호안에 있는 코드를 실행합니다. 


i는 현재 0, if조건문에 들어있는 조건과 맞지 않죠. 그렇기때문에 else조건문에 있는 코드가 실행 됩니다 (i는 현재 0이기에 0을출력하죠)


출력한후 i변수에 1을 더해주네요. 그럼 이제부턴 i는 2를 저장하고있습니다. 이런식으로 계속 코드가 반복 되서면 i가 5일때 if조건문에 있는 조건과 같죠. 그럼 이때서야 if조건문 안에 있는 loop = false;라는 코드가 실행 되면서 loop이라는 boolean변수는 true 대신 false를 저장 합니다. 그리고 else는 if조건문이 만족했기때문에 넘어가구요. 


그다음 ++i를 하여 i는 6이 됬네요. 하지만 다시 while(loop)으로 돌아왔을땐 loop변수가 false를 저장하고있기때문에 더이상 코드를 반복하지 않고 끝나는거죠.


이제 이해하셨나요? 아직 이해가 잘안되신분은 다시 천천히 읽어가며 이해하시길 바래요^^



3. do while반복문


do while반복문은 while반복문과 아주 흡사해요. 단지 조건을 검사하는 순서가 뒤바꼈을뿐이에요. 쉽게 설명 드리면 while반복문에선 while(true 또는 false)를 먼저 검사하고 중괄호 안에있는 코드를 반복할것인지 안할것인지 정하지만, do while은 먼저 코드를 반복하고 난뒤에 true 또는 false를 구분하여 코드를 다시 반복할것인지 정하지요.

쉽게 이해하기 위해 코드로 보여드릴께요.



이런식으로 쓸수있습니다. 이렇게 보니 순서가 바뀐것이 한눈에 들어오죠?

이렇게 먼저 반복할 코드부터 반복하고 난후 while(loop);을 통해 다시 반복할것인지 아닌지를 정합니다.


이거 또한 while과 같이 출력이되네요. 지금은 별다른 차이점을 못느끼시겠지만 코딩을 하시다보면 분명 while과 do while을 구분해서 써야할날이 반드시 올거에요~



4. 제어문


제어문은 반복문이나 조건문 같은곳에서 코드가 실행되는 흐름을 제어해주는 기능입니다.


대표적으로 break와 continue가 존재합니다. break는 현재 반복되는 구간에서 바로 벗어나게 하는 기능을 가지고있고, continue는 다시 처음으로 돌아가 반복시키는 기능을 가지고있지요.


일단 break부터 살펴볼께요.



이런식으로 코드를써봤습니다. while안에 true라는 값이 들어있네요. 만약 이대로 실행된다면 과연 while은 반복을 멈출수있을까요? 코드 어디부분에서도 true를 false로 바꿔주는 코드가 없을뿐더러 변수로 true값을 지정해준것이 아니라 직접적으로 true라고 썼기때문에 while안에 true는 바꿀수있는 방법이없지요.


일단 실행 시켜서 출력란을 보도록할께요.



이런식으로 출력되고 while반복문도 더이상 코드들을 반복하지 않네요.

그 원인이 바로 break입니다. break는 while반복문을 부셔버린다고 생각하시면되요.


if조건문에선 num이라는 변수가 3과 같으면 break;라는 제어문을 실행합니다.

그뜻은 num변수가 3을 가지고있을때 while반복문을 부셔 버린다는소리죠.


출력란을 보면 알수있듯이 num변수가 2일때까지만 while반복문이 실행됬네요.


다들 이해 하셨기를 바랍니다...최대한 쉽게 설명드리고있는데 다들 잘 이해하시는지 모르겠어요 ㅠㅠ



또다른 제어문 continue를 살펴보겠습니다.



이런식으로 코드를 써봤습니다. 위에 첫번째 if조건문을 잘봐보세요. num이라는 변수가 1을 저장하고있을때 num변수에 저장된 데이터에 +1을하고 continue라는 제어문을 실행하네요.


continue라는 제어문이 실행이되면 빨간색으로 표시된 저부분으로 바로 점프하게됩니다.

(continue 와 빨간네모 표시 부분까지의 중간 코드들은 실행되지 않아요)


그리고 다시 while(true)로 돌아가서 true이면 코드를 다시 반복하고 false이면 멈추게되는거지요. 위에 예제에서는 true로 되어있기때문에 계속해서 코드가 반복되겠네요.


계속 반복되다가 num변수가 3을 가지고있을때 두번째 if조건문과 일치하겠죠. 그때 break제어문이 실행되면서  while반복문은 부셔져버리는거에요.


그렇다면 출력은 어떤식으로 나올까요? 한번 잘 생각해보시고 맞춰보세요.


이런식으로 출력되네요. 맞추셨나요? 이해를 완벽히 하신분이라면 당연히 마추셨을겁니다.

1이 출력되지 않았네요. num변수가 1일땐 첫번째 if조건문의 조건과 일치하기때문에 num변수에 +1을 하고 continue실행문이 실행되기때문에 1이 출력되지 않은거죠.


다들 이해하기 힘든 부분들이 있으실거에요 그런 부분들은 다시한번 천천히 읽고 예제로 드린 코드를 잘 살펴보며 이해 하시길 바랄께요!


여기까지 이번 소개를 끝낼께요. 읽어주셔서 감사합니다 ^^

'Programming > Java' 카테고리의 다른 글

#08. 메소드(Method)  (0) 2012.09.07
#06. if, else 조건문  (0) 2012.09.06
#05. 명시적,자동적 데이터 변환  (0) 2012.09.06
#04. 연산자  (0) 2012.09.06
#03. 입출력(I/O)기능2  (0) 2012.09.06