Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 9 лет назад пользователемРоман Зеленый
1 Особенности использования процедур и функций Для любознательных юных программистов
2 Опережающее описание процедуры Описание процедуры, содержащее вместо блока операторов директиву Forward, называют опережающим описанием. С помощью этой директивы Вы можете объявить заголовок некоторой процедуры или функции, не описывая при этом основной блок подпрограммы. В дальнейшем этот блок всё равно придется описать.
3 Пример (часть первая) Program Primer;... Procedure Proc1 (список формальных параметров); Forward; {заголовок первой процедуры} Procedure Proc2 (список параметров); {заголовок второй процедуры} Begin {Основной блок процедуры Proc2}... Proc1 (список фактических параметров); {Вызов процедуры Proc1}... End;
4 Пример (часть вторая) Procedure Proc1 (список параметров); Begin {Основной блок процедуры Proc1}... Proc2 (список фактических параметров); {Вызов процедуры Proc2}... End; Begin... {Тело основной программы} End.
5 Процедуры с ближним и дальним адресом вызова Процедуры, созданные с использованием модели Near, получаются более быстродействующими, но могут быть вызваны только из модуля, в котором они описаны. Процедуры, созданные с использованием модели Far, могут быть вызваны из любого места программы. Недостатком этих процедур является их медлительность.
6 Параметры-процедуры и параметры-функции Такие процедуры и функции должны быть объявлены с директивой Far (использование дальнего типа вызова подпрограмм) и откомпилированы в состоянии {$F+}. А также они не должны быть: стандартной подпрограммой; вложенной подпрограммой; Inline процедурой или функцией (п/программы, записанные в машинных кодах); Interrupt процедурой или функцией (п/программы обработки прерываний). Например, Procedure Exampl(k,l : integer; Var M : real; Procedure Prob; Function Step : real);
7 Пример (задание функциональной переменной) Program ProcType; Type Func=Function(x, y : integer) : integer; {Описание процедурного типа} {$F+}; {Директива компилятору на использование дальнего типа вызова п/программ}
8 Пример (функции- переменные) Function Add(x, y :integer) : integer; Begin Add := x+y; End; Function Mult(x, y :integer) : integer; Begin Mult := x+y; End; Function Funny(x, y :integer) : integer; Begin Funny := (x+y)*(x-y); End; {$F-};
9 Пример (процедура, использующая функции- переменные) Procedure Tab(w,h : integer; Operation : Func); Var x, y : integer; Begin for y := 1 to w do begin for x := 1 to w do write(Operation(x,y):5); writeln; end; End;
10 Пример (основная программа) Begin Tab(10,10,Add); Tab(10,10,Mult); Tab(10,10,Funny); End.
11 Задание Введите текст этой программы, запишите полученный файл на диск и откомпилируйте его. после того как компиляция выполнится успешно, исполните программу в пошаговом режиме с заходом в процедуры и пронаблюдайте за вызовом функций вычисления суммы, произведения двух чисел или произведения их суммы и разности. Обратите внимание на исполнение оператора write(Operation(x,y):5), как в зависимости от фактического значения параметра-функции Operation процедурного типа Func осуществляется вызов различных функций Add, Mult или Funny. Попробуйте удалить строку с директивой компилятору об использовании дальнего типа вызова или возьмите в фигурные скобки описание процедурного типа Func и пронаблюдайте за результатом. В случае появления ошибок нажатием клавиши F1 получите справку о причинах ошибки и рекомендацию на коррекцию.
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.