Основы алгоритмизации и программирования. Часть третья. Структурированные типы данных. Асламова В.С - 8 стр.

UptoLike

15
Локальные и глобальные параметры
Телом процедуры является блок, в котором можно описывать имена.
Следовательно, возможно вложение блоков. А значит, возникает вопрос об
области действия (или области видимости – scope) имён.
1. Все описанные в некотором блоке имена имеют силу только для
этого блока и вложенных в него блоков. Для такого блока имена являются
локальными. Локальных имен вне блока не существует.
2. Все используемые в некотором блоке имена, описанные в блоке
более высокого уровня иерархии, являются для блока более низкого уровня
глобальными.
Понятие глобальной и локальной переменной можно
продемонстрировать с помощью общественного транспорта. Мы покажем
это на примере городского и областного автобусов. Городской автобус
аналогичен локальной переменной, в то время как областной
естественно,
глобальной. Область действия городского автобуса ограничена городом, в то
время как областной автобус кроме езды по области может заезжать и в
город.
Рекомендуется не использовать глобальные переменные в процедурах
и функциях.
3. Если в некотором блоке локальная и глобальная величины имеют
одно и тоже имя, внутри блока с этим именем всегда связывается локальная
величина, для которой отводится новое место в динамической памяти.
Значение имеющей то же имя глобальной величинызамораживается”.
Паскаль даёт возможность каждому программисту написать свою
собственную процедуру для общей главной программы
, в составлении
которой принимают участие несколько программистов, при этом можно не
заботится об опасности перепутать идентификаторы.
Если есть глобальные параметры, которые должны быть
изменяющимися, тогда их можно задавать в подпрограмме в качестве var-
параметров.
Можно также показать, что и для локальных переменных разрешается
выбирать по желанию любое имя, идентификатор локальной переменной
не
оказывает никакого влияния на другие части программы.
Как уже было сказано, телом подпрограммы процедуры, и
подпрограммы функции является блок. Внутри описания процедуры может
16
содержаться описание процедур, функций, т.е. Паскаль допускает наличие
вложенных подпрограмм, которые в свою очередь могут содержать свои
вложенные подпрограммы (уровень вложенности на практике не превышает
2–х).
Схематически изобразить структуру блоков некоторой программы
можно следующим образом:
Авнешний блок программы;
В, Еблоки подпрограмм, описанных во
внешнем блоке А;
С, Дблоки вложенные в подпрограмму В
(т.е. описанные в ней).
Рис. 3.
Структура блоков программы
Возвращаясь к схеме, можно сказать, что имена
переменных,
описанные в объекте В, известны (видимы), кроме самого объекта В, ещё во
вложенных блоках С и Д. Имена из блоков С, Д, Е известны только в
пределах соответствующих блоков. Имена объектов из внешнего блока А
известны во всех вложенных блоках.
Казалось бы, проще иметь дело вообще только с глобальными
переменными, описав их все в PROGRAM. Но использование локальных
переменных позволяет системе лучше оптимизировать программы, делает их
более наглядными и уменьшает вероятность появления ошибок.
При написании программ, имеющих вложенные модули, необходимо
придерживаться следующих правил:
1. Описывать идентификаторы в том блоке, где они используются,
если это возможно.
2. Если один и тот же объект (переменная, константа или тип)
используются в двух и более блоках, то описать этот объект надо в самом
внешнем из них, содержащем все остальные блоки, использующие этот
объект.
А
В
С
Д
Е
               Локальные и глобальные параметры                             содержаться описание процедур, функций, т.е. Паскаль допускает наличие
                                                                            вложенных подпрограмм, которые в свою очередь могут содержать свои
      Телом процедуры является блок, в котором можно описывать имена.       вложенные подпрограммы (уровень вложенности на практике не превышает
Следовательно, возможно вложение блоков. А значит, возникает вопрос об      2–х).
области действия (или области видимости – scope) имён.                            Схематически изобразить структуру блоков некоторой программы
      1.  Все описанные в некотором блоке имена имеют силу только для        можно следующим образом:
этого блока и вложенных в него блоков. Для такого блока имена являются
локальными. Локальных имен вне блока не существует.                           А
                                                                                         В
      2.  Все используемые в некотором блоке имена, описанные в блоке                        С
                                                                                                           А – внешний блок программы;
более высокого уровня иерархии, являются для блока более низкого уровня
                                                                                             Д             В, Е – блоки подпрограмм, описанных во
глобальными.                                                                                               внешнем блоке А;
       Понятие    глобальной     и    локальной     переменной    можно                                    С, Д – блоки вложенные в подпрограмму В
продемонстрировать с помощью общественного транспорта. Мы покажем                        Е                 (т.е. описанные в ней).
это на примере городского и областного автобусов. Городской автобус
аналогичен локальной переменной, в то время как областной – естественно,
глобальной. Область действия городского автобуса ограничена городом, в то                  Рис. 3.
время как областной автобус кроме езды по области может заезжать и в              Структура блоков программы
город.                                                                            Возвращаясь к схеме, можно сказать, что имена переменных,
       Рекомендуется не использовать глобальные переменные в процедурах     описанные в объекте В, известны (видимы), кроме самого объекта В, ещё во
и функциях.                                                                 вложенных блоках С и Д. Имена из блоков С, Д, Е известны только в
      3.  Если в некотором блоке локальная и глобальная величины имеют      пределах соответствующих блоков. Имена объектов из внешнего блока А
одно и тоже имя, внутри блока с этим именем всегда связывается локальная    известны во всех вложенных блоках.
величина, для которой отводится новое место в динамической памяти.                Казалось бы, проще иметь дело вообще только с глобальными
Значение имеющей то же имя глобальной величины “замораживается”.            переменными, описав их все в PROGRAM. Но использование локальных
      Паскаль даёт возможность каждому программисту написать свою           переменных позволяет системе лучше оптимизировать программы, делает их
собственную процедуру для общей главной программы, в составлении            более наглядными и уменьшает вероятность появления ошибок.
которой принимают участие несколько программистов, при этом можно не              При написании программ, имеющих вложенные модули, необходимо
заботится об опасности перепутать идентификаторы.                           придерживаться следующих правил:
      Если есть глобальные параметры, которые должны быть                          1. Описывать идентификаторы в том блоке, где они используются,
изменяющимися, тогда их можно задавать в подпрограмме в качестве var-       если это возможно.
параметров.
      Можно также показать, что и для локальных переменных разрешается
                                                                                  2. Если один и тот же объект (переменная, константа или тип)
                                                                            используются в двух и более блоках, то описать этот объект надо в самом
выбирать по желанию любое имя, идентификатор локальной переменной не
                                                                            внешнем из них, содержащем все остальные блоки, использующие этот
оказывает никакого влияния на другие части программы.
                                                                            объект.
      Как уже было сказано, телом подпрограммы процедуры, и
подпрограммы функции является блок. Внутри описания процедуры может
                                   15                                                                          16