Урок 13 – Область видимости переменных

Для наглядности, давайте сразу напишем программу, а дальше я объясню, что к чему. Наша программа будет называться visible, и у нее будет одна целочисленная переменная.

У нашей программы будет также процедура, которая будет выводить результат сложения переменной i и 5. Так как процедуру также называют подпрограммой, то так ее и назовем.

Далее напишем третий раздел нашей основной программы, где присвоим переменной i значение 10, а дальше вызовем процедуру.

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

Вызывающая программа не видит локальные переменные. Давайте в этом убедимся. Пусть у нашей процедуры будет переменная “a” со значением 20.

Далее в третьем разделе вызывающей программы попробуем вывести результат сложения переменной a и 5.

В результате выйдет такая ошибка:

Как я и говорил, вызывающая программа не видит локальные переменные.

Также внутри процедуры мы можем создавать еще вложенные в нее процедуры. Так делать не рекомендуется, так как усложняет понимание программы, но для нашей темы сейчас такое будет необходимо. Допустим внутри нашей процедуры будет процедура podPodProgramma, которая попробует сложить переменную a и 5.

Т.е. получается процедура podProgramma является вызывающей для процедуры podPodProgramma, поэтому ее переменные являются глобальными для процедуры podPodProgramma и она может их использовать, и также испольлзовать переменную i, так как для нее она тоже является глобальной (основная программа вызывает podProgramma, а та в свою очередь вызывает podPodProgramma). Этим я хочу сказать, что определения “вызывающая программа”, “глобальная и локальная переменная” являются относительными, в зависимости кто вызывает. Наша переменная “a” одновременно является локальной для программы visible и глобальной для процедуры podPodProgramma.

Если у локальной переменной будет такое же имя как и у глобальной, то в процедура, где объявлена эта локальная переменная, будет видеть только ее. Она как бы заменит собой глобальную.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *