brunch

매거진 코딩 학습

You can make anything
by writing

C.S.Lewis

by 스스로 코딩 두셀코 Dec 27. 2020

[코딩의 기초] 반복문

돌고 돌고~

안녕하세요, 스스로 코딩 두셀코입니다.

지난 글에서는 조건문에 대해서 배워봤습니다. 조건문은 '만약 ~ 하면, ~ 한다'의 목적으로 쓰입니다. 그리고 조건부와 실행부 두 부분으로 나뉘는데요, 여기서 여러 개의 조건부를 가진 조건문을 '조건문 사슬(체인)' 또는 '조건문 기차'라고 불렀습니다.


이번 시간부터는 '반복문'에 대해서 알아볼 텐데요, 반복문은 말 그대로 어떤 작업을 반복하기 위해서 사용합니다. 그럼 반복문의 개념과 구성요소를 배워보도록 하겠습니다. 




반복문의 개념


예를 들어, 새로운 음식점을 오픈했다고 해볼까요? 그리고 맛있는 파스타를 만들기 위한 레시피가 있다고 해봅시다. 레시피는 다음과 같습니다.

1. 물 500ml에 파스타를 7분간 삶는다.
2. 파스타가 다 삶아지면 물을 버린다.
3. 프라이팬에 면과 토마토소스를 넣는다.
4. 2분 동안 볶는다.
5. 파스타를 접시에 놓고 손님에게 서빙한다.
파스타 한 그릇을 완성했습니다!


이 레시피대로 파스타를 완성해서 손님에게 서빙까지 완료했습니다. 이렇게 힘들게(?) 한 명의 손님에게 서빙을 하고 이제 좀 쉬어볼라 하는데... 손님 10명이 몰려옵니다! 휴! 그러면 다시 심기일전하고 레시피대로 파스타 10그릇을 만들어 볼까요? 다시 레시피를 보고 만들어 봅시다.


파스타 1그릇째

1. 물 500ml에 파스타를 7분간 삶는다.
...
5. 접시에 놓고 손님에게 서빙한다.
파스타 2 그릇 째

1. 물 500ml에 파스타를 7분간 삶는다.
...
5. 접시에 놓고 손님에게 서빙한다.
파스타 3 그릇 째
...
...

파스타 10 그릇 째
...


이렇게 10 그릇을 만들었습니다!


파스타 10그릇을 만들었습니다!


10그릇 정도는 조금만 고생하면 됐기 때문에 할 만했다고 생각할 수 있습니다! 하지만 10그릇 만들 때처럼 매번 레시피를 보고 만들고 하면, 앞으로 100명, 1000명의 손님이 왔을 때 효율적으로 만들 수 있을까요? 


여러분이 반복문을 알면 이런 비효율적인 부분을 효율적으로 만들 수 있습니다! 반복문은 '반복적인 동일한 작업'을 표현할 때 사용하는 것이거든요!




반복문의 구성요소


반복문을 표현할 때 필요한 구성요소들에 대해서 알아보겠습니다. 


1. 반복문 조건부
2. 반복문 실행부


조건문과 마찬가지로, 반복문도 조건부와 실행부가 있습니다. 조건부에서는 '언제부터 언제까지'라는 조건이 들어가게 됩니다. 실행부는 반복해서 수행할 일이 들어가게 됩니다. 위 파스타 예시에서 보면,


반복문의 조건부는

파스타 1그릇부터 파스타 10그릇을 만들 때까지


실행부는

1. 물 500ml에 파스타를 7분간 삶는다.
2. 파스타가 다 삶아지면 물을 버린다.
3. 프라이팬에 면과 토마토소스를 넣는다.
4. 2분 동안 볶는다.
5. 파스타를 접시에 놓고 손님에게 서빙한다.

와 같이 표현할 수 있습니다. 처음에 반복문 없이 똑같은 레시피를 보고 만드는 것보다 (똑같은 레시피를 10번 쓰는 것보다) 훨씬 길이도 짧고 효율적으로 표현된 것을 볼 수 있겠죠? 그러면 조금 더 자세히 들어가서 반복문의 조건부는 어떻게 구성이 되어있는지 알아봅시다.




반복문 조건부의 구성요소


반복문의 조건부도 사실 하나씩 뜯어보면 3개의 구성요소로 이뤄져 있습니다.


1. 반복문 변수의 시작 지점
2. 반복문의 실행 조건
3. 반복문 변수의 증가 / 감소


'반복문의 변수'라는 개념이 새로 나왔는데, 이것은 무엇일까요? 위의 예시에서 반복문의 조건부는 '파스타를 1그릇에서 10그릇까지 만들 때까지'였습니다. 이것을 파스타 그릇 수의 관점에서 말해보면, '파스타 그릇이 1 그릇부터 10그릇이 될 때까지 파스타 그릇 수는 1씩 증가한다'라고 볼 수 있지 않을까요? 여기서 파스타 그릇이 반복문 변수가 되는 것입니다.


이렇게 변화시킨 표현 방법에 반복문 조건부의 구성요소 3가지가 모두 들어있습니다. 파스타 그릇 수가 1그릇부터 시작하는 것은 반복문의 시작 지점이 되는 것이고, 파스타 그릇 수가 10이 때까지 즉, 10그릇을 모두 만들 때까지 반복문은 실행됩니다. 그리고 파스타 그릇 수 (반복문 변수)는 매번 1씩 증가해서 반복문의 종료 지점을 향해서 가는 것을 알 수 있습니다. 


반복문 변수는 10그릇을 만들 때까지 1 씩 증가해야 합니다


만약에 이 3가지 구성요소 중에 하나라도 없으면 어떻게 될까요?

반복문의 시작 지점을 모르면, 파스타를 5그릇째부터 10그릇 만들 때까지인지, 8그릇 째부터 10그릇 만들 때까지인지 알 수 없습니다. 당연히 1그릇부터 만드는 것 아닌가요라고 생각할 수 있지만, 앞서 누군가가 1그릇부터 4그릇까지는 만들어 놓을 수 있지 않을까요? 그렇기 때문에 시작 지점은 반복문 조건부에서 반드시 필요한 구성요소인 것입니다.


반복문의 실행 조건은 어떨까요? 파스타를 1그릇부터, 2그릇, 3그릇 만드는데 언제까지 만들어야 하는지 모른다면 반복문의 실행부는 끝도 없이 실행되어서 언제 끝나는지도 모르는 채 무한대로 파스타를 만들어야 될지도 모릅니다 :(


반복문 변수가 증가 / 감소하는 것 또한 반드시 필요한 구성요소입니다. 파스타를 1그릇, 2그릇 만들며 10그릇 째를 향하여 가는 것처럼 변수도 1 씩 증가시키면서 반복문의 끝나는 지점을 향해 달려가야 합니다. 마치 도착 지점까지 달리기를 하는데 한 걸음 한 걸음 씩 다가가는 것처럼 말이죠. 그러면 변수의 감소도 가능할까요? 당연히 가능합니다. 대신 변수가 파스타 그릇 수가 아니라 감소해야 하는 변수일 수 있겠죠. 예를 들어, 기다리는 손님의 수와 같은 것이 되어야 합니다. 기다리는 손님의 수가 10명이라고 했을 때, 반복문 변수의 시작 지점을 10명으로 두고, 반복문 변수의 끝나는 지점을 0명으로 두면, 10에서 0으로 달려가기 위해서 반복문 변수는 1씩 감소를 해야 합니다. 반복문 변수의 시작 지점과 끝나는 지점을 무엇으로 두느냐에 따라서 증가할지 감소할지 결정할 수 있습니다.


추가로, 증가 / 감소는 1 씩을 수도 있고, 2 씩 일 수도 있고 100일 수도 있고 등등 반복문 조건부 나름입니다. 파스타 예시에서는 1그릇씩 늘어나야 하므로 1 씩 증가했지만, 예를 들어 홀수 번째 그릇은 파스타를 짝수 번째 그릇은 피자를 만들어야 한다면, 2 씩 증가를 해야겠죠? 그렇게 파스타 반복문을 수행하게 되면 최종적으로는 5그릇의 파스타만 만들어지게 됩니다.


홀수번째 그릇만 파스타를 만들기 위해서는 파스타 그릇 수는 2 씩 증가해야 한다




이번 시간에는 반복문에 대해서 배워봤습니다. 요약하면 반복문은 반복문 조건부와 반복문 실행부로 구성되어 있습니다. 그리고 반복문 조건문은 다시 3가지로 구성되어 있는데요, 반복문 변수의 시작 지점, 반복문의 실행 조건 그리고 끝나는 지점을 향해 얼마큼 증가/감소할 것인지 정해줘야 합니다. 여기서 반복문 변수라 함은 반복문을 수행하기 위한 변수입니다. 반복문은 코딩으로 표현할 때 이 3가지 중 하나를 잘못 설정해서 오류가 나는 경우가 있습니다. 이 부분만 유의하시면 반복문을 활용해서 코딩에서 수행하는 반복적인 작업을 효율적으로 만드실 수 있습니다! 그러면 다음 실습에서 코딩에서 반복문이 어떻게 표현되는지 알아보겠습니다. :) 

매거진의 이전글 [코딩의 기초][실습] 조건문 (1)
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari