
- •Федеральное агентство по образованию
- •Структурированные типы данных. Классификация
- •Массивы Определение массива
- •Обращение к элементу массива. Хранение элементов массива. Доступ к элементам массива
- •Действия над массивами
- •Поиск элемента (одномерного ) массива Поиск среди неупорядоченных элементов массива
- •Поиск среди упорядоченных элементов массива
- •Сортировка элементов (одномерного) массива
- •Линейная сортировка (сортировка отбором)
- •Сортировка методом пузырька
- •5 4 3 1 2
- •5 4 3 2 1 Метод быстрой сортировки с разделением
- •Множества
- •Объявление множеств
- •Представление в памяти переменной типа множество
- •Операторы для работы с множествами Проверка принадлежности элемента множеству
- •Операции над множествами
- •Сравнение множеств
- •Применение множеств
- •Процедуры и структурное программирование
- •Преимущества структурного программирования
- •Планирование структурированной программы
- •Метод программирования сверху вниз
- •Определение процедуры
- •Передача управления при вызовах процедур и функций
- •Функции: подпрограммы,возвращающие единственный результат
- •Понятие блока
- •Область действия и время жизни переменных
- •Особенности локальных переменных
- •Особенности глобальных переменных
- •Особенности использования процедур и функций в турбо паскале
- •Опережающее определение процедур и функций
- •Рекурсия и итерация
- •Процедуры и функции как параметры
- •Директивы подпрограмм
- •Отладка и тестирование программ, содержащих подпрограммы
- •Нисходящее тестирование и подпрограммы-заглушки
- •Восходящее тестирование и программы-тестеры
- •Рекомендации по отладке программ, содержащих подпрограммы
- •Использование отладчикадля трассировки процедур
- •Запуск внешних программ
- •Стандартные модули
- •Модуль Crt
- •Модуль Graph
- •Функции
- •Текстовые файлы
- •Нетипизированные файлы
- •Типизированные файлы
- •Прямой доступ
- •Дополнительные функции работы с файлами
- •Обработка ошибок ввода-вывода
- •Указатели и динамические переменные Статические и динамические переменные
- •Адресация памяти в Турбо Паскале
- •Карта памяти Турбо Паскаля
- •Указатели
- •Операция для получения адреса
- •Функции для работы с адресами
- •Процедуры для работы с указателями
- •Присваивание значений указателям
- •Организация ссылок
- •Динамические структурированные переменные Динамические записи
- •Динамические массивы
- •Массивы размером более 64 кбайт
- •Строки с завершающим нулем (asciiz)
- •Процедуры и функции модуля strings
- •Указатели на процедуры и функции
- •Динамические структуры данных
- •Линейные списки
- •60 Лекции по курсу «Языки программирования» Часть II
Понятие блока
Структура процедуры и функции состоит из заголовка и блока.
Блок – это фрагмент процедуры (функции) или программы, содержащий в себе действия над некоторыми объектами и описания этих объектов. Действия в блоке заключаются между словами begin и end.
В Паскале блоки самостоятельно не используются, а только в составе подпрограмм и программ.
Примечание. С блоком не надо путать составной оператор. Составной оператор включает только действия, а блок представляет собой законченную конструкцию, где имеются и описания и действия.
Блоки
бываютвнешние
(охватывающие) и внутренние.
Program p1; блок 1 a, b, c L:real
var
a, b, c, L : real;
procedure p2; блок 2 x, y, z
var
x, y, z : real; i, j, k L:integer
procedure
p3; блок
3
var
i, j, k, L : integer;
begin
...
end;
begin
...
end;
begin
...
end.
В рассмотренном примере два внутренних блока и два внешних:
Блоки 2 и 3 являются внутренними для блока 1.
Блоки 1 и 2 являются внешними для блока 3.
Приведенная программа имеет, как говорят, блочную структуру.
Область действия и время жизни переменных
Область действия переменной – это правила, которые устанавливают, какие данные доступны из данного места программы.
Область действия также влияет на время жизни переменной, т.е. время, в течение которого переменная хранится в памяти.
С точки зрения области действия переменных различают три типа переменных:
глобальные,
локальные
формальные параметры.
Правила области действия определяют, где каждая из них может применяться.
Локальные переменные – это переменные, которые описаны в конкретном блоке.
Глобальные переменные - это переменные, объявленные во внешнем блоке (в охватывающем).
Формальные параметры - это переменные, объявленные при описании процедур или функций. Формальные параметры могут использоваться в теле процедуры так же, как локальные переменные, которыми они по сути дела и являются.
В рассмотренном примере в блоке 3 видны: i, j, k, l, x, y, z, a, b, c.
В блоке 2 видны: x, y, z (внешне описанные), a, b, c, l, (описанные в охватывающем блоке).
Примечание. В блоке 3 переменная l будет видна как целая, а в блоке 2 - как вещественная. В блоке 2 будут не видны те переменные, которые описаны в блоке 3.
Особенности локальных переменных
Область действия локальной переменной – процедура или функция.
При входе в соответствующий блок локальные объекты принимают следующие значения:
формальные параметр принимают значения соответствующих фактических параметров;
локальные переменные принимают неопределенные значения.
Особенности глобальных переменных
Глобальные переменные видны во всех блоках, для которых они являются глобальными.
Значения глобальных переменных непредсказуемы до момента присваивания им определенных значений (сами автоматически, как в языке Си, не инициализируются).
Область действия глобальных переменных перекрывается (закрывается) областью видимости одноименного локальных переменных. То есть область видимости глобального объекта уменьшается на величину области видимости одноименного локального объекта.
Примечание (к рисунку).
Из рисунка видно, что переменная L существует в программе в двух вариантах: как вещественная и как целая в блоке 3, где она описана как локальная переменная. В соответствии с правилом в блоке 3 локальная переменная перекрывает объявление ее как глобальной переменной. Поэтому в блоке 3 переменная l будет видна как integer, а за пределами блока 3 как real.