Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
инф-госы теория и практика.doc
Скачиваний:
28
Добавлен:
29.08.2019
Размер:
3.77 Mб
Скачать

2. Подпрограммы. Процедуры и функции

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

Подпрограмма – это именованная, логически законченная группа операторов языка, которую можно вызвать для выполнения любое количество раз из различных мест программы. В языке Паскаль существуют два вида подпрограмм: процедуры и функции.

Главное отличие процедур от функций заключается в том, что результатом последних является одно единственное значение.

Каждая новая процедура или функция должна быть предварительно описана в разделе описания процедур и функций.

Для использования ПРОЦЕДУРЫ необходимо написать оператор вызова. Описание процедуры состоит из заголовка процедуры и тела процедуры: procedure <имя> (<список параметров процедуры >);

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

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

Например: procedure a17 (a: real, b, c: real, var x1, x2: real; var k: intger);

Сначала в ней идут описания, а затем после зарезервированного слова begin – исполняемые операторы. Завершается подпрограмма-процедура зарезервированным словом end, за которым следует точка с запятой.

Program abc;

Var r, r1, r2: real;

Procedure f1 (x: real; var y: real; var c: real);

Begin

Y := sin(x)/cos(x); C := ln(x)/ln(10);

End;

Begin

Read(r);

F1(r, r1, r2);

Write (r1, r2);

End.

Описание ФУНКЦИИ состоит из заголовка функции и тела. Заголовок содержит служебное слово function, имя функции, список формальных параметров с указанием их типа и возвращаемого результата: function <имя> (<список формальных параметров>): <тип>.

<тип> - описывает тип значения, носителем которого является идентификатор (имя) функции.

Внутренняя структура подпрограммы-функции аналогична структуре программы, т.е. сначала в ней идут описания, а затем после зарезервированного слова begin – исполняемые операторы. Завершается подпрограмма-функция зарезервированным словом end, за которым следует точка с запятой.

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

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

Program abc;

Var x, y: real;

{определяем функцию tan, которая возвращает значения тангенса (tg)}

Function tan (c: real): real;

Begin

Tan := sin(c)/cos(c);

End;

Begin

Read(x, y);

{вычисляются значения tg(x) и tg(y) путем обращения к функции tan}

Writeln(‘tg(‘ , x:1:3 ‘) = ’, tan(x):1:4);

Writeln(‘tg(‘ , y:1:3 ‘) = ’, tan(y):1:4);

End.

При использовании процедур и функций переменные объявляются несколько раз в основной программе и в подпрограммах.

Переменные и типы, определенные в основной до объявления процедур и функций, называются глобальными – они доступны всем функциям и процедурам. Переменные, определенные в какой-либо подпрограмме или основной программе после раздела описаний процедур и функций, называются локальными.