Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Список формальных параметров

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

Синтаксис:

<список формальных параметров>::=<описание формальных параметров> {";" <описание формальных параметров>}.

<описание формальных параметров>::=["Var"] <имя> {","<имя>}":"<имя типа> | <заголовок функции> | <заголовок процедуры>.

В Паскале возможны три различных формата описания формальных параметров:

1) Параметр-переменная;

2) Параметр-значение;

3) Процедурный (функциональный) параметр.

Рассмотрим их подробнее.

Параметр-переменная. Описание начинается словом Var, и похоже на описание переменных в соответствующем разделе описаний.

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

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

Таким образом, через параметр-переменную можно передавать данные в процедуру или функцию и возвращать результат выполнения процедуры или функции.

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

Параметр-значение.

Описание похоже на описание переменных в соответствующем разделе описаний, но ему не предшествует слово Var.

Фактическим параметром для формального параметра-значения должно быть выражение такого же, или совместимого типа.

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

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

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

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

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

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

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

Function CircleS(R:Real):Real;

Const Pi=3.14159265;

<== предыдущая лекция | следующая лекция ==>
Описание. .. {пропускаем фрагмент программы} | Локализация (области видимости) имен. Глобальные и локальные объявления
Поделиться с друзьями:


Дата добавления: 2014-01-11; Просмотров: 1164; Нарушение авторских прав?; Мы поможем в написании вашей работы!


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



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




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