Студопедия

КАТЕГОРИИ:


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

Локализация (области видимости) имен. Глобальные и локальные объявления




Вызов процедур и функций

Begin

Begin

CircleS:=Pi*R*R

End;

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

Пример: процедура для нахождения действительных корней квадратных уравнений вида ax 2+ bx + c.

Procedure SqEqRoots(a,b,c:Real;Var x1,x2:Real;Var Err:Boolean);

Var d:real;

d:=b*b-4*a*c; {вычисление дискриминанта}

If d>=0 then begin

d:=sqrt(d);

x1:=(-b-d)/(2*a);x2:=(-b+d)/(2*a);

Err:=False End

else Err:=true

End;

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

Синтаксис вызова процедур и функций одинаков:

<вызов процедуры или функции>::= <имя процедуры или функции> ["(" <фактический параметр> {";" <фактический параметр> ")"].

Как отмечалось ранее, отличие состоит в том, что вызов процедуры – это отдельный оператор, а вызов функции – это частный случай фактора (сомножителя) в выражении.

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

Пример. Если в программе описаны переменные V, D, h типа Real и функция CircleS из примера в предыдущем пункте, можно вычислить объем цилиндра диаметром 0,8 метров и высотой 1,2 метра следующим образом:

D:=0.8; h:=1.2; {Задаются исходные данные}

V:=h*CircleS(D/2); {Вычисляется объем цилиндра}

Во второй строке в функцию CircleS передается радиус, как диаметр, деленный пополам. Результат выполнения функции CircleS (площадь круга в основании цилиндра) умножается на высоту цилиндра h, и значение объема заносится в переменную V.

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

Имя, определенное во вложенном блоке, во внешнем блоке недоступно.

Если во вложенном блоке определен элемент с таким же именем, которое было назначено другому элементу во внешнем блоке, то во внешнем блоке по этому имени доступен элемент, объявленный во внешнем блоке, а во вложенном блоке доступен элемент, объявленный во вложенном блоке.

Имя функции считается объявленной переменной внутри этой функции, используемой для возврата результата из функции.

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

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




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


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


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



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




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