Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
контрольная_ОП.doc
Скачиваний:
5
Добавлен:
15.09.2019
Размер:
168.45 Кб
Скачать

Подпрограммы

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

Подпрограммы делятся на процедуры и функции.

Целесообразность использования подпрограмм:

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

  2. использование модулей небольших размеров позволяет упростить и ускорить процессы их отладки

  3. часто в различных местах программы необходимо выполнить одно и то же действие. Целесообразно запрограммировать его 1 раз в виде подпрограммы, а затем обращаться к ней по мере необходимости (экономия ресурсов памяти и времени программиста)

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

Замечание! Использовать подпрограммы в маленьких программах трудоемко и нерационально.

Описание функций

Описание функции располагается до ис­полняемой части программы и является как бы маленькой программой внутри большой. Начинается описание заго­ловком функции.

FUNCTION идентификатор (параметры): тип;

{Раздел описания локальных данных}

BEGIN

{ТЕЛО ФУНКЦИИ}

END;

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

Имя функции – имя, которое программист дает своей подпрограмме. Имя выбирается в соответствии с правилами, такими же, как и для других идентификаторов;

Параметры — список переменных с указанием их типов, своего рода описание. В отличие от стандартных, функции программиста могут иметь любое число аргументов произ­вольных типов;

Тип — это тип значения, которое вычисляет функция. Он обя­зан быть простым (может иметь только целый тип, вещественный тип, символьный тип, тип String и указатель). Таким образом, имя функции фигурирует в программе, как переменная данного типа.

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

В теле должен присутствовать оператор присваивания:

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

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

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

function fact(n:integer): integer;

Var {локальные вспомогательные переменные}

k,f: integer;

begin {тело функции}

f:=1; {начальное значение факториала}

for k:=1 to n do {оператор цикла}

f:=f*k;

fact:=f;

end; {конец функции}

Обращение к функции

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

Вычисление выражений, содержащих обращение к функции, происходит по следующему алгоритму:

  1. вычисляются выражения для аргументов функции;

  2. значения аргументов присваиваются параметрам из заголовка описания;

3) выполняется тело функции и вычисляется ее значение;

4) значение функции ставится в исходное выражение на место обращения к функции;

5) вычисление исходного выражения продолжается.

Заметим, что если выражения для аргументов сами содержат обращения к функциям, то пункт 1) выполняется по приведенному алгоритму. В подобных случаях говорят, что алгоритм — рекурсивный.

Формальные и фактические параметры. Механизм передачи параметров.

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

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

При вызове функции вместо формальных параметров должны указываться фактические (реальные значения).

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

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

Например, нельзя использовать такую конструкцию:

FUNCTION F(A: ARRAY[1..30] OF INTEGER): INTEGER;

Можно поступить так:

TYPE

A= ARRAY[1..30] OF INTEGER;

FUNCTION F(MAS:A);