- •Алгоритмические языки
- •Парадигмы программирования
- •Области применения языков программирования
- •Лекция 2
- •Классификация алгоритмов
- •Описание (представление) алгоритмов
- •Запись алгоритмов с помощью языка блок-схем
- •Интегрированная среда разработки Delphi
- •Арифметические операции
- •Другие операции
- •Стандартные арифметические функции
- •Арифметические выражения
- •Полнота вычислений
- •Порядок вычислений
- •Совместимость типов данных
- •Эквивалентность
- •Совместимость
- •Совместимость по присваиванию
- •Явное приведение типов данных
- •Функции, изменяющие тип данных
- •Операторы ветвления
- •Условный оператор if
- •Оператор выбора case
- •Иллюстрация if и case
- •Операторы циклов
- •for-to и for-downto
- •Инкрементный цикл с параметром
- •Декрементный цикл с параметром
- •while и repeat-until
- •Пример использования циклов
- •Вывод массива, удобный для пользователя
- •Массивы
- •Описание массива
- •Нумерация
- •Обращение к компонентам массива
- •Задание массива константой
- •Подпрограммы
- •Объявление и описание
- •Объявление функции
- •Объявление процедуры
- •Описание подпрограммы
- •Список параметров
- •Возвращаемые значения
- •Вызов подпрограмм
- •Способы подстановки аргументов
- •Механизм передачи значения
- •Механизм передачи значения
- •Области действия имен
- •Побочный эффект
- •Совпадение имен
- •Нетипизированные параметры
- •Явное преобразование типа
- •Совмещение в памяти
- •Открытые параметры
vk.com/club152685050 | vk.com/id446425943
Лекция 11 |
7 |
эти переменные занимают разные позиции, а не одну, как было бы в случае параметра-переменной.
Области действия имен
I.Разграничение контекстов
Глобальные объекты - это типы данных, константы и переменные, объявленные в начале программы до объявления любых подпрограмм. Эти объекты будут видны во всей программе, в том числе и во всех ее подпрограммах. Глобальные объекты существуют на протяжении всего времени работы программы.
Локальные объекты объявляются внутри какой-нибудь подпрограммы и "видны" только этой подпрограмме и тем подпрограммам, которые были объявлены как внутренние для нее. Локальные объекты не существуют, пока не вызвана подпрограмма, в которой они объявлены, а также после завершения ее работы.
Таблица 8.1. Пример разграничения контекстов
program prog; var a:byte;
procedure pr1 (p:byte);
|
var |
b:byte; |
(первый уровень вложенности) |
|
|
|
|
||||
|
function f (pp:byte); |
|
|
||
|
var |
c:byte; |
(второй уровень вложенности) |
|
|
|
|
|
|||
|
|
|
|
|
|
begin
(здесь "видны" переменные a, b, c, p, pp) end;
begin
(здесь "видны" переменные a, b, p) end;
var g:byte
|
|
|
|
procedure |
pr2; |
|
|
var d:byte; |
(первый уровень вложенности) |
|
|
begin |
|
|
|
(здесь |
видны переменные a, d, g) |
|
|
end; |
|
|
|
|
|
|
|
begin
(тело программы; здесь "видны" переменные a, g) end;
Побочный эффект
Поскольку глобальные переменные видны в контекстах всех блоков, то их значение может быть изменено изнутри любой подпрограммы. Этот эффект называется побочным, а его использование очень нежелательно, потому что может стать источником непонятных ошибок в программе.