
- •Содержание
- •Тема 1. Основные понятия
- •1.2. Задача, алгоритм, программа
- •1.2.Структура модуля исходного кода
- •Тема 2. Линейный блок: оператор присваивания, переменная, процедура и функция
- •2.1 Линейный блок
- •2.2. Переменные и константы
- •Синтаксис объявления переменной в ObjectPascal
- •Синтаксис объявления именной константы в ObjectPascal
- •Синтаксис объявления переменных в VisualBasic
- •2.3Типыпеременныхиконстант
- •Var1: type definitions;
- •Var2, var3: type definition4;
- •Var4 : typel;
- •2.4. Простые типы данных
- •2.4.1. Порядковые типы
- •Поддиапазонные типы
- •Перечислимые типы
- •Операции над порядковыми типами
- •2.4.2. Целые переменные
- •Integer Shortint Smallint Longint Byte Word Cardinal
- •Физические целые типы
- •Логические целые типы
- •2.4.3. Вещественные переменные
- •Вещественные типы.
- •2.4.4. Строковые переменные
- •2.4.5. Булевы типы
- •Размеры переменных булевых типов
- •2.5. Процедуры и функции
- •Описание и вызов процедуры
- •Описание и вызов функции
- •Передача параметров
- •2.6 Область видимости переменных, констант, процедур и функций
- •2.7 Стандартные функции
- •Функции преобразования типов
- •Математические функции
- •Функции вещественных типов
- •Функции обработки строк
- •Строковые функции
- •2.8 Операции над данными
- •2.9 Приоритеты операций
- •2.10. Структурные типы
- •2.10.1. Записи
- •1: Variantnamel: varianttype3;
- •2, 3: Variantname2: varianttype4;
- •1: (KinfWorker: String[15];
- •2: (PosAdmin: String[20]);
- •2.10.2. Массивы
- •Var ИмяМассива: array [ТипИндекса1, ...., ТипИндексаN] of БазовыйТип
- •Var MyArray: Array [1..10] of Integer;
- •2.10.3. Множества
- •Var MyAlphaSet: CharSet;
- •2.10.4. Файловый тип
- •2.11. Указательные типы
- •Средства работы с указателями
- •2.12. Процедурные типы
- •2.13. Тип variant
- •Тема 3. Блок принятия решений: операторы ветвления
- •3.1 Оператор if
- •If условие1 then
- •3.3Операторcase
- •Тема 4. Цикличекий блок: операторы повторяющихся действий
- •4.1.Цикл for
- •4.2. Циклы while и repeat
- •4.3. Операторы break и cont inue
- •Тема 5. Работа с текстовыми файлами
- •5.1. Типы доступа к текстовым файлам
- •5.2. Текстовые файлы
- •5.2.2 Бинарные файлы
- •Id : String[12];
- •Тема 6. Работа с классами
- •6.1. Понятие класса
- •6.2. Классы в object pascal
- •6.3. Свойства класса
- •Способ глобальных и локальных переменных
- •Способ процедуры свойств
- •Создание и удалениеобъектов
- •Inherited Create;
- •Inherited Destroy;
- •6.4. Методы класса
- •6.5. Объявление и удаление объектов
- •Литература
2.6 Область видимости переменных, констант, процедур и функций
Область видимости переменной означает возможность его использования или ее 'видимость' в разных местах исходного кода. Время жизни переменной — это интервал времени, в течении которого она существует в памяти компьютера.
В ObjectPascalобъявления и выполнимые операторы организованы в блоки, определяющие области видимости меток и идентификаторов в исходном коде. Блок состоит из последовательности объявлений, за которым расположен составной оператор. Все объявления должны быть расположены в начале блока. Общий синтаксис блока имеет вид
объявления
begin
операторы
end
Фрагмент объявления может содержать объявления переменных, констант, типов, процедур, функций и меток в любой последовательности. Каждая функция или процедура состоит из одного блока.
Идентификатор (например, имя переменной) может быть использован только в своей области видимости. Область видимости идентификатора, объявленного в функции или процедуре, ограничена блоком, в котором он объявлен. Область видимости идентификатора, объявленного в интерфейсном разделе модуля, включает любой модуль или программу, использующую данный модуль. Идентификаторы с более узкой областью видимости, например объявленные в функции или процедуре, называются локальными, а с более широкой областью видимости — глобальными. На рис. 2.9приведены правила, определяющие область видимости идентификаторов.
-
Таблица 2.9.
Место объявления
Область видимости
Объявление функции или процедуры
От точки объявления до конца текущего блока, включая все вложенные блоки
Интерфейсный раздел модуля
От точки объявления до конца модуля, а также в любом другом модуле или программе, использующей данный модуль
Раздел реализации модуля
От точки объявления до конца раздела реализации; идентификатор доступен внутри любой функции или процедуры в этой области
Блоки позволяют использовать разные объекты с одним и тем же именем в разных частях программы. Если один блок вложен в другой, то один из них называется внутренним, а другой — внешним. Если идентификатор (переменная, константа, функция, подпрограмма), объявленный во внешнем блоке объявить также во внутреннем блоке, то внутреннее объявление скрывает внешнее для всех не специфицированных вхождений идентификатора во внутреннем блоке. Допустим, например, что переменная myValueобъявлена в интерфейсном разделе модуля и повторно объявлена в функцииCompute() данного модуля. Тогда всеми не специфицированными вхождениямиmyValueв блоке функцииCompute() будет управлять локальное объявление.
Область видимости переменной (как одного из видов объектов) может быть локальной или глобальной. Переменная с локальной областью видимости называется локальной переменной, а с глобальной областью видимости — глобальной переменной.
Локальную переменную можно использовать только в подпрограмме, в которой она объявлена, поэтому память для нее выделяется при входе в подпрограмму и освобождается при выходе из нее. Интервал времени между этими двумя событиями составляет время жизни локальной переменной. В то же время глобальные переменные доступны во всех частях программы, следовательно, они создаются в начале работы программы и удаляются памяти при ее завершении.