Подпрограммы, их назначение и классификация 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Подпрограммы, их назначение и классификация



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

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

– программа разбивается на множество мелких подпрограмм;

– каждая подпрограмма отлаживаются отдельно независимо от других подпрограмм;

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

Структурное программирование привело к идее разделения труда программиста. Каждый программист выполняет отдельный модуль, не зная общих размеров проекта. Он может использовать программы, созданные другими программистами, иногда не зная даже их внутреннего устройства.

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

Важная характеристика подпрограммы – это возможность их повторного использования. Чтобы подпрограмма при обращении к ней выполнялась каждый раз с новыми данными, она записывается в общем виде. Имена (идентификаторы) в основной программе и в подпрограмме независимы друг от друга.

В языке ТР существуют два вида подпрограмм: процедура (Proctdure) и функция (Function).

Все подпрограммы подразделяются на стандартные (встроенные) и определенные пользователем.

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

Примеры вызова стандартных процедур и функций.

1. Write(x 1, x 2, …,xn) – стандартная процедура, в скобках записываются параметры вывода.

2. SIN(x) – стандартная функция, в скобках стоит один параметр (аргумент математической функции sin x).

3. ClrScr – стандартная процедура, параметры отсутствуют.

Подпрограммы пользователя

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

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

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

Параметр – это переменная, которой присваивается некоторое значение из определенного заранее диапазона значений. Различают два вида параметров:

формальные параметры – параметры, определенные в заголовке подпрограммы;

фактические параметры – это выражения, задающие конкретные значения при обращении к подпрограмме.

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

Механизм передачи параметров рассмотрим ниже.

 

Оформление и вызов процедур

Процедура (Procedure) имеет такую же структуру, как и программа. А вот структура заголовка процедуры имеет другой синтаксис:

Procedure <имя>(<список описаний формальных параметров>);

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

Вызов процедуры в основной программе осуществляется по формату:

<имя процедуры> (<список описаний фактических параметров>);

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

Пример 6.1. Рассмотрим пример оформления и вызова процедурыдлявычисления площади треугольника, заданного длинами своих сторон a, b, c по формуле Герона.

(6.1)

.

Назовем процедуру Surface. Имена переменных (идентификаторы) выберем в соответствии с формулой (6.1).

Procedure Surface (a, b, c: real; Var s: real);

входные выходные

Формальные параметры

Var p: real;

Begin

P:=(a+b+c)/2;

S:=SQRT(p*(p-a)*(p-b)*(p-c));

End;

В нашем случае формальными параметрами являются:

a, b, c: real; Var s: real.

Входные параметры – это параметры, значения которых передаются в процедуру из основной программы. У нас это длины сторон треугольника (a, b, c).

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

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

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

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

1). Surface (1, 3.45, 3.56, S-face);

фактические параметры

При таком обращениик процедуре входные параметры получают значения a = 1, b = 3,45, c = 3,56. При этих значениях процедура выполняется, т.е. вычисляется площадь треугольника. Выходной параметр S будет передан в основную программу переменной S-face, где ее можно использовать для дальнейших расчетов.

2) Surface (Xmin, Ymin, Zmin, S); в скобках указаны

3) Surface (alfa-1.3, x+y, 4.5, S1); фактические параметры

Механизм передачи параметров во втором и третьем случаях аналогичен первому.

 
 
Итак, входные параметрымогут быть константами (пример 1), переменными (пример 2), выражениями (пример 3). Выходные параметры могут быть только переменными.

 

 


Имена (идентификаторы), описанные в процедуре, называются локальными и действуют только в ней. В нашем случае это переменная Р.

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

Пример 6.2. Вычислить пло-щадь выпуклого четырехуголь-ника, заданного длинами сторон AB, BC, CD, DA и диагональю DB.

Для решения этой задачи используем подпрограмму Surface из примера 6.1, к которой обратимся дважды для вычисления площадей треугольников S 1 и S 2.



Поделиться:


Последнее изменение этой страницы: 2016-09-20; просмотров: 924; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.134.118.95 (0.01 с.)