НОВОСТИ   БИБЛИОТЕКА   ЮМОР   КАРТА САЙТА   ССЫЛКИ   О САЙТЕ  




предыдущая главасодержаниеследующая глава

14.2. Параметры-процедуры. Параметры-функции

Такие параметры в списке формальных параметров предваряются ключевыми словами PROCEDURE и FUNCTION соответственно.

Пример 1. PROCEDURE P(PROCEDURE А); Здесь процедура Р имеет один параметр-процедуру А.

Пример 2.


Процедура Q имеет два параметра: параметр-функцию S и параметр-значение В.

Замечание 1. На ЕС ЭВМ имеются отличия от стандарта в описании параметров-функций (процедур). Транслятор требует перечислить все параметры функции, являющейся параметром.

Пример 3. PROCEDURE Q (FUNCTION F(I:INTEGER): REAL); Здесь формальный параметр F - функция от одного целого аргумента, результат F - вещественный.

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

Обратиться к процедуре Q(FUNCTION F(I:INTEGER):REAL) можно так: Q(SINUS(K)); где SINUS(K) есть SIN(K). Если К имеет тип INTEGER, тогда SINUS(K) - типа REAL. Это совпадает с типами I и F в заголовке Q. Нельзя, однако обратиться к Q с функцией ABS(K), а именно: Q(ABS(K)); в этом случае тип формального параметра F-REAL, а тип фактического ABS(K) - INTEGER, т. е. формальный и фактический параметры не совпадают по типу.

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



(см. Замечание 2)

Выражение TRUNC ((UP-LOW)/STEP) дает число точек, в которых вычисляется функция F (при счете от 0).

Если к процедуре TAB обратиться оператором TAB (SIN, 0.0, 6.4, 0.33);

то будет напечатана таблица функции sin а: для а; от 0 до 6.4 с шагом 0.33. Алгоритмы, употребляемые наиболее часто различными пользователями, оформляются в виде процедур и функций, помещаются в память машины и составляют библиотеку стандартных программ (модулей).

Замечание 2. Многие трансляторы, в том числе на БЭСМ-6 и ЕС ЭВМ, не допускают использования стандартных функций в качестве фактических параметров. Для таких трансляторов оператор

TAB (SIN, 0.0, 6.4, 0.33);

является ошибочным, так как SIN(X) - стандартная функция. Это ограничение можно легко обойти, введя новую функцию, эквивалентную стандартной.

Пример. Введем функцию SINUS(X) таким образом:


Тогда составить таблицу sin x можно, обратившись к процедуре TAB следующим оператором: TAB(SINUS, 0.0, 6.4, 0.33);

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

1. Ошибки, допускаемые программистом в процедурах, имеющих параметры-процедуры и параметры-функции, иногда бывает трудно найти, что ведет к длительной отладке таких процедур.

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

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

предыдущая главасодержаниеследующая глава








© Злыгостев А.С., 2001-2019
При использовании материалов сайта активная ссылка обязательна:
http://informaticslib.ru/ 'Библиотека по информатике'
Рейтинг@Mail.ru
Поможем с курсовой, контрольной, дипломной
1500+ квалифицированных специалистов готовы вам помочь