КАТЕГОРИИ: Архитектура-(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) |
Комбинированные процедуры
Процедуры с параметрами-переменными
В отличие от процедур с параметрами-значениями, процедуры с параметрами-переменными не имеют входных параметров, т.е. из основной программы не передаются значения переменных в процедуру, за исключением глобальных переменных. Отличие в описании и обращении к процедурам с параметрами-переменными заключается в специфическом написании заголовка процедуры. В остальном все процедуры схожи. Общий вид заголовка процедуры с параметрами-переменными выглядит так:
PROCEDURE <Имя процедуры> (VAR<Параметры-переменные>: тип);
При детальном ознакомлении с синтаксической диаграммой видно, что параметрам-переменным должно предшествовать служебное слово VAR, причем оно пишется столько раз, сколько различных типов представлено в выходных данных, например:
PROCEDURE PRIMER (VAR a, b, c: INTEGER; VAR m: CHAR; VAR i, j: REAL).
При обращении к процедурам с параметрами-переменными фактическими параметрами должны являться имена переменных, которые описаны в основной программе.
П р и м е р. Вычисление площади четырехугольника.
program PLOCHAD_3; var AB, BC, CD, AD, AC, S1, S2, a, b, c: real; procedure GERON_3 (var S: real); var P: real; begin P:= (a + b + c)/2; S:= sqrt (P*(P - a)*(P - b)*(P - c)); end; begin { Основная программа } read (AB, BC, CD, AD, AC); a:= AB; b:= BC; c:= AC; GERON_3 (S1); a:= AD; b:= AC; c:= CD; GERON_3 (S2); write ('S = ', S1 + S2) end.
Комбинированные процедуры включают в себя входные и выходные данные. В заголовке этой процедуры, как и ранее, выходные параметры предваряются словом VAR, входные параметры – без него. Порядок следования параметров может быть произвольным, например:
PROCEDURE PRIMER (VAR a, b, c: INTEGER; m: CHAR; VAR i, j: REAL);
Здесь a, b, c, i, j – параметры-результаты (переменные); m – параметр-аргумент (значение). В качестве иллюстрации комбинированных процедур рассмотрим последний вариант вычисления площади четырехугольника:
program PLOCHAD_4; var AB, BC, CD, AD, AC, S1, S2: real; procedure GERON_4 (a, b, c: eal; var S: real); var P: real; begin P:= (a + b + c)/2; S:= sqrt (P*(P - a)*(P - b)*(P - c)); end; begin {*ОСНОВНАЯ ПРОГРАММА*} read (AB, BC, CD, AD, AC); GERON_4 (AB, BC, AC, S1); GERON_4 (AD, AC, CD, S2); write ('S = ', S1 + S2) end.
Примечание. Для более полного усвоения введенных ранее терминов перечислим на базе последнего примера все виды параметров и переменных: 1) глобальные переменные AB, BC, CD, AD, AC, S1, S2; 2) локальные переменные a, b, c, S, P; 3) формальные параметры a, b, c, S: параметры-значения (аргументы) a, b, c; параметр-переменная (результат) S; 4) фактические параметры AB, BC, CD, AD, AC, S1, S2: параметры-значения (аргументы) AB, BC, CD, AD, AC; параметры-переменные (результаты) S1, S2.
Заметим также, что термины «параметр-значение» и «аргумент», как и «параметр-переменная» и «результат», не всегда идентичны. Дело в том, что характеристика «значение (переменная)» отражает синтаксическую сущность параметра, а «аргумент (результат)» – его семантику (функциональную роль в процедуре). Иногда один и тот же параметр может быть аргументом и результатом одновременно, но описан в процедуре в виде параметра-переменной. Попытка же описать выходной параметр в виде параметра-значения (без слова VAR в заголовке процедуры) приведет к тому, что результат работы процедуры не будет возвращен в основную программу. Это происходит потому, что характер «поведения» параметров-значений и параметров-переменных в процессе работы процедуры различен. Разница эта состоит в том, что преобразования, которые претерпевают формальные параметры-значения в процедуре, не вызывают изменения соответствующих им фактических параметров, в то время как изменения параметров-переменных могут изменять значения соответствующих фактических параметров. Причиной этого феномена является неодинаковое распределение памяти под хранение параметров процедуры. Формальному параметру-значению отводится некоторая область (ячейка) памяти, куда заносится значение соответствующего фактического параметра, вычисленного на момент обращения к процедуре. На этом связь между ними обрывается. Действительно, если фактическим параметром является константа или выражение, то как изменения в формальном параметре-значении (а это есть всегда переменная) могут повлиять, например, на выражение? Фактическим же параметром, соответствующим формальному параметру-переменной, является всегда переменная. На время выполнения процедуры эти параметры отождествляются, им соответствует одна и та же область памяти. Вполне понятно, что в этой ситуации изменения формального параметра влекут адекватные изменения фактического параметра, и после завершения процедуры его значение может отличаться от его первоначального значения. Именно поэтому, объявив в процедуре параметр-результат как параметр-значение, этот результат так и останется в формальном параметре-переменной без его передачи в соответствующий фактический параметр (т.е нет возврата полученного процедурой значения) в основную программу.
Дата добавления: 2014-12-16; Просмотров: 425; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |