더북(TheBook)

모든 크기의 입력 스트림 처리하기 일반적으로 입력 스트림은 유한하다. 프로그램이 입력 스트림을 읽으면서 스트림을 소진할 때까지 값을 가져온다. 그러나 입력 스트림에는 크기 제한이 없으며, 그저 입력 스트림을 모두 처리하는 프로그램도 있다. 다음 예제인 average.py(프로그램 1.5.3)는 표준 입력 스트림에서 일련의 실수를 읽고 이 숫자들의 평균을 출력한다. 이 프로그램은 프로그램에서 크기를 미리 알 수 없는 입력 스트림의 속성을 잘 보여준다. 사용자는 그저 필요한 만큼의 숫자를 모두 입력할 뿐이며, 프로그램은 평균을 계산할 뿐이다. 각 숫자를 읽기 전에 프로그램은 stdio.isEmpty()를 호출해 입력 스트림에 숫자가 더 있는지 검사한다.

더 이상 입력할 데이터가 없다는 것은 어떻게 알려줄까? 관습에 따라 파일 끝(end-of-file)이라고 알려진 특별한 키 조합을 입력한다. 불행히도 우리가 일반적으로 접하는 운영 체제의 터미널 애플리케이션마다 이 키 조합은 다르다. [Ctrl]-[Z]를 파일 끝 문자로 사용하는 터미널 애플리케이션도 있지만, 이 책에서는 [Ctrl]-[D]를 이용해 파일 끝을 표시하겠다.

그런데 표준 입력 스트림에서 일일이 숫자를 입력하는 경우는 거의 없다. 대신 [프로그램 1.5.3]의 실행 예에서 볼 수 있는 것처럼 일반적으로 입력 데이터 파일을 사용한다. 이 메커니즘에 대해서는 잠시 후에 자세히 설명한다. average.py 프로그램은 확실히 짧고 간단하지만 프로그래밍에서의 심오한 새로운 기능을 보여준다. 바로 표준 입력을 이용하면 무한한 크기의 데이터를 처리하는 프로그램을 작성할 수 있다는 점이다. 나중에 알게 되겠지만 수많은 데이터를 처리하는 애플리케이션을 작성할 때 이 방법은 상당히 효율적이다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.