Читайте также:
|
|
Использование подпрограмм в языке Turbo Pascal связано с некоторыми особенностями работы с идентификаторами программы (именами констант, типов и переменных).
Имена, описанные в подпрограмме, являются локальными для этой подпрограммы. Идентификаторы, описанные в модулях более высокого уровня, являются глобальными для всех подчиненных подпрограмм.
Имена, описанные в глобальном модуле (т.е. в основной программе), являются глобальными для всех подпрограмм. Глобальные данные, описанные в основной программе, хранятся в области памяти, называемой сегментом данных (или статическим сегментом) программы. Они создаются на этапе компиляции и доступны в любой момент работы программы.
В отличие от них, локальные данные хранятся в специальной области памяти, называемой стеком. Они являются временными, так как создаются в момент входа в подпрограмму и уничтожаются при выходе из нее.
Основные правила работы с глобальными и локальными именами можно сформулировать так:
· Локальные имена доступны (считаются известными, "видимыми") внутри того модуля, в котором они описаны, и вложенных в него модулей. Этот модуль, и все другие, вложенные в него, называют областью видимости для этих локальных имен. Например, для программы, представленной в виде структурной схемы на рис.2, глобальные имена x и y известны в основной программе Global и во всех вложенных в нее подпрограммах Loc1, Loc2 и Loc11; локальные имена, описанные внутри модуля Loc1, будут известны в самом модуле Loc1, а также в модуле Loc11, имена x2 и y2 – только в модуле Loc2.
Модуль Global (x и y – объявленные в модуле имена переменных)
|
Рис. 2
· Имя, описанное в локальном модуле, "закрывает" совпадающие с ним имена из модулей более высокого уровня. Это означает, что если в двух модулях, один из которых содержится внутри другого, есть данные с одинаковыми именами, то после входа во вложенный модуль работа будет происходить с локальными для данного модуля данными. Данные с теми же именами, описанные в глобальном блоке, становятся временно недоступными, и это продолжается до момента выхода из вложенного модуля.
Рекомендуется все данные, которые имеют в подпрограммах только внутреннее вспомогательное назначение, делать локальными. Это предохраняет от изменений глобальные объекты с такими же именами.
Дата добавления: 2015-07-10; просмотров: 117 | Нарушение авторских прав