- •Введение в object pascal
- •Лекция 1. Интегрированная Среда и Состав языка Object Pascal
- •1.1 Работа с окнами
- •1.2 Редактирование в Object Pascal
- •1.3 Команды меню
- •1.4 «Горячие» клавиши в Object Pascal
- •1.5 Состав языка
- •1.5.1 Алфавит и ключевые слова
- •1.5.2 Идентификаторы
- •1.5.3 Знаки операций, разделители, выражения и операторы
- •Лекция 2. Описательная часть программы
- •2.1 Структура программы
- •2.2 Описание констант
- •2.3 Описание и использование меток
- •2.4 Комментарии
- •Лекция 3. Описание переменных
- •3.1 Структура раздела описания переменных
- •3.2 Классификация типов данных
- •3.2.1 Целочисленные типы
- •3.2.2 Логический тип
- •3.2.3 Символьный тип
- •3.2.4 Вещественные типы
- •3.3 Описание типов пользователя
- •Лекция4. Выражения
- •4.1 Порядок выполнения операций
- •4.2 Выражения целого типа
- •4.3 Вещественные выражения
- •4.4 Логические выражения
- •Лекция 5. Программы Линейной структуры
- •5.1 Операторы ввода (Read, Readln)
- •5.2 Операторы вывода (Write, Writeln)
- •5.2.1 Форматирование численных значений
- •5.2.2 Вывод строковых, символьных и логических значений
- •5.2.3 Вывод вещественных значений в экспоненциальном формате
- •5.2.4 Расположение данного в поле вывода. Примеры
- •5.3 Оператор присваивания
- •5.4 Составной оператор
- •5.5 Стандартные процедуры и функции
- •5.5.1 Понятие процедуры и функции
- •5.5.2 Описание некоторых стандартных процедур и функций
- •5.5.3 Примеры программ линейной структуры
- •Лекция 6. Операторы ветвления (выбора)
- •6.1 Оператор ветвления if
- •6.2 Оператор множественного выбора (варианта) - case
- •Лекция 7. Операторы организации циклов
- •7.1 Цикл типа for
- •7.1.1 Прямая форма оператора for
- •7.1.2 Обратная форма оператора for
- •7.1.3 Советы для начинающих и примеры
- •7.2 Цикл типа While
- •7.3 Цикл типа Repeat... Until
- •7.4 Дополнительные операторы при программировании циклов
- •7.4.1 Досрочный выход из цикла - break
- •7.4.2 Переход к следующей итерации цикла - continue
- •Лекция 8. Массивы
- •8.1 Одномерные массивы
- •8.2 Сортировка одномерного массива
- •8.3 Массивы с большей размерностью
- •8.4 Констант-массивы
- •8.5 Генератор случайных чисел
- •8.5.1 Описание функции Random
- •8.5.2 Применение случайных чисел при работе с массивами
- •Лекция 9. Строки
- •9.1 Строковый тип
- •9.2 Операции над строками
- •Лекция 10. Записи и множества
- •10.1 Запись
- •10.2 Множества
- •11 Пользовательские процедуры и функции
- •11.1 Описание функции и процедуры
- •11.2 Понятие формальных и фактических параметров
- •11.3 Способы передачи параметров в подпрограмму через заголовок
- •11.4 Область видимости идентификаторов
- •12 Файлы
- •12.1 Основные понятия
- •12.2 Типизированные файлы
- •12.3 Текстовые файлы
11.4 Область видимости идентификаторов
Процедуры или функции, как выше сказано, могут содержать внутри себя описание других переменных. Более того, процедуры и функции могут содержать внутри себя описание других процедур и функций, а те в свою очередь – описания других переменных, процедур и функций и т.д. Отсюда возникает проблема определения области действия переменных. Дадим определение: область действия описания конкретного идентификатора называют его областью видимости. Приведем следующие правила определения области видимости идентификаторов (переменных).
1. Глобальными переменными называются переменные, описанные в головной программе. Они доступны в любом ее месте и во всех ее подпрограммах.
2. Подпрограмма описывается в некотором описательном разделе назовем его внешним и сама имеет описательный раздел - назовем его внутренним. Локальные переменные - это переменные, описанные в процедурах и функциях, они доступны во всех частях данной подпрограммы и в любых внутренних описательных разделах, но недоступны в тех блоках программы, которые соответствуют внешним описательным разделам.
На рисунке 11.1 приведена структура программы с вложенными подпрограммами: в головную программу вложена процедура 1 и процедура 2. В свою очередь в процедуру 1 вложена функция 1.
Во всех процедурах и функциях этой программы будут видны и можно использовать глобальные переменные головной программы. Локальные переменные функции 1 и процедуры 2 не будут видны в процедуре 1 и в головной программе. Однако локальные переменные, описанные в процедуре 1, будут видны, также как и глобальные переменные, в функции 1 (она вложена в процедуру 1).
Рис. 11.1
В следующем примере процедура prog1 вложена в головную программу p11_2. В эту процедуру вложена, в свою очередь, процедура prog2.
Пример:
program p11_2;
var х: Integer ; { глобальная переменная }
procedure prog1; { Начало описания процедуры prog1}
var у: Integer; { локальная переменная }
procedure prog2; { Начало описания процедуры prog2 }
var z: Integer; { локальная переменная }
begin
{ Тело процедуры ргоg2: доступны переменные х, у, z }
…………..
end;
begin
{ тело процедуры prog1: доступны переменные х, у }
………………
end;
begin
{ тело головной программы: доступна переменная х }
…………..
end.
Задача: написать функцию для возведения целых чисел в натуральную степень.
program р11_3;
{ Описание процедуры Istep }
procedure Istep(x, n: integer ; Var p: Longint);
{ x - целое число, n - натуральная степень, р – результат выполнения
процедуры, т.е. х в степени n. Этот параметр передаётся по ссылке }
var i : integer; { локальная переменная }
begin
p : = x ;
for i: = 2 to n do p := p * x;
end; { конец процедуры Istep }
var { описание глобальных переменных }
k: Longint;
begin { тело головной программы }
Istep(3, 3, k); { обращении к процедуре Istep. Первые два фактических
параметра равны 3. Фактическая переменная k, передаваемая
в процедуру по ссылке, после выполнения процедуры будет
содержать результат: 3 в степени 3. }
Writeln('3 в степени 3=' , k);
pstep (5, 6, k) ; { обращении к процедуре Istep }
Writeln('5 в степени 6=' , k);
pstep (7, 4, k); { обращении к процедуре Istep }
Writeln('7 в степени 4=' , k);
end.