КАТЕГОРИИ: Архитектура-(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; Просмотров: 505; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |