Студопедия

КАТЕГОРИИ:


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

Область действия параметров




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

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

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

Можно схематически изобразить структуру блоков некоторой Паскаль-про­граммы, как показано на рис. 7.2.

Рис.7.2. Структура блоков некоторой Паскаль-программы

Для доступа к объектам, описанным в различных блоках, требуется соблюдать следующие правила:

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

2. Имена объектов, описанных в блоке, должны быть уникальны в пределах
данного блока и могут совпадать с именами объектов из других блоков.

3. Если в некотором блоке описан объект, имя которого совпадает с именем
объекта, описанного в объемлющем блоке, то это последнее имя становится недос­
тупным в данном блоке (оно как бы экранируется одноименным объектом данного
блока).

Если применить эти правила к предыдущей схеме, можно сказать, что объекты, описанные в блоке В, известны (видимы) кроме самого блока В еще и блоках С и D, но невидимы в блоке А. Объекты, описанные в блоке F, известны только в пре­делах этого блока. Например:

 

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

В качестве примера с вложенными подпрограммами рассмотрим пример про­граммы, определяющей количество сверхпростых чисел в натуральном ряду чисел, не превышающих 1000. Сверхпростым называется число, если оно простое, и чис­ло, полученное из исходного числа, при записи цифр исходного числа в обратном порядке (перевертыш) тоже будет простым. Например, 13 и 31 — сверхпростые числа.

Упражнение 6. Проанализируйте текст программы, обратив особое внимание на при­менение функций определения простого числа, функцию получения перевертыша и вложен­ный вызов функции Prost(Povorot(X)), при котором переменные D, I, Flag, локальные для функции Prost, являются глобальными для функции Povorot.

Запустите интегрированную среду программирования. Введите текст программы Sverx_Prost и запишите файл на диск под соответствующим именем, а затем откомпилируй­те его. После того как компиляция выполнится успешно, задайте для просмотра в окне от­ладчика переменные X, К, I, D, S, Flag. Установите видимыми одновременно окна редакто­ра с текстом программы и окно просмотра. Исполните программу в пошаговом режиме с за­ходом в функцию и пронаблюдайте за изменениями значений переменных в основной про­грамме и в функциях, обратите внимание на передачу значений при вызове функции от фак­тических параметров основной программы формальным параметрам функции, на возвраще­ние вычисленных функциями значений в точку вызова главной программы, а также на ха­рактер изменения значений параметров локальных переменных I, D и глобальных перемен­ных X, К.




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


Дата добавления: 2015-05-09; Просмотров: 507; Нарушение авторских прав?; Мы поможем в написании вашей работы!


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



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




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