Студопедия

КАТЕГОРИИ:


Архитектура-(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;

    i:=1
    i:=1
end.

Пример 2. Вычислить функцию p=(∑ xi )*(∑ yi ) с использованием подпрограммы.

Используем для вычисления сумм подпрограмму-функцию.

Вопрос: сколько формальных параметров будет у функции?

Какие фактические переменные и константы различаются в суммах?

Это – 20, 25 и x, y.

Обозначим их формальными r u z


 

Функция имеет 2 формальных параметра: z, r.

r     i:=1
Имя функции – summ

 

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; Просмотров: 616; Нарушение авторских прав?; Мы поможем в написании вашей работы!


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



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




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