더북(TheBook)

[프로그램 1.3.3]은 여러 유용한 계산의 틀이 된다. 값을 누적하는 연산과 루프 제어 변수를 증가시키는 방법을 변경하면 다양한 표를 만들 수 있다([연습문제 1.3.10] 참조). 프로그램이 실행되는 과정을 차근히 따라가면서 자세히 공부해둘 필요가 있다. 예를 들어 powersoftwo.py의 연산 과정을 추적해보면 루프를 반복하기 전 각 변수의 값과 루프를 제어하는 조건식의 값을 알 수 있다. 루프 연산 과정을 추적하는 것은 상당히 지루하기는 하지만, 프로그램이 어떤 일을 하는지 명확히 알 수 있게 해준다.

[프로그램 1.3.3] 코드는 루프를 반복할 때마다 변숫값을 출력하므로 스스로 추적하는 프로그램이라 할 수 있다. stdio.writeln() 문을 적절히 추가하면 프로그램이 추적 과정을 출력하게 할 수 있다. 최신 프로그래밍 환경에서는 코드 실행을 추적하는 정교한 도구를 제공하지만, 오랜 시행착오를 거쳐 만들어진 이런 기법도 간단하고 효율적이다. 루프를 이용한 프로그램을 처음 만들고 있는 우리는 루프에 stdio.writeln() 문을 추가해 우리가 원하는 대로 프로그램이 정확히 실행되는지 확인해보는 편이 좋다.

약간 더 복잡한 예로서, 주어진 양수 n보다 작거나 같은 2의 거듭제곱 값들 중 가장 큰 숫자를 알아내는 경우를 생각해보자. n13일 때 원하는 결과는 8, n1000일 때 원하는 결과는 512, n64일 때 원하는 결과는 64이다. 이런 계산도 다음과 같이 while 루프를 이용하면 아주 간단히 처리할 수 있다.

power = 1
while 2*power <= n:
    power = 2*power
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.