русс | укр

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

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


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


Процедури


Дата додавання: 2014-11-27; переглядів: 905.


 

 

Приклади операторів процедури:

Picture;

Power(( a + b )/2, 3, degree, root );

Integral ( 0, P/2, 1E-6, SUMMA);

 

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

 

Приклад 5.1. Розглянемо заголовок процедури і оператор цієї процедури:

Procedure Integral ( a, b, eps: real; var s: real );

Integral ( -Pi/2, Pi/2, 1E-6, summa );

 

Відповідність:

Формальний параметрФактичний параметр

Значення а Вираз -Рі/2

Значення b Вираз Рі/2

Значення eps Дане 1Е-6

Змінна s Змінна Summa

 

Як було вказано вище, параметри бувають 2-х видів: параметри-значення і параметри-змінні. Якщо перед описанням параметрів ніякого службового слова немає, мова йде про параметри-значення. Перед описанням параметрів-змінних ставиться службове слово var. При зверненні до процедури (в процесі виконання оператора процедури) формальним параметрам-значенням присвоюються значення відповідних фактичних параметрів, а замість імен формальних параметрів-змінних підставляються відповідні фактичні параметри – імена змінних, а потім виконується підпрограма, що описана процедурою.

Якщо х1, х2, ..., хn – фактичні параметри-змінні, відповідні формальним параметрам-змінним v1, ... , vn, то x1, x2, ..., xn повинні бути різними. Фактичними параметрами-значеннями можуть бути вирази або дані відповідних типів.

Розглянемо приклад:

 

Приклад 5.2. Програма обчислює координати точки (x0, y0) при послідовних поворотах і паралельних переносах системи координат.

 

Program Coordinates;

Const

Pi = 3.141592;

Var

Alfa, Beta : Real;

x0, y0, x1, y1, x2, y2 : Real;

x, y : Real;

Procedure Rotate(x, y, Fi: Real; var u, v: Real );

var

cosFi, sinFi : Real; { локальні змінні }

begin

Fi := Fi*Pi/180 ;

cosFi := Cos(Fi); sinFi := Sin(Fi);

{ параметри x, y захищені від глобальних змінних x, y }

u := x * cosFi - y * sinFi ;

v := x * sinFi + y * cosFi

end ;

Procedure Move(x, y, a, b : Real; var u, v: Real);

begin

u := x + a ;

v := y + b

end;

begin

Read (x0, y0);

Read (Alfa);

Rotate(x0, f0, alfa, x, y);

Read (x1, y1);

Move(x, y, x1, y1, x, y);

Read (Beta);

Rotate(x, y, Beta, x, y);

Read ( x2, y2 );

Move(x, y, x2, y2, x, y);

Writeln (‘================================’);

Writeln (‘абсциса точки : ‘, х);

Writeln (‘ордината точки : ‘, y);

end.

 

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

Нехай, наприклад, змінна A типу Sequence - масив з 1000 дійсних чисел і

Procedure MaxMin(X : Sequence; var Max, Min : Real)

- пошук максимального і мінімального елементів масиву X. Тоді при зверненні до процедури MaxMin за допомогою оператора MaxMin(A, Sup, Inf) компілятор виділить пам’ять (6 - 10 байт на кожний елемент масиву - всього 6000 - 10000 байт ) і здійснить 1000 пересилань чисел з A в X. Якщо ж параметр X визначити як параметр-змінну:

Procedure MaxMin(var X : Sequence; var Max, Min : Real)

ні пам’яті, ні пересилань не знадобиться.

5.4. Функції

Поряд із стандартними функціями, у мові можна визначити і інші необхідні програмі функції. Функція – це підпрограма, що визначає одне - єдине скалярне або посилальне значення, що використовується при обчисленні виразу. Описання функції має, по суті, такий самий вид, як і описання процедури. Різниця тільки у заголовку, який має вид:

Function < ім’я > : < тип результату > ;

або

Function < ім’я > (<описи аргументів (параметрів)>): < тип результату>;

 

Синтаксична діаграма заголовка функції:

 

 
 

 

 



<== попередня лекція | наступна лекція ==>
Процедури | Функції


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