3.5 반복 (Loop)
Last updated
Last updated
우리는 블록코딩에서 코드의 흐름(flow)을 제어하는 목적(따라서, 엔트리의 블록 분류 상에서 ‘흐름’ 카테고리 안에 존재)의 블록 중 가장 기본이 되는 블록 중에 하나로 "반복"이라는 것을 무수히 사용해 본 경험이 있다. 반복수행해야 하는 코드덩어리를 어떻게 얼마만큼 반복해야 하는지에 따라 엔트리 '흐름' 카테고리 안에 반복과 관련된 블록을 보면 크게 세 가지 종류인데, "무한반복 / 지정한 횟수만큼 반복 / 어떤 조건을 만족하는 동안의 반복" 이다.
먼저, “어떤 조건을 만족하는 동안의 반복” 파이썬 문법으로 표현하면 다음과 같다.
while 이라는 영어접속사의 의미 자체도 "~하는 동안" 뜻이고, 결국 while 문 안에 적힌 '조건'이 만족되는 동안하는 그 while 문 아래 기술된 내용을 계속 반복수행한다는 의미이다. 그 말을 이렇게 가정할 수 있는데 반복을 수행하는 동안 '조건'이 만족하는지 안하는지를 매번 확인한다는 것이고, 그 사이 조건이 변화해서 '조건'을 만족하지 않는 어떤 시점이 올 수 있고, 그 시점에 도달 했을 때는 반복을 그만두고, while문을 빠져나와 while 문 다음으로 이어진 문장의 코드가 순차적으로 수행되게 될 것이라는 의미이다.
우리는 일반적으로 반복을 수행하는 동안 '조건' 이 변화해 어느 시점에는 '조건'이 만족하지 않아 반복을 빠져나와야 할 것으로 기대하는데, 만약 반복을 의도적으로 무한히 하고 싶다면, 어떻게 해야할까? 그것은 '조건' 그 자체를 결코 빠져나올 수 없는 조건으로 의도적으로 생생해 주면 되는데 그렇다 '조건'을 강제로 항상 참(True)이 되도록 강제할당하면 될 것이다. 이를 파이썬 텍스트코딩 문법으로 표현하면 이렇게 된다.
방금 배운 테크닉을 이용해 이전 장에서 만들어 오고 있는 계산기 프로그램을 더욱더 발전시켜 사용자의 사용성을 개선시켜 나가보자. 사용자 입장에서는 계산기의 계산을 딱 한번의 단회성으로 끝내지 않고, 연이어 게속하려면 현재로서는 프로그램(또는 앱)을 재실행시키는 것 외에는 방법이 없다. 이는 사용성에 제약이 큰 것으로 사용자 본인이 원하는 만큼 계산을 계속하고, 더 이상 필요가 없을 때 프로그램을 종료할 수 있게 해주는 것이 필요하다. 이러한 사용자 요구사항에 맞춰 프로그램을 개선하기 위해 우리는 우리의 코드에 반복문을 추가할 필요가 있다.
이제 작성한 코드를 이해해보자. 개선된 계산기 프로그램(또는 앱)에서 무한반복해야 할 코드들은 while True: 다음 라인부터에 위치하여 전체적으로 안쪽으로 들여쓰기해 적은 것을 확인할 수 있다. 사용자가 우리의 계산기앱을 종료하고 싶을 때는 사용자 안내문구에서 요구된 것처럼 'x'라는 값을 입력했을 때이고, 이 부분의 처리는 코드 19-20라인에서 만약 사용자로부터 입력된 값이 'x'일 경우에 Entry 라이브러리 안에 있는 앱 종료함수인 stop_code함수를 호출하되 앱상의 모든 코드를 종료하기 위해 "all"이라는 파라미터값을 넘겨서 호출했음을 알 수 있다.