Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

Имя процедуры (список фактических параметров)

Процедуры и функции

Процедуры и функции предназначены для решения отдельных подзадач, по своей структуре подобны обычным программам и имеют общее название подпрограммы. В программе описания процедур и функций располагается между разделами переменных и операторов. Каждая процедура или функция определяется только один раз, но может использоваться многократно.

Оператор процедуры

Описание каждой процедуры начинается с заголовка, в который задается имя процедуры и список формальных параметров с указанием их типов. С помощью параметров осуществляется передача исходных данных в процедуру, а также передача результатов работы обратно в вызывающую ее программу.

Формат заголовка процедуры:

Procedure имя процедуры(список формальных параметров).

Перед списком формальных параметров должно стоять зарезервированное слово var.

Вызов и выполнение процедуры осуществляется следующим образом:

Имя процедуры (список фактических параметров).

Между формальными и фактическими параметрами должно быть полное соответствие: количество, тип фактического параметра должен совпадать с типом формального параметра.

При вызове процедуры сначала передается параметры, при этом параметры значения передаются по значению, а параметры переменные по ссылке.

Работа процедуры: присваивание значений параметру переменной внутри процедуры одновременно выполняется и для соответствующего аргумента - фактического параметра. Это связано с тем, что параметр переменная содержит не само передаваемое значение, а его адрес, по которому оно располагается в оперативной памяти. Имея в своем распоряжении адрес, процедура может произвольно изменять находящиеся по этому адресу данные.

Пример: Сравнить площади треугольников. Площадь найти в процедуре.

 

 
 

 

 


program proc;

var a,b,c:integer;s1,s2,u:real;

procedure tr(x,y,z:integer;var s:real);

begin

read(x,y,z);

s:=sqrt((x+y+z)/2*(9x+y+z)/2-x)*((x+y+z)/2-y)*((x+y+z)/2-z));

end;

begin

tr(a,b,c,s1);

writeln(‘площадь 1 тр’,s1:5:2);

u:=s1;

tr(a,b,c,s2);

writeln(‘площадь 2 тр’,s2:5:2);

u:=s2;

if s1>s2 then

writeln(‘пл 1 тр >’)

else writeln(‘пл 2 тр >’);

end.


Пример 2.Описать процедуру diskrimenant(A, B, C) целого типа, определяющую количество корней квадратного уравнения Ax2 + Bx + C = 0 (A, B, C — вещественные параметры, А 0). С ее помощью найти количество корней для каждого из трех квадратных уравнений. Количество корней определять по значению дискриминанта:D = B2 4AC.

program proz;

var a1,b1,c1,s,x1,x2:real;

procedure discrimenant(a,b,c:real;var d:real);

begin

d:=sqr(b)-4*a*c;

writeln('d=',s);

if s<0 then writeln('noy')else

if s=0 then begin x1:=-b/(2*a); writeln('x=',x1); end

else begin

x1:=(-b-sqrt(s))/(2*a);

x1:=(-b+sqrt(s))/(2*a);

writeln('x1=',x1,' x2=',x2)

end;

end;

begin

writeln('vvod a,b,c');

readln(a1,b1,c1);

discrimenant(a1,b1,c1,s);

end.

 

Ответ

d=-3

noy

vvod a,b,c

d=0

x=-1

vvod a,b,c

d=1

x1=-1 x2=0

vvod a,b,c

d=5

x1=-0.381966011250105 x2=0

 

 

Функции

Работа функции подобна работе процедуры, но результатом работы функции является одно значение.

Формат:

 

Function имя функции(список формальных параметров):тип результата.

Среди входящих в функцию операторов должен обязательно присутствовать хотя бы один оператор присваивания, в левой части которого стоит имя стандартной переменной result, которая трактуется как результат. Этот оператор и определяет значение, вырабатываемое функцией.

Вызов функции: