Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Параметры-переменные и параметры-значения




Begin

Begin

Обращение к процедуре

Структура процедуры

Процедуры

End.

Begin

Begin

Sum:=0;

for j:=1 to k do

Sum:=Sum+z[j];

end;

for i:=1 to 30 do read(p(i));

for i:=1 to 20 do read(t(i));

r:=sum(p,20)/sum(t,30);

write('r=',r);

 

 

Процедура универсальна и используется в тех случаях, когда необходимо в подпрограмме получить не один результат.

 

 

Процедура состоит из заголовка процедуры и ее тела. Заголовок процедуры имеет вид:

PROCEDURE имя (VAR P1:T1; P2:T2;... Pn:Tn);

где PROCEDURE (процедура) и VAR (переменная) - ключевые слова;

имя - имя процедуры, задаваемое пользователем;

Pi - необязательный список формальных параметров;

Ti - тип параметров;

 

Пример 9.

PROCEDURE ML (VAR Z:REAL; X:REAL);

Заголовок процедуры с именем ML, формальными параметрами которой будут переменные Х и Z типа real.

 

Общая структура процедуры может быть записана так

PROCEDURE имя (VAR P1:T1; P2:T2;... Pn:Tn);

раздел описаний

BEGIN

оператор

...

оператор

END;

 

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

 

Обращение к процедуре осуществляется самостоятельным оператором. Он имеет вид

имя (d1,d2,...dn);

имя - имя вызываемой процедуры;

di - фактические параметры, которым соответствуют формальным по количеству, типу, и месту расположения.

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

Поскольку процедура универсальна ее можно использовать для всех предыдущих примеров, в которых применялась функция. Приведем программу с использованием процедуры для примера 4, вычисления площади фигуры многогранника(рис.2).

 

Пример 10. Использование процедуры в программе на языке Pascal.

Program pl;

var a,b,c,d,e,f,k,Sfig,S1,S2,S3: real;

Procedure Str(a,b,c,:real;Var S:real);

var p: real;

p:=(a+b+c)/2;

S:=SQRT(p*(p-a)*(p-b)*(p-c));

end;

write('введите стороны:a,b,c,d,e,f,k');

readln(a,b,c,d,e,f,k);

Str(a,b,c,S1);

Str(b,d,e,s2);

Str(c,f,k,S3);

Sfig:=S1+S2+S3;

writeln('площадь фигуры:',Sfig);

end.

Отличие данной программы от приведенной в примере 4 в том, что в головной программе пришлось ввести три дополнительных переменных S1,S2,S3, и дополнительный формальный параметр в заголовке процедуры - S, которому и присваивается результат вычисления площади треугольника в процедуре. Чтобы тот результат был доступен в головной программе, в заголовке при его объявлении используется ключевое слово VAR.В программе 3 обращения к процедуре Str, каждое из которых является самостоятельным оператором головной программы. Результат выполнения процедуры присваивается последнему в списке параметру, т.е. при первом обращении S1- площадь треугольника со сторонами a,b,c;

при втором S2-площадь треугольника со сторонами b,d,e; а при третьем - S3 - площадь треугольника со сторонами c,f,k.

 

 

Среди параметров подпрограмм выделяют параметры значения и параметры- переменные.

Параметры- значения выполняют роль входных параметров, т.е. могут получать значения практических параметров, но не могут передавать свои значения.

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

Для выделения параметров- переменных в списке формальных параметров перед ними ставится слово VAR.

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

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

 

Пример 11: Вычислить сумму и произведение N целых чисел. N=48, N=123, N=28. Анализ примера показывает, что в нем трижды требуется вычислить сумму и произведение N чисел поэтому решение задачи можно выполнить, выделив вычисление суммы и произведения в подпрограмму. Так как результатом вычисления в подпрограмме являются две величины - сумма и произведение, то здесь необходимо использовать процедуру.

Рис. E Схема алгоритма для примера 11

 

Program PPR;

VAR S1,S2,S3,P1,P2,P3:INTEGER;

Procedure SumPR(k:integer; VAR x,y: integer)

VAR i: integer;




Поделиться с друзьями:


Дата добавления: 2014-01-06; Просмотров: 434; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.008 сек.