Purpose-post built

for 과 while 이 무슨 차이가 있을까 곰곰히 생각하다가, 경험을 통해 몇가지를 정리 할 수 있어, 이렇게 글로 남기게 되었다. - 익필

Content

문법 공부를 하면 알겠지만, loop를 만들기 위해선 대표적으로 for 과 while을 사용 한다. do while 도 있지만, 이건 논외이다.(역활이 확실히 구분 되므로)  코드를 리뷰하는 내 입장에서 오늘 이런 경험을 하게 되었다.

1. while 이니까, "어떻게 루프를 빠저 나가지?"

while 구성은 조건 판별 구역과 루프 구역으로 나뉘어져 있다.

while (조건문)
{
루프 구역
}

판별 구역 외에서 어디부터 어디까지 루프를 돌리라고 명시적으로 나타내지 못하기 때문에, while은 loop 밖에서 loop 상태를 결정 짖고, loop 내에서 loop 상태를 변화시킬 수 밖에 없다. 그래서 while loop는 범위라는 개념으로 사용하기 힘들다.

이러한 while 기능 때문에,
while 문은 "loop 상태"로 loop가 결정 될 때, 사용 해야만 한다.

2. for 이니까 "얼만큼 돌리지?"

for 문은 while 과 다르게, 초기화 구역, 조건 구역, 루프 구역, 스탭 구역, 이렇게 4개 구역으로 나뉘어 있다. 구역별 역활에 대해서는 이미 안다고 전제하기 때문에 설명하지 않는다.

for (초기화;조건문;스텝)
{
루프 구역
}

이러한 for 문은, 초기화 구역에 무엇을 초기화 할 수 있으며, 조건문에선 무엇을 조건에 쓸 수 있고, 스텝에선 조건에 영향을 미치게 하여, 루프 구역을 돌릴 수 있다. 코드 리뷰시 for 문을 보게 되면, 우선 "초기화, 조건, 스텝"을 본능적으로 보는 것과 같은 이치이다.

이러한 for 기능 때문에,
for 문은 "범위"만큼 loop를 돌릴 때 사용해야만 한다.

3. do while이 논외인 이유와 무한 루프 만들때 서로 구분하지 않는 것 역시 논외인 이유

do while은 무조건 한번을 우선 실행시키고, 조건이 맞을 때, 반복한다는 개념이므로, 일반적인 loop와 다르다. 그래서 논외이다. 무한루프는 바로 무한으로 흐르기 위한 로직이므로, 일반적인 루프(특정 조건에서만 루프되는 루프)와 개념이 다르다. 그래서 논외다.

4. for과 while이 구분된 실제 코드


digression


posted by 농사를 짓는 게임 프로그래머 최익필

댓글을 달아 주세요