Слайд 1
Подпрограммы в языке Object Pascal
Слайд 2План
Понятие «подпрограмма»
Описание функций в ЯП Object Pascal
Описание процедур в в
ЯП Object Pascal
Параметры подпрограмм в ЯП Object Pascal
Область действия описаний
Слайд 31. Понятие «подпрограмма»
Подпрограмма – обособленная именованная часть программы со
своим собственным контекстом имен.
Средство структурирования программ
Слайд 42. Описание функций
Функции – группа операторов, в результате
выполнения которой вычисляется одно значение, присваиваемое имени функции
Слайд 5Функция включает:
Заголовок
Раздел описаний (констант, переменных, типов, процедур, функций), являющихся
локальными по отношению к описываемой функции;
Тело функции
Слайд 6Структура описания функции
Function F (q1:T1; q2:t2;…) : T;
локальных переменных и подпрограмм>;
Begin
;
F:=;
End;
Слайд 7Параметры:
Локальные Формальные Фактические
Programm Pr4;
Var a: longint;
….
Function Factor (k: integer): longint;
Var i: integer; p: longint;
begin
p:=1;
for i:=1
to k do p:=p*i;
Factor:=p;
end;
…
Writeln( Factor(a) );
…
Слайд 8Обращение к функции:
с:=F(b1, b2,…,bn)
Writeln( F(b1, b2,…,bn) )
A:=X* F(b1, b2,…,bn)
Слайд 9Result
Имя функции – это не переменная. Оно может фигурировать только
в левой части оператора присваивания и не может входить в
выражения
Result – это переменная
Function Max (x, y: real): Real;
Begin
If x>y Then Result: =x
Else
Result: =y;
End;
Слайд 103. Описание процедур
Процедуры используются в тех случаях, когда в
подпрограмме необходимо получить несколько результатов
Слайд 11Процедура включает
Заголовок
Раздел описаний (констант, переменных, типов, процедур, функций), являющихся
локальными по отношению к описываемой процедуре;
Тело процедуры
Слайд 12Структура описания процедуры
Procedure H (q1:t1; var q2:t2;…);
переменных, типов, констант, подпрограмм>;
Begin
;
End;
Слайд 13Обращение к процедуре
…
Н(b1, b2, …, bn);
…
Слайд 14Параметры
Локальные и глобальные
Формальные и фактические
Параметры-значения и параметры-переменные
Слайд 15Задача: вычислить F=n!-m!
Program Pr5;
Var n,m: integer; f: longint;
Function Factor(k:
integer;) : longint;
var i: integer; p: longint;
begin
p:=1; for
i:=1 to k do p:=p*i;
Result:=p;
end;
Слайд 16Begin
writeln(‘input n, m’);
readln(n,m);
if n>m then f:=factor(n)-factor(m)
else
f:=factor(m)-factor(n);
writeln(‘f = ’, f);
End.
Слайд 17Задача: провести сортировку трех чисел
Program Pr6;
Var x,y,z: integer;
procedure
Sort2(var a,b : integer);
Var c: integer;
begin
if a>b then
begin
c:=a;
a:=b;
b:=c
end;
end;
Слайд 18Begin
writeln ('Sortirovka 3 numbers');
writeln ('Your 3 numbers, please:');
readln (x,y,z);
sort2 (x,y);
sort2 (y,z);
sort2 (x,y);
writeln ('Result
of sort is ', x, y, z);
readln;
end.
Слайд 194. Различные варианты передачи параметров в функции и процедуры
Слайд 20 При организации процедур и функций различают несколько
способов передачи параметров в подпрограмму:
Передача по значению
Передача параметров как переменных
Передача
параметров как констант
Передача параметров как выходных параметров
Слайд 211. Передача по значению.
Параметры значения определяют исходные данные для работы
процедур и функций. В списке формальных параметров они описываются в
следующем виде:
(q1:T1; q2:T2) или (q1, q2:T)
При вызове подпрограммы фактический параметр, может быть любым выражением, результат вычисления которого принадлежит тому же типу, что и формальный параметр.
Procedure myFun ( a:integer; b,c:real);
Слайд 22 При обращении к подпрограмме выражение вычисляется. В памяти создаются временные
переменные с именами q1 и q2, и в них копируется
результат вычислений.
Изменение значений переменных q1 и q2 в теле подпрограммы никак не влияет на значения переменных из основной программы.
При выходе из подпрограммы переменные q1 и q2 уничтожаются.
Слайд 242) Передача параметров как переменных
Параметры переменные позволяют передавать в основную
программу измененные значения.
Параметры переменные в списке формальных параметров описываются с
помощью указания перед ними ключевого слова var. Например:
(var q1, q2:t1; var q3:t2) ;
Procedure KvUravn(a,b,c:real; var x1,x2:real)
Слайд 26При обращении к подпрограмме фактические параметры должны быть обязательно переменными,
того же типа, что и формальные параметры.
В подпрограмму передается адрес
переменной (ссылка) и операторы процедуры непосредственно используют данную переменную.
В данном случае любые изменения параметра q1, произведенные в подпрограмме, в действительности относятся к той переменной, которая будет указана при вызове подпрограммы на месте q1.
Слайд 273) Передача параметров как констант
Передача параметра как константы осуществляется заданием
перед его описанием ключевого слова const.
Например:
(const q1:t1);
Параметры константы по механизму
передачи похожи на параметры значения, но их значения нельзя изменять в теле подпрограммы.
Слайд 284) Передача параметров как выходных параметров
Выходные параметры описываются с помощью
зарезервированного слова out.
Например: (out q1:t1);
Выходные параметры по механизму передачи похожи
на параметры переменные, но при этом в подпрограмму не передается начальное значение этого параметра, т.е. память, занимаемая соответствующей переменной, указанной при вызове подпрограмме на месте q1, будет очищена при вызове подпрограммы.
Слайд 295. Область действия описаний
Областью действия описания любого программного объекта (переменной,
типа, константы и т.д.) является тот блок, в котором расположено
это описание.
Если данный блок вложен в другой (подпрограмма), то присутствующие в нем описания являются локальными. Они действуют только в пределах внутреннего блока.
Например:
Слайд 30PROGRAM Prog;
Var V1: integer;
Procedure A;
Var V2: integer;
Begin … end;
Procedure B;
Var V3: integer;
Procedure B1;
Var V4: integer;
Begin … end;
Begin … end;
Var V5: integer;
BEGIN … END.
PROGRAM Prog;
Var V1: integer;
Var V5: integer;
Procedure A;
Var V2: integer;
Procedure B;
Var V3: integer;
Procedure B1;
Var V4: integer;