Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LN15_16 процедури !!!.DOC
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
86.53 Кб
Скачать

2) Параметр-змінна:

var <ідентифікатор>:<тип> - змінене в середені програми значення цього параметру повертається до блоку, що викликає функцію.

3) Нетипізовані параметри-змінні

var <ідентифікатор> - таке описування формального параметру дозволяє виконати посилання на змінну будьякого типу. При цьому тип змінної відсутній, тобто не співпадає ні з жодним із типів до операції приведення типів.

<тип> - в заголовку безпосередньо може бути визначенийтільки простий тип. Будьякий стуктурований тип визначається тільки через ідентифікатор типу.

Приклад:

неприпустимо: function f(а,в:array[1..10] of real):integer;

повинно бути: type t=array[1..10] of real;

function f(а,в:t):integer;

але для окремого елементу:

function f1(а,в:real):boolean;

begin

if a>b then f1:=true

else f1:=false;

end;

{виклик для і-тих елементів масивів}

writeln(f1(a[i],b[i]));

Приклад: возведення у цілий степінь

var a:real;

function power(factor:real;expo:integer):real;

var count:integer;

rez:real;

begin

if expo=0 then power:=1

else begin

rez:=factor;

for count:=2 to abs(expo) do

rez:= rez*factor;

if expo<0 then power:=1/rez

else power:=rez

end

end;

{ головна програма }

begin

:

{обчислити x=2a**5+a**3+1}

x:=2*power(а,5)+power(a,3)+1;

:

end.

Приклад: функція повертає номер символа, з якого починається n-те входження підрядка subs у рядок s. Одночасово повертається загальне число входжень count. При невдалому пошуку повертається значення 0.

program example;

var c:byte; { загальне число входжень підрядка у рядок }

function posN(subs,s:string;n:byte;var count:byte):byte;

var p,pn:byte;

begin

count:=0;

pn:=0;

repeat

p:=pos(subs,s);

if count<n then inc(pn,p);

inc(count);

delete(s,1,p);

until p=0;

dec(count);

if N<=count then posN:=pn

else posN:=0;

end;

{ головна програма }

begin

writeln('3-я позиція noo у Boonoonoonoos починається з символа',

PosN('noo','Boonoonoonoos',3,С):3);

writeln(' Всього знайдено входжень:',С);

readln;

end.

Приклад: розробити функцію, що обчислює кількість елементів в одновимірному масиві, що перевищують надане Р, та змінює їх на 0.

Program help;

Type vec=array[1..50] of real;

Var v:vec;

I,n:byte;

P:real;

Function sump(n:byte;var a:vec):byte;

Var i,s:byte;

Begin

S:=0;

For i:=1 to n do

If a[i]>p then begin

S:=s+1;

A[i]:=0;

End;

Sump:=s;

End;

Begin

{введення елементів масиву}

REPEAT

WRITE('Введіть вимірність масиву <=100');

READLN(n);

UNTIL n<=100

WRITELN('Введіть ',n,'елементів масиву');

FOR i:=1 TO n DO READLN(v[i]);

{виведення кількості елементів, що перевищують надане значення}

writeln(‘кількість елементів = ’,sump(n,v));

{виведення нового вектору}

for i:=1 to n do

writeln(v[i]:5:1);

end.

Правила локалізації

  1. Ідентифікатор визначено тільки в межах блоку, в якому його описано.

  2. Один і той самий ідентифікатор може бути по-різному визначено в різних блоках.

  3. Якщо у операторі використовується ідентифікатор, що був описаний у ряді вкладених блоків, то він інтерпретується у відповідності до описування самого внутрішнього із вкладених блоків, що містить наданий оператор.

  4. На рівні блока ідентифікатор може бути описаний тільки один раз.

П риклад program ident_interp;

var i: char;

f unction first;

var i:boolean;

function second;

var i:longint;

function third;

var i:real;

begin

:

i:=0.5; 4 3 2 1

:

end;

begin

:

i:=348;

:

end;

begin

:

i:=false;

:

end;

begin

:

i:=’r’;

:

end.

Аналогічно при вкладеному виклику процедур чи функцій

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]