- •Структурное
- •Следование
- •Ветвление
- •Цикл
- •Структурное
- •Подпрограммы
- •Процедура
- •Функция
- •Ограничения на тип
- •Пример функции
- •Глобальные и локальные
- •Параметры
- •Параметры
- •Массив – параметр
- •Открытые массивы
- •Параметры без типа
- •Параметры без типа
- •Параметры без типа
- •Параметры – процедуры Параметры - функции
- •Процедурный тип
- •Параметры – процедуры Параметры - функции
- •Режим дальней адресации
- •Параметры – процедуры Параметры - функции
- •Пример программы
- •Пример программы
- •Рекурсия
- •Косвенная рекурсия Опережающее описание
- •Рекурсивное вычисление факториала
- •Рекурсия по ошибке
- •Модуль
- •Структура модуля
- •Структура модуля
- •Заголовок и Интерфейсная
- •Секция реализации
- •ПРИМЕР секции реализации для модуля my_complex
- •Секция инициализации
- •Подключение модуля
- •Обращение модуля к
Глобальные и локальные
Параметры
Формальные
При описании подпрограммы
Фактические
При вызове подпрограммы
Параметры
|
Способ |
Изменяются |
|
Передачи |
фактические |
|
|
параметры |
|
|
при вызове |
Параметры- |
Копия в |
Нет |
значения |
стеке |
|
Параметры- |
По |
Да |
переменные |
ссылке |
|
Параметры- |
По |
Нет |
константы |
ссылке |
|
ПРИМЕР
Заголовок Вызов x:=9; y:=2;
Procedure P(m,n:real); Begin n:=m; end; P(5+sqrt(x),y); {x=9; y=2;}
Procedure P(Var m,n:real);
Begin |
n:=m; end; |
P(x,y); |
{x=9, y=9} |
ProcedureP(Const m,n:real);
Begin |
n:=m; end; |
P(x); |
{x=9; y=2;} |
Массив – параметр
подпрограммыType mas=array[1..10] of integer; matr=array[1..10,1..10] of integer;
Procedure Mas_Work(const m:mas); Begin … end;
Var A:mas; B:array[1..10] of integer; C:array[1..10] of mas;D:matr;
Begin Mas_Work(A);
Mas_Work(B); |
НЕПРАВИЛЬНО |
|
|
|
|
|
|
For i:=1 to 10 do Mas_Work(c[i]); |
|
НЕПРАВИЛЬНО |
|
For i:=1 to 10 do Mas_Work(D[i]); |
|
||
|
|||
|
|
||
End. |
|
|
|
|
|
|
|
Открытые массивы
Только одномерный
Индексы с нуля и до максимального
Параметры без типа
Надо привести к определенному типу
Параметры без типа
ИЛИ Разместить по адресу другой переменной
Параметры без типа
Параметры – процедуры Параметры - функции
Создать процедурный тип
При описании подпрограммы процедурного типа использовать режим дальней адресации
В формальных параметрах подпрограммы указать переменную процедурного типа