Лабораторная работа № 11. Программирование процедур и функций
1. Что такое подпрограмма? Перечислите виды подпрограмм.
Подпрограмма – именованный блок операторов, отдельно выделенный в составе программы и не зависящий от других её частей. Подпрограммы бывают 2-х видов:
1. Подпрограмма-функция – это подпрограмма для вычисления функции, которая возвращает какое-либо значение.
2. Подпрограмма-процедура – это подпрограмма для выполнения действий, которая не возвращает никаких значений.
2. Какие элементы входят в описание подпрограммы?
Как правило, описание подпрограммы включает заголовок, разделы описаний и раздел операторов, начинающийся словом begin, а заканчивающийся словом end и точкой с запятой (;).
3. Что такое формальные и фактические параметры? Чем они отличаются?
Формальные параметры – переменные, которые объявляются в заголовке подпрограммы.
Фактические параметры – переменные или значения, которые подставляются вместо формальных параметров в момент конкретного вызова подпрограммы.
4. Что такое параметры-значения и параметры-переменные? Чем они отличаются?
Параметры-значения – параметры, значения которых передаются в подпрограмму в момент её вызова.
Параметры-переменные – параметры со словом var, значения которых могут использоваться после выполнения подпрограммы.
5. Что такое локальные и глобальные параметры? Чем они отличаются?
Локальные переменные – переменные, используемые только внутри подпрограммы.
Глобальные переменные – переменные, которые могут использоваться в любом месте основной программы,
в т.ч. и в подпрограмме.
6. Какой вид имеет заголовок описания функции? Что это означает?
Заголовок описания функции имеет вид:
function Func ( FormPar1 : T1 , … ) : T ;
Это означает, что задаётся подпрограмма-функция с именем Func, зависящая от формальных параметров FormPar1 типа T1 и т.д., а также вычисляющая значение типа T.
7. Какой вид имеет вызов функции? Что это означает?
Вызов функции из основной программы или другой подпрограммы имеет вид:
Func ( FaktPar1 , … )
Это означает, что вычисляется значение функции Func, зависящей от фактических параметров FaktPar1 и т.д., причём вызов функции может осуществляться в составе выражения.
8. Какой вид имеет заголовок описания процедуры? Что это означает?
Заголовок описания процедуры имеет вид:
procedure Proc ( FormPar1 : T1 , … ) ;
Это означает, что задаётся подпрограмма-процедура с именем Proc, зависящая от формальных параметров FormPar1 типа T1 и т.д., а также выполняющая какие-либо действия.
9. Какой вид имеет вызов процедуры? Что это означает?
Вызов процедуры из основной программы или другой подпрограммы имеет вид:
Proc ( FaktPar1 , … );
Это означает, что выполняются действия в теле процедуры Proc, зависящей от фактических параметров FaktPar1 и т.д., причём вызов процедуры не может осуществляться в составе выражения.
10. Напишите, что означает каждая строка в вышеприведённых программах.
Program Lab6a; Var A:array[0..100] of real; описание массива B,C,x:real; описание переменных i,n:integer; Function Step(a,b:real):real; заголовок функции begin Step:=exp(b*ln(a)); функция end; Begin writeln('Введи n,x'); read(n,x); ввод размернгости массива и переменной Х writeln('Введи массив A'); for i:=0 to n do read(A[i]); ввод массива B:=Step(2.1,5)+Step(7,0.3); вычисление В при помощи функции Step C:=0; for i:=0 to n do C:=C+A[i]*Step(x,i); writeln('B=',B:10:3,' C=',C:10:3); End. | |
Program Lab6b; Const m=3; n=4; описание констант Type TT=array [1..m,1..n] of real; описание массива Var A:TT; i,j:integer; s,p:real; Procedure SumPro(B:TT; m,n:integer; var s,p:real); заголовок процедуры var i,j:integer; begin процедура поиска суммы и произведения отрицательных элементов s:=0; p:=1; for i:=1 to m do for j:=1 to n do if B[i,j]<0 then begin s:=s+B[i,j]; p:=p*B[i,j]; end; end; Begin writeln('Введи массив A'); for i:=1 to m do for j:=1 to n do read(A[i,j]); ввод массива SumPro(A,3,4,s,p);вызов процедуры writeln(s,p); вывод результата End. | |
11. Напишите программу к одной из задач дополнительного задания.
Вычислить с использованием подпрограммы-функции вычисления тангенса.
Program Lab6a;
Var
X,y,z:real;
Function tg(a:real):real;
begin
tg:=sin(a)/cos(a);
end;
Begin
writeln('Введи X,Y'); read(x,y);
z:=tg(x)+tg(y);
writeln('z=',z:10:3);
End.