WWW.REFERATCENTRAL.ORG.UA - Я ТУТ НАВЧАЮСЬ

... відкритий, безкоштовний архів рефератів, курсових, дипломних робіт

ГоловнаІнформатика, Компютерні науки → Програмування допоміжних алгоритмів(пошукова робота) - Реферат

Програмування допоміжних алгоритмів(пошукова робота) - Реферат

функції}
end;
Як і процедури, функції можуть бути оголошені як forward.
Як зазначалось раніше, оголошення процедури або функції містить список формальних параметрів. Кожний параметр, оголошений у списку формальних параметрів, є локальним стосовно оголошеної процедури або функції, на нього можна зробити посилання лише в блоці, пов'язаному з даною процедурою або функцією.
Існує три види параметрів: значення, змінна і нетипізована змінна. Вони характеризуються таким чином:
" група параметрів без попереднього ключового слова var і з наступним за нею типом є списком параметрів-значень;
" група параметрів з попереднім ключовим словом var і наступним за неютипом є списком параметрів-змінних;
" група параметрів з попереднім їй ключовим словом var і без наступного за нею типу є списком нетипізованих параметрів-змінних.
ПРИКЛАДИ:
procedure example(x:integer; var a,b:real; var s,t)
В даному випадку параметр x є параметром-значенням, a та b є параметрами-змінними, а змінні s іt є не типізованими параметрами-змінними.
Формальний параметр-значення діє як змінна, локальна стосовно процедури або функції. Вона одержує своє вихідне значення з відповідного фактичного параметра при активізації процедури або функції. Тому зміна значення формального параметра не впливає на значення фактичного параметра.
Якщо формальний параметр оголошений, як параметр-значення, то при викликові процедури створюється нова змінна, якій передається значення відповідного фактичного параметра, заданого при викликові процедури. Після завершення роботи процедури значення цього параметру не запам'ятовується, оскільки параметр має локальне значення. Тому параметри-значення можуть використовуватись лише для передачі вихідних даних в процедуру. Результатом роботи процедури такі параметри бути не можуть, тому що він не буде запам'ятовуватись.
Якщо формальний параметр оголошений як параметр-змінна, то при викликові процедури замість формального параметру буде підставлятись ім'я відповідного фактичного параметру. Саме тому такі параметри використовуються для результатів роботи процедури.
ПРИКЛАД:
Нехай оголошена процедура sum(x,y:integer; var z:integer)
Нехай виклик процедури має вигляд sum(a,b,c). В такому випадку будуть створені нові змінні x та y, які одержать значення змінних a та b відповідно. А замість змінної z буде підставлена змінна c.
Фактичний параметр, що відповідає параметру-значенню в операторі процедури або виклику функції може бути змінною, константою або виразом. Він повинний бути сумісний по присвоюванню з типом формального параметра-значення. Якщо типом параметра є String, то формальний параметр повинен мати атрибут розміру, рівний 255.
Фактичний параметр, що відповідає параметру-змінній, може бути лише змінною. Усередині процедури або функції будь-яке посилання на формальний параметр-змінну дає доступ до самого фактичного параметра. Тип фактичного параметра повинний бути тотожний типу формального параметра-змінної (можна обминути це обмеження через нетипізовані параметри-змінні). Якщо типом формального параметра є тип String, то задається атрибут довжини, рівний 255, і фактичний параметр-змінна повинний мати рядковий тип з атрибутом довжини, рівним 255.
Якщо посилання на фактичний параметр-змінну пов'язано з індексуванням масиву або перебуванням об'єкта по його покажчику, то ці дії виконуються до активізації процедури або функції.
Коли формальний параметр є нетипізованим параметром-змінною, відповідний фактичний параметр може бути довільним посиланням на змінну незалежно від її типу.
Усередині процедури або функції нетипізований параметр-змінна не має типу, тобто він не сумісний зі змінними всіх інших типів, якщо йому не присвоєний визначений тип за допомогою приведення типу змінної.
ПРИКЛАД: використання нетипізованих параметрів-змінних:
program example;
const n=10;
type massiv=array[1..n] of integer;
var x:massiv;
y,i:integer;
function sum(var a:array of integer):integer;
{Параметр а оголошений як нетипізований масив}
var s,i,k,m:integer;
begin
s:=0;
k:=low(a);
m:=high(a);
{Змінні k та m визначають верхню та нижню межу індексів масиву}
for i:=k to m do s:=s+a[i];
sum:=s;
end;
begin
for i:=1 to n do x[i]:=random(10);
y:=sum(x);
writeln('y=',y);
end.
Узагальнення по темі.
Мова ПАСКАЛЬ дозволяє користувачеві створювати власні допоміжні алгоритми. Розрізняють два види алгоритмів: процедури-оператори (далі просто процедури) та процедури-функції (далі просто функції). Вони дозволяють включати в основний програмний блок додаткові блоки команд. Процедура активізується за допомогою оператора процедури. Функція активізується при обчисленні виразу, що містить виклик цієї функції.
Блок опису процедур та функції не має спеціального службового слова для свого початку. Цей блок завжди розташовується останнім в описовій частині програми і починається оголошенням відповідного допоміжного алгоритму.
Оголошення допоміжного алгоритму складається з таких частин:
" заголовка ;
" розділу описів ;
" операторної частини (тіла) .
Заголовок містить ім'я допоміжного алгоритму та список формальних параметрів. Для функції потрібно вказати тип імені цієї функції, тому що воно є результатом її роботи. Існує три види параметрів: значення, змінна і нетипізована змінна. Розділ оголошень містить список локальних об'єктів (типів, констант, змінних), які будуть використовуватись даним алгоритмом. Операторна частина містить набір операторів, які складають тіло допоміжного алгоритму. Для функції обов'язково потрібно вказати хоча б один оператор присвоювання, в лівій частині якого вказується ім'я функції, а в правій - вираз, який задає результат її роботи.
В деяких випадках потрібно при оголошенні деякої процедури або функції використати посилання на іншу процедуру або функцію , яка ще не була оголошена, але яка буде оголошена далі. В такому випадку використовують випереджальне оголошення.
Фактичними параметрами називаються ті параметри, які вказуються при викликові допоміжного алгоритму.
Loading...

 
 

Цікаве