Это госы! Wiki
Это госы! Wiki
Advertisement

Блочная структура программы

  • область действия
  • область видимости
  • время жизни
  • локальные и глобальные переменные
  • распределение памяти

Область действия декларации

Это часть текста программы, которая начинается с данной декларации и заканчивается концом текущего блока.
В области действия может осуществляться использование данной декларации в операторах и выражениях.

Определяющее вхождение – вхождение идентификатора в его определение.

Использующее вхождение – вхождение идентификатора в оператор/выражение.

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

Область видимости декларации

Идентификатор, определённый в блоке, является видимым в этом блоке.

Идентификатор может быть переопределён во вложенном блоке. В этом случае объект, связанный с внешним определением, будет невидимым во вложенном блоке.

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

Время жизни декларации

Время жизни переменных совпадает с временем работы блока, содержащего определяющие вхождения этих переменных.

Локальные и глобальные переменные

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

Глобальные переменные – это зло! (ц)

Использование глобальных переменных вместо передачи параметров подпрограммы снижает читаемость и надёжность программы и может привести к побочным эффектам (выполнение подпрограммой действий, результат которых обнаруживается вне данной подпрограммы)

Распределение памяти

Memory

Стек – структура данных, список, обработка которого осуществляется по принципу LIFO.

Если памяти в сегменте данных не хватает, можно использовать Кучу (Heap) и специальные подпрогрмаммы. Использование Кучи - это использование указателей и ссылочных типов. Работа с указателями требует специальных операторов.

Куча организована как связный список свободных участков памяти. Участок Кучи, выделенный одной программе, не может пересекаться с участками Кучи, выделенными другой программе.

Статические переменные – переменные, определённые в секции определения переменных программы. Они размещены в сегменте данных и живут всё время работы программы.

Динамические переменные – переменные ссылочных типов, указатели. Память под них выделяется и уничтожается во время работы программы. Хранятся в Куче.

Ссылки

  1. М.Л.Цымблер :: Курс "Основы программирования" - Подпрограммы языка программирования Pascal
  2. М.Л.Цымблер :: Курс "Основы программирования" - Указатели и ссылочные типы данных языка программирования Pascal
Advertisement