for문의 벽 넘기

원녕·2024년 2월 23일
0
for(int i = 0; i < 5; i++){
	sum+= i;
}

이 식을 보고 통곡의 벽을 느낀 초보자들이 있을것이다. 나또한 그랬고 난 더심했다..

  1. int i = 0; -> 아, i에 0을 대입하는구나
  2. i < 5; -> 아 5번이 되기전 for문을 빠져나가겠구나
  3. i++ -> 어? i++이 뭐지? 아~ i = i+1 과 같은 개념이구나

라고 생각한 후 문제를 풀기 시작했을때 어딘가 이상한 점을 발견했다.

1~2~3번의 서순이 당연할거라고 생각했던 찰나 어???? i++을 지나쳤는데 왜 1부터 더하지않고
0부터 더하는거지????

주제에서 벗어나서 애초에 조건이 잘못되었기도 한 식이다. 0부터 시작할 것이 아닌 1부터 시작했어야한다.

초보자들은 처음에 배우기로 i는 0부터 실행하는걸 우선적으로 배워서 0부터 넣어보곤한다.

어쨋든, 이제부터 1부터 더하지않고 0부터 더하는 이유를 알려주려고한다.

1번 = 대입식 (i에 대입한다고 해서 내맘대로 대입식이라고 부르기로함)
2번 = 조건식 (누가봐도 i에 조건을 걸고 5가 되기전에 저리가라고 명령하는듯함)
3번 = 증감식 (++를 이해했다면 알겠지만 그냥 i하나씩 누적해달라는 뜻)

대입식 ~ 조건식 까지의 서순은 맞다. 하지만,
증감식은 루프의 몸체(중괄호에 싸여진 부분)이 실행된 후에 이뤄진다.
자.생각해보자 뭣도모르고 i를 1부터 10이되기전까지 더했을때 45라는 값이 나온적이 있을것이다.

1~2~3 서순이라면 분명 2+3+4+5+6+7+8+9+10까지 돌아야 맞을것이다.

하지만, 프로그래밍 하는 사람이 분명 바보는 아닐것이며 당연히 1+2+3+4+5+6+7+8+9가 되어야 45인것을
알것이다. 근데 나는 바보여서 2+3~~~ 을 더하고 왜 45가 안되는거지 하고있었다..

여러분들은 그러지않기를 바라며 증감식은 루프의 몸체가 실행된 후에 이뤄진다라는걸 기억했으면 좋겠다.
이걸 극복해내면 for문으로 코딩하는건 그리 어려운 일이 아닐것이다. 여기서 벽느낀 사람들이 for문이란 정말 어려운 거구나 생각하곤한다. 나또한 그랬으니.. 조금이라도 빠르게 이 글을 보길바란다.

결론 : 증감식은 몸체가 실행된 후에 이뤄진다.

profile
메타인지하는 개발자

0개의 댓글