русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Структура процедури.


Дата додавання: 2013-12-23; переглядів: 1445.


Процедури.

Підпрограми.

 

В програмуванні часто зустрічаються випадки, коли по ходу виконання програми треба виконувати одні і ті ж самі обчислення, але при різних вхідних даних. Щоб зробити програму легше та зрозуміліше, а також виключити повторення однакових операторів, виділяють ділянки, що повторюються в самостійну частину програми, яку можна використовувати багаторазово по мірі необхідності.

Автономна частина програми, яка реалізує визначений алгоритм і допускає звернення до неї із різних частин програми називається підпрограмою. Підпрограми оформлюються в вигляді замкнутих ділянок програми, що мають чітко визначений вхід та вихід. При цьому імена змінних в основній програмі і підпрограмах задані незалежно один від одного. Використання підпрограм дозволяє реалізувати один із самих прогресивних методів програмування - структурне програмування.

В мові Паскаль виділяють два вида підпрограм: процедуру та функцію. Будь-яка програма може включати в себе декілька процедур та функцій. Процедури та функції об'являються у розділі опису вслід за розділом опису змінних. Виконання програми починається з операторів основної програми. При необхідності викликається підпрограма і починають діяти її оператори. Потім управління передається в основну програму, яка продовжує виконуватися. Люба підпрограма може містити підпрограми.

 

Процедура — це програма, в якій результат являється необов'язково розрахованим значенням, в той час як обчислення функції завжди повинно виконуватися до кінця.

Приклад: вивести на друк зображення квадрату за допомогою трьох

операторів:

 

Writeln(‘***’);

Writeln(‘* *’);

Writeln(‘***’);

Program рr;

Procedure gv;

Веgіп

Writeln(‘***');

Writeln(‘* *');

Writeln(‘***');

End;

Ведіп

gv;

end.

Приклад: запишемо цю саму програму з об'явленням нових змінних..

Ргодгат рr;

Procedure gv;

Var і: integer;

{змінна і має зміст тільки в процедурі)

begin

for і: =1 to 3 do write ('*') ; writeln;

writeln('* *');

for i: =1 to 3 do write ('*') ;

end;

begin

gv;

end.

       
   


Заголовок;

Розділ опису;

Begin

Розділ операторів;

End;

       
   
 
 


Заголовок процедури являє собою службове слово procedure, далі йде його ім’я та параметри: procedure <ім'я> (параметри);

де параметри - це перелік імен для позначення вхідних даних і результатів роботи процедури з вказуванням їх типів.

Параметри, що перелічені у списку - формальні (можна параметри не описувати). Розділ опису складається з розділів міток, констант, типів, змінних, процедур та функцій.

Розділ операторів заключається в операторні дужки Begin та End. Викликається процедура по її імені за допомогою фактичних параметрів.

За допомогою формальних та фактичних параметрів дані передаються із процедури в програму і навпаки. Кожен формальний параметр вказується зі своїм типом, а відповідний йому фактичний параметр - без типу. Між формальними та фактичними параметрами повинна бути відповідність по кількості, їх типу та порядку слідування. Якщо декілька формальних параметрів мають однаковий тип, то їх можна записати через кому, а потім вказати тип, наприклад:

Procedure AK(A,B,C: integer); {А,В,С-формальні параметри}

........................................................................

AK(5,k, 13); {5, k, 13- фактичні параметри}

Приклад: оформити алгоритм обчислення у =x.

Procedure SS(x, n: integer; var у: integer );

Var I: integer;

Begin

У:=1;

For і: =1 to n do

Y:=y*x;

End;

 

Тут в заголовку задаються х, n — вхідні параметри; у — значення вихідних даних.

Тіло процедури складається з:

1) частини, що описується. В ній визначена змінна, яка має зміст тільки в середені процедури і називається локальною змінною;

2) оператора, що реалізує алгоритм обчислення степені цілого числа х з натуральним показником.

 

Приклад: Оформити алгоритм обчислення у=хбез параметрів.

Procedure ss;

Var і: integer;

Begin

У:=1;

For i:=1 to n do

Y:=y*x;

End;

 

В цьому прикладі процедура не містить списку формальних параметрів і працює з локальною змінною і, що описана у блоці процедури та із змінними х,у,n, які описані в основній програмі. В даному випадку х,у,п являються глобальними змінними по відношенню до процедури. Значення глобальних змінних доступні і можуть бути використані в любій точці основної програми.

 

Приклад: Знайти кількість від'ємних елементів в масивах А,В,С: А(1..10),В(1..8),С(1..6).

program prozl;

Type mas=array[l..10]of integer;

var a,b,c,r:mas;

nl,n2,n3,i: integer;

procedure ak (n: integer; var r:mas);

var k,i:integer;

begin

k:=0;

for i:=1 to n do

If r[i]<0 then k:=k+1;

write(k:2);

end;

begin

write ('Введіть кількість елементів масивів A,B,C’);

readln(nl,n2,n3);

writeln('Bвeдiть елементи для массиву А:’);

for і: =1 to n1 do read (A[i]);

writeln(Bвedimь елементи для массиву В:’);

for і: = 1 to n2 do read (В[і]);

writeln ('Введіть елементи для массиву С:’);

for і: =1 to пЗ do read (C[i]);

writeln('Kількість від'ємних елементів в масивах А,В,С:');

ak(nl ,a);

ak(n2,b) ;

ak(n3,c);

END.

 

Для локальних змінних дозволяється вибирати за бажанням любе ім'я. Ідентифікатор локальної змінної не здійснює ніякого впливу на інші частини програми. Якщо в процедуру треба передавати в якості параметру не просто одне значення, а масив, то фактичним параметром повинно бути ім'я масиву. При цьому формальний параметр вказується після слова Var разом з типом масива. Сам опис масиву здійснюється у розділі Туре основної програми.

 

Переваги використання процедур:

- Економить пам'ять;

- Можливість використання одних і тих самих змінних.

Приклад: Заповнити масив випадковими числами від -50 до 50.

 

Procedure init (var m:mas);

Var і: integer;

Begin

For i: =1 to n do

M[i]: =-50+random(c);

End;

 

Де с описано в const c=100. В основній програмі йде виклик randomize;

 


<== попередня лекція | наступна лекція ==>
Багатовимірний масив. | Параметри-значення та параметри-змінні.


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн