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

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

Билет №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. Нарушение авторских прав; Мы поможем в написании вашей работы!




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


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


Теория усилителей. Схема Основная масса современных аналоговых и аналого-цифровых электронных устройств выполняется на специализированных микросхемах...


Логические цифровые микросхемы Более сложные элементы цифровой схемотехники (триггеры, мультиплексоры, декодеры и т.д.) не имеют...

ТЕРМОДИНАМИКА БИОЛОГИЧЕСКИХ СИСТЕМ. 1. Особенности термодинамического метода изучения биологических систем. Основные понятия термодинамики. Термодинамикой называется раздел физики...

Травматическая окклюзия и ее клинические признаки При пародонтите и парадонтозе резистентность тканей пародонта падает...

Подкожное введение сывороток по методу Безредки. С целью предупреждения развития анафилактического шока и других аллергических реак­ций при введении иммунных сывороток используют метод Безредки для определения реакции больного на введение сыворотки...

Типовые примеры и методы их решения. Пример 2.5.1. На вклад начисляются сложные проценты: а) ежегодно; б) ежеквартально; в) ежемесячно Пример 2.5.1. На вклад начисляются сложные проценты: а) ежегодно; б) ежеквартально; в) ежемесячно. Какова должна быть годовая номинальная процентная ставка...

Выработка навыка зеркального письма (динамический стереотип) Цель работы: Проследить особенности образования любого навыка (динамического стереотипа) на примере выработки навыка зеркального письма...

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

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