Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Билет №34





Структура программы. Локализация объектов.

Программа на языке Паскаль имеет блочную структуру:

<программа>::=<заголовок><блок> (не пугать с сегмент-блоком!)

<описание процедуры>::=<заголовок><блок>

<блок>::=<раздел описаний ><составной оператор>

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

Любой объект должен быть описан в каком-либо блоке. Говорят, что объект локализован в том блоке, где он описан. Это значит, что он существует в этом блоке и перестает существовать за пределами этого блока.

Если объект используется вне того блока, где он описан, то он называется нелокальным.

Нелокальный объект называется стандартным, если он определен в самом языке. Например, константы Pi, Maxint, функции Ео? Sin - стандартные.

Если нелокальный объект описан в программе, то он называется глобаль­ным.

ПРИМЕР.

program R;

var a,i:real;

procedure P1;

var b:real;

procedure P2;

var x,i:real;

begin

i:=2

begin

end{P2};

i:=99; P2;

writeln(i); {99}

end{P1};

function F:real;

var Z:real;

begin

i:=0; F:=i;

end{F};

begin

P1; writeln(i); {99}

writeln(i+F); {99+0=0(?)}

writeln(F+i); {0+0=0}

end{R}.

Переменные a, i - локализованы в программе R; b - локализована в процедуре Р1; х - локализована в процедуре Р2 и т.д.

Переменную а можно использовать в любой процедуре программы R, так как она глобальна по отношению к этим процедурам.

Переменная b - локальна в процедуре Р1 и глобальна по отношению к про­цедуре Р2, поэтому в этих процедурах она может быть использована. Переменную b нельзя использовать функцией F и в программе R, так как она теряет свое зна­чение при выходе из процедуры Р1.

Переменная z можег быть использована только функцией F, где она описа­на.

Если некоторая переменная (i) описана и во внешнем блоке (R) и во внут­реннем (Р2), то во внутреннем блоке действует описание его локальной перемен­ной i. Значение глобальной переменной i при входе в процедуру Р2 автоматиче­ски сохраняется, а при выходе из этой процедуры - восстанавливается.

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

Процедура Р1 и функция F описаны в программе R, поэтому они могут вызываться из программы R. Проце­дура Р2 описана (а значит и локализована) в процедуре Р1, следовательно она может вызываться из процедуры Р1 и может вызывать Р1 как глобальную.

В то же время, невозможно обратиться из программы R и из функции F к процедуре Р2, так как Р2 является локальным объектом процедуры Р1.

При взаимодействии Р1 и F действует следующее правило языка Паскаль: описание объекта должно предшествовать его вызову. Поэтому F может вы­зывать Р1, а Р1 не может вызывать F, так как процедура Р1 описана раньше, чем функция F, Чтобы установить равноправие P1 и F, следует перед описанием про­цедуры Р1 добавить опережающее описание функции F:

function F:real;forward;

ЛОКАЛИЗАЦИЯ ПЕРЕМЕННЫХ:

1) R вызывает:

P1 - доступно, P2 - недоступно, F - доступно;

2) P1 вызывает:

Р1 - рекурсия, Р2 - доступно, F - недоступно;

3) Р2 вызывает:

Р1 - доступно, Р2 - рекурсия, F - недоступно;

4) F вызывает:

Р1 - доступно, Р2 - недоступно, F - рекурсия.

_____________________________________________________________________________________







Дата добавления: 2015-03-11; просмотров: 548. Нарушение авторских прав; Мы поможем в написании вашей работы!




Обзор компонентов Multisim Компоненты – это основа любой схемы, это все элементы, из которых она состоит. Multisim оперирует с двумя категориями...


Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...


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


ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...

Задержки и неисправности пистолета Макарова 1.Что может произойти при стрельбе из пистолета, если загрязнятся пазы на рамке...

Вопрос. Отличие деятельности человека от поведения животных главные отличия деятельности человека от активности животных сводятся к следующему: 1...

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

Упражнение Джеффа. Это список вопросов или утверждений, отвечая на которые участник может раскрыть свой внутренний мир перед другими участниками и узнать о других участниках больше...

Влияние первой русской революции 1905-1907 гг. на Казахстан. Революция в России (1905-1907 гг.), дала первый толчок политическому пробуждению трудящихся Казахстана, развитию национально-освободительного рабочего движения против гнета. В Казахстане, находившемся далеко от политических центров Российской империи...

Виды сухожильных швов После выделения культи сухожилия и эвакуации гематомы приступают к восстановлению целостности сухожилия...

Studopedia.info - Студопедия - 2014-2025 год . (0.008 сек.) русская версия | украинская версия