Учебник Turbo Pascal. Введение - Подпрограммы-функции

ОГЛАВЛЕНИЕ

Подпрограммы-функции

Важным принципом современного программирования является принцип модульности. В модульной программе отдельные ее части, предназначенные для решения каких-то частных задач, организованы в подпрограммы. В такой организации есть два больших преимущества. Во-первых, один и тот же фрагмент можно использовать многократно как в одной, так и в разных программах, не набирая его текст заново. Во-вторых, программы лучше писать небольшими частями. Такие программы легче читать, тестировать и отлаживать. У них, как правило, более четкая логическая структура.

В языке Паскаль модульность обеспечивается использованием подпрограмм-функций, подпрограмм-процедур и модулей. Более подробное знакомство с процедурами мы отложим до второго урока, а первоначальные сведения о модулях даются в конце данного урока. Сейчас мы познакомимся с правилами программирования и применением функций.

Описание подпрограммы-функции должно располагаться в разделе описаний, то есть между заголовком программы (или другой подпрограммы) и зарезервированным словом begin. Описание подпрограммы-функции начинается с заголовка, который имеет вид

function    name_of_f unction    (argumentslist):    type_of_result;

Здесь идентификатор типа результата type_of_result описывает тип значения, носителем которого является идентификатор (имя) функции name_of_function. Список параметров argumentslist содержит перечисление идентификаторов переменных — параметров функции. Эти параметры используются для передачи данных в подпрограмму-функцию. После имени переменной или группы имен следуют двоеточие и идентификатор типа переменных из этой группы. Список параметров может отсутствовать. Имя функции задается в соответствии с обычными правилами Паскаля.

Внутренняя структура подпрограммы-функции аналогична структуре программы, то есть сначала в ней идут описания, а затем, после зарезервированного слова begin — исполняемые операторы. Завершается подпрограмма-функция зарезервированным словом end, но за ним следует не точка, а символ «точка с запятой». В разделе описаний подпрограммы-функции могут содержаться описания других подпрограмм. Таких описаний может быть несколько. В теле подпрограммы-функции должен присутствовать оператор присваивания, в левой части которого указано имя функции, а в правой находится выражение.

Обращение к подпрограмме-функции производится просто путем указания ее имени в составе какого-либо выражения. Это может быть арифметическое выражение, если функция арифметическая. Имя функции в вызывающей программе может появиться только в правой части оператора присваивания.

Сделаю одно замечание. В дальнейшем наши программы будут использовать математический сопроцессор. Математический сопроцессор — это устройство, предназначенное для ускорения математических вычислений с вещественными числами. Были времена, когда математический сопроцессор был необязательной частью компьютера. Внутреннему представлению данных в сопроцессоре соответствует вещественный тип Extended. Указание транслятору генерировать код для математического сопроцессора задается директивой компилятора {$N+}, размещаемой в начале программы. Обратите внимание на то, что это не комментарий, хотя здесь используются фигурные скобки. Конструкция {$...} со знаком доллара сразу после открывающей фигурной скобки всегда обозначает

директиву компилятора. Директива компилятора позволяет включить требуемый режим его работы.

ПРИМЕЧАНИЕ Директиву {$N+} можно опустить, если в интегрированной среде Турбо Паскаля выбраны опции Options | Compiler | 8087/80287 (в интегрированной среде разработки компиляция для 80x87 выполняется по умолчанию) и Options | Compiler | Emulation (одновременно). Если же вы не располагаете математическим сопроцессором, следует выбрать в диалоговом окне пункт Emulation, но в этом случае не стоит рассчитывать на высокую скорость выполнения программы.