더북(TheBook)

알고리즘 1-1은 알고리즘을 어떻게 기술하는지 보여준다. 알고리즘은 (알고리즘 로직과 관련 없는 구현 세부사항을 처리하게 하는) 프로그래밍 언어를 사용하는 대신 의사 코드를 사용하여 기술한다. 의사 코드(pseudo code)는 실제 프로그래밍 코드와 일반 언어를 사용한 비형식적인 서술 방법 사이에 있는 것으로, 구조화된 형식과 특정 의미를 부여한 일련의 단어를 사용하지만, 실제 컴퓨터 코드는 아니다. 의사 코드는 컴퓨터 실행보다는 사람이 이해하는 데 목적이 있다. 프로그램도 인간이 이해할 수 있어야 하지만, 모든 프로그램이 그렇지는 않으며 잘못 만들어지거나 이해하기 어려운 컴퓨터 프로그램도 많다.

각 알고리즘은 이름이 있으며 입력을 받아 출력할 결과를 생성한다. 알고리즘 이름은 카멜 표기법(CamelCase)2으로 쓰고 괄호 안에 입력 데이터를 넣는다. 그런 다음 출력을 →로 표시한다. 다음 줄에서 알고리즘의 입력과 출력을 기술한다. 괄호 안의 입력 데이터와 알고리즘 이름은 알고리즘을 호출(call)할 때 사용한다. 일단 알고리즘을 작성하면 입력 데이터를 넣어 사용하는 블랙박스처럼 다룰 수 있으며, 이 블랙박스는 알고리즘의 결과를 반환한다. 알고리즘은 프로그래밍 언어를 사용하여 명명된 코드인 함수(function)로 구현되고, 컴퓨터 프로그램에서 알고리즘을 구현한 이 함수를 호출한다.

일부 알고리즘은 반환할 출력 결과를 명시적으로 생성하지 않는다. 그 대신에 알고리즘의 연산이 일부 프로그램 문맥에 영향을 미친다. 예를 들어, 알고리즘 결과를 기록할 공간을 만들 수 있다. 이때 알고리즘은 통상적인 출력 결과를 반환하지 않지만, 어쨌든 프로그램에 영향을 미친다. 일부 프로그래밍 언어는 명시적으로 결과를 반환하는 명명된 프로그램 코드를 함수로, 결과를 반환하지 않지만 다른 역할을 하는 명명된 프로그램 코드를 프로시저(procedure)로 구분하기도 한다. 이러한 구분은 함수는 값을 반환해야 한다고 정의한 수학에서 유래되었다. 알고리즘은 실제 프로그램으로 코딩될 때 함수 또는 프로시저가 된다.

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