[유튜브 강의] (8) JAVA 기초 강좌 - 제어문 (2) 반복문 for / for-each / while / do while

2018. 7. 4. 14:12[유튜브 강의]- 센치한 개발자/[JAVA] 자바 기초 강의 - 완료

728x90
[센치한 개발자 - 유튜브 강의] (8) JAVA 기초 강좌 - 제어문 (2) 반복문 for / for-each / while / do while :: 기초 강의







이번 자바 강의 주제는 지난 시간의 제어문의 2번째 시간인 "반복문" 입니다.


지난 시간에는 if else / if elseif else / switch case 를 통한 제어 방법을 알아보았습니다.


제어를 해야 하는 이유는 강의 영상에서도 언급했지만, 


세상의 모든 것은 선택으로 이루어져있고, 그 선택을 하기위해서는 어떠한 이유, 조건, 기준이 필요하다고 말씀드렸었죠~


프로그래밍도 답정너(답은 정해져 있으니 너는 대답만 하면돼)가 아니라 어떠한 이유, 조건, 기준에 따라 선택되어지고 


그것에 따라 제어가 된다고 설명드렸습니다.







이번에는 반복문을 통한 제어방법을 흰머리, 새치머리뽑기 빗대어 이야기해볼까 합니다. 



- 아버지 : 흰머리를 좀 뽑아보아라. 검은 머리는 뽑지 말거라. 


- 아들 : 아버님, 80%가 케라틴으로 구성되어 있으며, 두피위에 가늘고 기다란 카락을 말씀하시는 것인지요. 그렇다면 그 머리카락 중에서도 검은 색이 아닌 "흰색을 띈 머리카락"이 "0개"가 될때까지 머리카락 갯수만큼 계속 확인하면서 "반복하여" 쭉쭉 뽑아재끼면 되는것인지요?


- 아버지 : What?? 갑자기 너무 말이 많구나. 잔말말고 당장 뽑거라.


- 아들 : 개당 1000원 이옵니다.


- 아버지 : What??


- 아들 : 최저시급을 고려한 제 나름의 판단이옵니다.  





위의 대화에서 아들이 뽑아야할 아버지의 흰머리카락 갯수는? 


은 아니고..ㅋ



위의 대화에서 알 수 있는 것은 무엇인가요?


"반복"해서 "흰머리카락"을 뽑아야 하는데, "0개"가 될때까지라고 하였죠.


저런 상황일때 반복 


만약에 반복하지 않고 지난시간에 배운 if else 만 하게 되면 어떻게 될까요?



이어지는 대화를 보실까요.

- 아버지 : 최저시급?? 그래, 용돈은 두둑히 챙겨줄터이니 당장 시작하거라.


- 아들 : 예.


..... (뽑는 중)


- 아버지 : 아니, 벌써 끝났느냐? 거울을 보니 아직도 흰머리카락이 이리도 많거늘! 왜 1개만 뽑는 것이냐!


- 아들 : 저는 반복문인 for, while을 아직 학습하지 아니하여 반복을 할줄 모르옵니다. if 조건문을 사용하다보니 한 번 밖에 진행하지 못하였습니다.


- 아버지 : What the?? 


- 아들 : switch 문으로 뽑아도 되겠습니까?


- 아버지 : if 랑 switch는 같은 것이지 않느냐!


- 아들 : 눈치가 빠르시군요.


- 아버지 : 냉큼 "흰색을 띈 머리카락"갯수가 "0개"가 될때까지 숫자를 세어가며, 계속 확인하면서, "반복하여" 쭉쭉 뽑아재끼거라. 


다음과 같이 해보거라. 그래야 돈을 챙겨줄 수 있느니라.



for(아버지의 머리카락 갯수만큼 하나씩 세어가며 아래 내용을 반복하거라) {


if(흰색을 띈 머리카락인가) {

//뽑자. 흰머리카락갯수 = +1개

}

else if(반은 흰색 반은 검은색인가) {

//용돈을 위해 일단 뽑자. 가 아니라 뽑아서는 안되느니라

}

else {

//가만히 놔두거라

}


}

용돈 = 총 흰머리카락 갯수 x 1000원



 위의 대화처럼 반복문은 여러번 조건을 검사하여 반복하면서 전부 뽕(?)을 뽑을때 사용하는 용도이기 때문에, if / switch 로는 같은 조건(흰머리가 있는가?)을 여러


번 반복하기가 어렵습니다. 


 물론 단순히 if 제어문을 쓸 수 없어서 for문을 사용하는 것은 아니지만, 반복 작업을 하면서 행동을 해야할 것은 for문과 같은 반복문을 통해서 해야합니다.


 결국 제어문인 for / for-each / while / do while 을 사용해야 하는 것이죠.


if(흰색을 띈 머리카락인가) {

//뽑자. 흰머리카락갯수 = +1개

}

else if(반은 흰색 반은 검은색인가) {

//용돈을 위해 일단 뽑자. 가 아니라 뽑아서는 안되느니라

}

else {

//가만히 놔두거라

}


 이라는 문장이 프로그램에 있다면 딱 1번 밖에 검사를 못하지만, for문 안에 존재한다면 조건 "흰머리카락이 0개가 될때까지" 라는 조건에 따라 계속 실행할 수 있겠죠?


이걸 조금 반대로 생각해보면 대화가 이렇게 될 수 있습니다.


- 아버지 : 어느새 또 흰머리가 많이 생겼구나. 이번에도 흰머리를 좀 뽑아보아라. 검은 머리는 뽑지 말거라. 단! 나도 나의 와이프이자 너의 어머니에게 용돈을 타서 쓰는 입장이니, 이번에는 네가 뽑는 갯수를 5개로 제한하려 한다. 고로, 너는 최대로 챙겨갈 수 있는 용돈은 개당 1000원 곱하여 5천원 이니라.


- 아들 : 아버님, 80%가 케라틴으로 구성되어 있으며..


- 아버지 : 뽑거라.


- 아들 : 예..


- 아버지 : 이번에는 이렇게 해보면 될것이니라. 지금 내 머리에 80%이상이 케리틴으로 구성되어 있는 ...


- 아들 : ..


- 아버지 : 흠..이번에는 아래와 같은 방식이 될 것이니라.


for(뽑은 흰머리카락 갯수가 5개가 될때까지 반복하여라) {


if(흰색을 띈 머리카락인가) {

//뽑자. 흰머리카락갯수 = +1개

}

else if(반은 흰색 반은 검은색인가) {

//용돈을 위해 일단 뽑자. 가 아니라 뽑아서는 안되느니라

}

else {

//가만히 놔두거라

}

}


- 아들 : 지난번은 남은 것이 0개가 될때까지 반복하였는데, 이번에는 뽑은 것이 5개가 될때까지라는 조건이옵니까?


- 아버지 : 그렇지. 아니면 아래처럼 해도 되느니라. 


for(아버지의 머리카락 갯수만큼 하나씩 세어가며 아래 내용을 반복하거라) {


if(뽑은 흰머리카락 갯수가 5개이상인가?) {

//악! 그만 뽑거라. 여기있다 5천원. 그 이상 뽑으면 내 용돈이 없어지느니라.

}


if(흰색을 띈 머리카락인가) {

//뽑자. 흰머리카락갯수 = +1개

}

else if(반은 흰색 반은 검은색인가) {

//용돈을 위해 일단 뽑자. 가 아니라 뽑아서는 안되느니라

}

else {

//가만히 놔두거라

}


- 아들 : 지난번처럼 "아버지의 머리카락 갯수만큼 반복"을 하되, 뽑은 갯수는 직접 확인하시면서 5개가 되면 "반복을 직접 멈추시겠다"는 뜻이옵니까?


- 아버지 : 그렇다. 시작하거라.




이해가 되시려나요? 


위의 흰머리카락 뽑기에 관련된 내용을 for / for-each / while / do while 을 활용하여 실제 코드에서 만드는 과정을 강의 영상을 통해 확인하시죠~


참고로, 반복문에서 가장 중요한 것은 조건도 조건이지만, 반복을 언제 종료할 것인가에 대한 조건이 명확해야 합니다!


728x90