Вызов процедур и функций
Вызов процедуры (функции) имеет вид: <Имя процедуры (функции)>(<Список параметров>); Параметры, перечисленные в <списке параметров> при вызове процедуры (функции), называются фактическими. <Список параметров> при вызове процедуры или функции заключается в круглые скобки и содержит последовательность фактических параметров, разделенных запятыми: <идентификатор1>,<идентификатор2>… В качестве фактических параметров в простейших случаях могут использоваться значения, идентификаторы переменных, констант. !!! Количество, порядок следования и типы фактических параметров должны соответствовать количеству, порядку следования и типам формальных параметров!!! При вызове процедур и функций формальные параметры заменяются фактическими. Если процедура или функция не имеет параметров, то при объявлении и при вызове (<Список параметров>) опускается.
Задача. Разработать программу, в которой с помощью функции пользователя вычисляется десятичный логарифм введенного с клавиатуры числа. {****** 1. РАЗДЕЛ ОБЪЯВЛЕНИЙ И СОГЛАШЕНИЙ**********} var x,y:real;
{****** 2. РАЗДЕЛ ПРОЦЕДУР И ФУНКЦИЙ***************} function lg (x_:real):real; begin log:=ln(x_)/ln(10); end;
{************3. РАЗДЕЛ ОСНОВНОЙ ПРОГРАММЫ**********} BEGIN writeln; writeln('введите, x:'); readln(x); writeln('введите y:'); readln(y); writeln('lg(’, x, ’)=’, lg(x):8:5); readln; END.
Задача. Разработать программу, в которой с помощью функции пользователя, которая для введенного с клавиатуры числа n вычисляется значение n!. {****** 1. РАЗДЕЛ ОБЪЯВЛЕНИЙ И СОГЛАШЕНИЙ**************} var n: integer;
{****** 2. РАЗДЕЛ ПРОЦЕДУР И ФУНКЦИЙ*******************} function fact(n1:integer):longint; {n!} var i: byte; f: longint; begin f:=1; for i:=1 to n1 do f:=f*i; fact:=f; end;
{************3. РАЗДЕЛ ОСНОВНОЙ ПРОГРАММЫ***************} BEGIN Writeln(‘Введите n’); Readln(n); Writeln(‘ n!=’, fact(n)); END.
Задача.Даны два одномерных массива А и В. Найти их скалярное произведение. Скалярным произведением двух массивов одинаковой размерности называется сумма произведений соответствующих элементов: Program SCALAR_PROIZV_VEKT; Uses Crt; Const n=5; Type mas=array[1..n] of integer; Var i:integer; x,y:mas; function SCALAR(a,b:mas):integer; var s:integer; begin s:=0; for i:=1 to n do s:=s+a[i]*b[i]; SCALAR:=s; end;
BEGIN clrscr; randomize; Writeln('massiv x'); for i:=1 to n do begin x[i]:=1+random(10); Write(' x[',i,']=',x[i]); end; Writeln; Writeln('massiv y'); for i:=1 to n do begin y[i]:=1+random(10); Write(' y[',i,']=',y[i]); end; Writeln; Writeln('x*y=',SCALAR(x,y)); END.
Результат работы программы: massiv x x[1]=1 x[2]=4 x[3]=3 x[4]=2 x[5]=3 massiv y y[1]=8 y[2]=2 y[3]=2 y[4]=3 y[5]=1 x*y=31
|