Главная Минимаркер Информатика и вычислительная техника Минимаркер Программное обеспечение - Паскаль Минимаркер Программирование с использованием подпрограмм

Программирование с использованием подпрограмм

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

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

В языке Pascal имеется два вида программных единиц, относящихся к подпрограммам:

  • процедуры;
  • функции.

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

В языке Паскаль имеется два вида процедур и функций:

  • стандартные;
  • нестандартные.

Стандартные являются принадлежностью самого языка и в языке находятся в так называемых стандартных библиотеках и такие библиотеки находятся в языке в виде самостоятельных программных единицах (модулях). Язык Turbo-Pascal имеет несколько стандартных модулей: System, Dos, WinCrt, Printer, Graph, Overlay. Они подключаются в Uses. Это требование не относится к System, в котором находятся основные процедуры и функции, так как это модуль автоматически подключается компилятором.

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

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

  • в разделе описания программы;
  • в отдельно компилируемых программных единицах, называемых модулями.

Описание процедур и функций внешне выглядит как описание программы, но вместо заголовка программы пишется заголовок функции или процедуры. Описать подпрограмму означает указать ее заголовок и тело. В заголовке формируются параметры и объявляется имя подпрограммы. В функции, в заголовке для возвращаемого результата указывается тип. За заголовком располагается тело подпрограммы, которое состоит из разделов: описания и операторов. В подпрограмме, в разделе описаний могут быть описаны подпрограммы низшего уровня. Структурно программа с использованием подпрограмм выглядит в следующем виде:

Структура программы с использованием подпрограмм

Подпрограмма любого уровня обычно имеет множество констант, типов, имен и подпрограмм низшего уровня. Все объекты программы, которые описаны внутри подпрограммы, локализуются в ней, то есть они не видны и не доступны за пределами подпрограммы. В приведенной структуре из основной программы можно обратиться к подпрограмме A и подпрограмме B, но нельзя обратиться к вложенным подпрограммам A1 и B1. Имена, объявленные в подпрограмме, называются локальными именами. Все имена доступные подпрограмме из программы или подпрограммы верхнего уровня называются глобальными. Имена, локализованные в подпрограмме, могут совпадать с глобальными именами, которые были объявлены ранее, в этом случае локальное имя закрывает глобальное, то есть делает ее недоступной.

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

Объявление подпрограмм на языке Pascal

Объявление функции:

Function [имя] ([список_формальных_параметров]:[тип]):[тип];

[раздел_описаний_функции];

Begin

[операторы_тела_функции];

[имя]:=[результат_работы_операторов_тела_функции];

End;

Function – служебное слово. [имя] – идентификатор имени. [список_формальных_параметров] – параметры в общем виде. [тип] – тип параметров. Имеет раздел описаний и раздел операторов. Вызов функции осуществляется в разделе операторов:

[переменная]:=[имя](список_формальных_параметров);

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

Объявление процедуры:

Procedure [имя] ([список_входных_параметров]:[тип];

Var  [выходной_формальный_параметр_1]:[тип];

Var  [выходной_формальный_параметр_1]:[тип];

Var  [выходной_формальный_параметр_К]:[тип]; ):[тип];

[раздел_описаний_процедуры];

Begin

[операторы_тела_процедуры];

End;

Поскольку процедура может возвращать несколько выходных параметров, то каждый выходной параметр в заголовке процедуры следует после отдельного служебного слова Var.

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

Вызов процедуры:

[имя](список_фактических_параметров);

 


© 2013 - 2017 Учебно-образовательный портал "Все лекции"
Материалы, представленные на страницах нашего сайта, созданы авторами сайта, присланы пользователями, взяты из открытых источников и представлены на сайте исключительно для ознакомления. Все авторские права на материалы принадлежат их законным авторам.
Разработка сайта - Скобелев Алексей





Яндекс.Метрика