КАТЕГОРИИ: Архитектура-(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) |
Использование массивов в процедурах
End. Begin Begin Особенность Оbject Pascal. End. Begin Begin Begin Else End Begin Begin If z>p then max:=z else max:=p; End; Begin {исполняемая часть программы} Writeln (‘ввод a, b, x’); Readln (a, b, x); If x>=0 then c:=max(a+b, a-b); d:=max(sqr(a), sqr(b)); { или y:=max(a+b, a-b)/max(sqr(a), sqr(b))+x; } y:=c/d+x; c:=max(a, b); { или y:=max(a, b)+x } y:=c+x; end; writeln (‘y=’, y:15:4); readln;
Пример 2. Вычислить функцию p=(∑ xi )*(∑ yi ) с использованием подпрограммы. Используем для вычисления сумм подпрограмму-функцию. Вопрос: сколько формальных параметров будет у функции? Какие фактические переменные и константы различаются в суммах? Это – 20, 25 и x, y. Обозначим их формальными r u z
Функция имеет 2 формальных параметра: z, r.
z, r→summ(z, r)= ∑ zi
Program Primer; var p, x, y:real; Function summ(z:real;r:integer):real; {описание подпрограммы функции} Var i:integer; s, a:real; s:=0; {должны накапливаться и сумма s, и произведение а} a:=1; for i:=1 to r do a:=a*z; s:=s+a; end; summ:=s; end; begin {основная часть программы} writeln (‘ввод x, y’); readln (x, y); p:=summ(x, 20)*summ(y, 25); writeln (‘p=’,p:10:3); readln; В описании функции summ используются 3 локальные переменные: s, a, i. Переменная s необходима, поскольку при подсчете суммы в цикле нельзя писать summ:=summ+a, т.к. происходит обращение к имени функции, которое находится внутри ее описания, поэтому нужно писать s:=s+a; а затем, в итоге, перед завершением описания функции присвоить имени summ:=s; В ОР для каждой функции автоматически определена локальная переменная Result того же типа, что и возвращаемые функцией значения. Эту переменную можно использовать в промежуточных вычислениях. Последнее присвоенное ее значение вернется как значение функции. Рассмотрим, как выглядит описание функции summ с использованием Result: Program Primer_Result; Var p, x, y:real; Function summ(z:real;r:integer):real; Var i:integer;a:real; result:=0; a:=1; for i:=1 to r do begin a:=a*z; result:=result+a; end; end; writeln (‘ввод x, y’); readln (x, y); p:=summ(x, 20)*summ(y, 25); writeln (‘p=’,p:10:3); readln; Имя массива может использоваться в списке формальных параметров процедуры. Типом любого параметра в списке формальных параметров процедуры может быть только стандартный или ранее объявленный тип. Поэтому нельзя, например, описать следующую процедуру в таком виде:
Procedure Sum(a: array[1..10] of integer; var f: array[1..20] of integer);- так Для передачи массива необходимо сначала описать его тип в разделе Type, а затем применить его в заголовке процедуры.
Type Mass = array[1..10] of integer; Func = array[1..20] of integer; Procedure sum (a: Mass; var f: Func);
Пример 1. Даны массивы вещественных чисел x1,...., x10 y1,...., y20 z1,...., z30 Определить среднее арифметическое их max элементов. Поиск max элемента в каждом массиве оформить как процедуру. Program Srednee; Const n=10; m=20; r=30; Type Vect=array[1.. r ] of integer;{ r – самый большой размер} Var x, y, z: Vect; s1, s2, s3: integer; s: real;
Procedure Vvod(var z:Vect; k:integer); {описание процедуры Vvod}
{ z –это массив, являющийся параметром-переменной. Будем вводить формальный массив z длины k. Отметим, что массив z – результат ввода, т.е. пишется со словом var.}
var i:integer;
Дата добавления: 2015-06-27; Просмотров: 638; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |