Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Параметры




ФУНКЦИИ ПОЛЬЗОВАТЕЛЯ

Хотя набор встроенных функций языка ПАСКАЛЬ достаточно широк, он вряд ли может удовлетворить требованиям каждого программиста. Поэтому пользователю предоставлена возможность самому реализовать нужные ему алгоритмы в виде функций и обращаться к ним из программ по мере необходимости.

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

Формат.

Function < имя> < (Формальные параметры)>:< тип результата >

Пример.

Function Prov (X, Y, T: integer): real;

Function Zx: boolean;

Имя функции - уникальный в пределах блока идентификатор. Возвращаемый результат может иметь любой скалярный тип, тип string и тип "указатель".

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

Function <имя> {(Формальные параметры)>: <тип результата>

<разделы описаний>

begin

<раздел операторов>

end;

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

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

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

 

Program DewoFunction;

Var

Z: integer; К: real;

Function Step (F: real; Exp: integer): real;

Var

С: integer; T: real;

begin

if Exp = 0 then Step:= 1 else

begin

T:= F;

for С: = 2 to Abs(Exp) do T: - T * F;

if Exp < О then Step:= 1 / T

else Step: = T;

end

end;

Begin

wri teln (' Введите число:');

read (Z);

writeln (Step(Z,3)); {вывод Z в 3-й степени}

wri teln (Step(Z,4)); {вывод Z в 4-й степени}

К: =1.4;

wri teln (Step(K,4)) {вывод К в 4-й степени}

End.

Параметры могут иметь любой тип, включая структурированный. ПАСКАЛЬ поддерживает два различных метода передачи параметров: по значению и по ссылкам.

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

Procedure Копе (А, В, С: integer; D: real);

Function Docs (SI, S2: real; Flag: boolean): real;

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

Procedure Okl (I: array [l..12] of real);

является ошибочной. Тип переменной следует определить ранее в разделе описания типов блока:

Type Massiv = array [l..12] of real;

Procedure Okl (I: Massiv);

Когда параметр передается посредством ссылки, фактический параметр является переменной. Формальный параметр обозначает эту фактическую переменную в течение всего времени активизации блока. Параметры, переданные посредством ссылки, называются параметрами-переменными. Их характерный признак – любое изменение формального параметра означает изменение фактического параметра. Для описания параметров-переменных в секции формальных параметров служит зарезервированное слово Var.

При использовании параметров-переменных формальные и фактические параметры должны совпадать по количеству и типу. Однако возможны два исключения:

Формальные параметры без типа несовместимы ни с каким типом. Допустимо сочетание параметров-значений и параметров-переменных в одной секции формальных параметров:

Procedure Prots (Var А, В, С: real; S: boolean);

Такая запись означает, что А, В, С – параметры-переменные, а S – параметр-значение. Напомним, что если процедура должна возвратить в программу определенные результаты, они должны быть специфицированы как параметры-переменные, т. е. в сочетании со словом Var, в противном случае результаты не будут возвращены.

 




Поделиться с друзьями:


Дата добавления: 2015-05-10; Просмотров: 237; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.01 сек.