Студопедия

КАТЕГОРИИ:


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

Begin

Begin

End.

Begin

for i:=1 to k do

readln (z[i]);

end;

Procedure max(z:Vect; k:integer; var mx:integer); {описание процедуры max }

var i:integer;

begin mx:=z[1];

for i:=2 to k do

if mx<z[i] then mx:=z[i];

end;

Begin {исполняемая часть программы}

writeln (‘ввод массива х из 10 элементов’);

Vvod(x,n);

 

writeln (‘ввод массива y из 20 элементов’);

Vvod(y,m);

 

writeln (‘ввод массива z из 30 элементов’);

Vvod(z,r);

 

max(x, n, s1);

max(y, m, s2);

max(z, r, s3);

s:=(s1+s2+s3)/3;

writeln (‘среднее=’, s:10:3);

readln;

 

Пример 2. Дан двумерный массив (матрица) размера m*n. Упорядочить элементы каждой строки этого массива в порядке возрастания, применить для этого алгоритм сортировки выбором в виде процедуры.

 


Program Poriadok;

const m=5; n=10; {5 строк, 10 столбцов }

type matrica=array[1..m,1..n] of integer;

mas=array[1..n] of integer;

var a:matrica;

b:mas; { b – строка матрицы – массив длины n }

i, j: integer;

procedure Vvod(var x:matrica); {описание процедуры матричного ввода}

var i, j: integer;

for i:=1 to m do

begin for j:=1 to n do

read (x[i,j]);

readln;

end;

end;

procedure Select(var y:mas); {описание процедуры сортировки}

var i, j, c, k: integer; {y – формальный параметр, строка}

for j:=1 to n-1 do

begin c:=y[j];

k:=j;

for i:=j+1 to n do

if c>y[i] then k:=i;

c:=y[i];

y[j]:=y[k];

y[k]:=c;

end;

end;

Begin {раздел операторов}

writeln (‘ввод матрицы’);

Vvod(a);

for i:=1 to m do {блок обработки матрицы}

for j:=1 to n do

b[j]:=a[i,j]; {берем строку b из матрицы}

Select(b);

for j:=1 to n do

a[i,j]:=b[j]; {возвращаем отсортированную строку в матрицу а}

end;

writeln (‘получена матрица’); {матричный вывод матрицы а}

for i:=1 to m do

for j:=1 to n do write (a[i,j],’_’);

writeln;

end;

readln;

Имена, описанные в теле процедуры (это i, j –в процедуре Vvod; i, j, c, k –в процедуре Select)-называются локальными параметрами, областью их действия является только тело процедуры, в которой они описаны. Если одно и то же имя (например, i, j) описано и в основной программе, и в теле процедуры, то эти имена воспринимаются компилятором, как совершенно различные, т.к. имя, описанное в основной программе отменяется для процедуры, где оно повторно описано. Хотя в основной программе (блоке обработки) вызов процедуры происходит в теле цикла по i и j, а процедура Select сама содержит циклы по i и j, однако никакой ошибки не возникает, т.к. эти переменные хранятся в различных местах памяти.

Если имя описано в основной программе, а в процедуре используется без описания, то такой параметр называется глобальным (такими являются n, m в процедуре Vvod и параметр n в процедуре Select). Областью действия таких параметров является как программа, так и тело процедуры.

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




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


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


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



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




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