Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2_teoria+zavd_masiv+pidprogram.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
391.68 Кб
Скачать

Програмування з використанням функцій і процедур

Функцією називається певним чином оформлений фрагмент програми, що має власне ім'я і використовуються для обчислення одного значення, яке присвоюється імені функції

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

У заголовку функції за ключовим словом Function (функція) вказується її ім'я, а в дужках – список формальних параметрів із вказанням їх типів. Остаточний результат присвоюється імені функції в кінці тіла функції.

Загальна структура запису функції

Function f( : ; : ;...):t;

<Розділ визначень і описів локальних параметрів і підпрограм>

begin

<тіло функції>;

f:= <вираз>

end;

де   f – ім'я функції;

– імена формальних параметрів;

– типи формальних параметрів;

t – тип імені функції.

<вираз> – довільний вираз TurboPascal.

Звернення до функції в програмі здійснюється в правій частині оператора присвоєння

y := f( ,...)

де

y  – довільна змінна ТurboРascal;

f  – ім'я функції;

 – фактичні параметри, які відповідають формальним за кількістю, типом, місцем розташування.

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

Для обміну інформацією між основною програмою і процедурою використовується один чи кілька параметрів виклику.

Процедура визначається в розділі опису процедур. Опис процедури включає в себе заголовок процедури, розділи описів, тіло процедури. В заголовку процедури за ключовим словом Procedure (процедура) вказується ім'я процедури, а в дужках – список формальних параметрів. Деякі з цих параметрів призначені для передачі даних в процедуру (вхідні параметри), інші – для одержання результатів з процедури (вихідні параметри). Для того, щоб у процедурі відрізнити вхідні параметри від вихідних, перед кожним вихідним параметром пишеться службове слово var). Ці параметри використовуються тільки в тілі процедури і локальні по відношенню до неї.

Загальна структура запису процедури

Procedure f(var q1:t1; q2:t2;...);

<розділи визначень і описів локальних

параметрів і підпрограм>

begin

<тіло процедури>;

end;

де f –  ім'я процедури;

 –  імена формальних параметрів;

ti – типи формальних параметрів.

Звернення до процедури здійснюється оператором процедури

f( ,...),

де – фактичні параметри, які відповідають формальним за кількістю, типом, місцем розташування.

У тих випадках, коли в процедурі і основній програмі використовуються одні й ті ж імена параметрів (глобальні змінні), процедуру можна організувати без параметрів.

Приклади розвязування задач

Програмування алгоритмів циклічної структури з використанням одновимірних масивів

Приклад. Знайти суму двох одновимірних масивів дійсних чисел А(30) і В(30).

Pascal-програма розвязку задачі.

program zavd5; {алгоритм сумування двох одновимірних масивів}

var a,b,c:array[1..n] of real;

i,n: integer;

begin

writeln('введіть кількість елементів масиву');

readln(n);

writeln('введіть значення елементів масиву А');

for i:=1 to n do read(a[i]);

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

for i:=1 to n do read(B[i]);

write('Масив C:');

writeln;

for i:=1 to n do

begin

c[i]:=a[i]+b[i];

write(' ',c[i]:8:4);

end;

end.

Програмування алгоритмів циклічної структури з використанням двовимірних масивів.

Приклад. Знайти три найменші елементи матриці цілих чисел А(6,6).

Pascal-програма розвязку задачі.

PROGRAM zavd6; {алгоритм знаходження трьох найменших елементів двовимірного масиву}

const n=6;m=6;

var r:array[1..n,1..m] of integer;

i,j,s,K,L,min:integer;

BEGIN

for i:=1 to n do

for j:=1 to m do

r[i,j]:=round(100-random*46);

writeln(' ZADANA MATR.:');

for i:=1 to n do begin

for j:=1 to m do

write(' ',r[i,j]); writeln

end;

for s:=1 to 3 do

begin

min:=r[1,1]; K:=1; L:=1;

for i:=1 to n do

for j:=1 to m do if r[i,j]<min then

begin

min:=r[i,j];

K:=i;

L:=j

end;

writeln('min=',min);

r[K,L]:=100;

end

END.

Є багато інших способів розв’язування даної задачі, серед них, наприклад, – сортування масиву за зростанням і вибір трьох перших елементів.

Програмування з використанням функцій.

Приклад. Задані натуральне ціле число n і масив дійсних чисел

.

Обчислити: ,

де , , .

Pascal-програма розвязку задачі.

Program zavd_7_1;

const n=3; nm=9;

type index=1..nm;

mas=array[index] of integer;

var b:mas; I,x1,x2,x3: integer; y:real;

FUNCTION F(a:mas;z:integer; nn:index): integer;

var p.j:integer;

begin {розділ операторів функції}

p:=0;

for j:=z to nn do p:=p+a[j];

f:=p

end; {кінець опису функції}

begin {розділ операторів програми}

writeln (‘введіть масив b’);

for i:=1 to nm do read(b[I]); writeln;

x1:=F(b,1,n);

x2:=F(b,n+1,2*n);

x3:=F(b,2*n+1,3*n);

writeln(‘x1=’,x1; ‘x2=’,x2; ‘x3=’,x3);

y:=(exp(1/3*ln(x))+3*x1*x3-sqr(x2))/(sqr(x1+x2+x3);

writeln(‘y=’,y:6:2)

end. {кінець програми}

Приклад. Обчислити вираз: ;

для заданих значень a та b.

Pascal-програма розвязку задачі.

program zavd_7_2;

var a,b,z,t1,t2,t3: real;

function sh(x:real):real; {опис функції}

begin {розділ операторів функції}

sh:=(exp(x)-exp(-x))/2;

end; {кінець опису функції}

begin {розділ операторів програми}

read(a,b);

t1:=sh(a);

t2:=sh(a+b);

t3:= sh(a*a+b*b);

z:=(sqr(t1)+t2)/(t1+sqrt(t3));

write('z=',z:8:4)

end. {кінець програми}

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

Попeредня програма з використанням процедури може мати вигляд:

program zavd_8;

var a,b,z,t1,t2,t3: real;

procedure sh(x:real; var R:real);

begin

R:=(exp(x)-exp(-x))/2;

end;

begin

read(a,b);

sh(a,t1);

sh(a+b,t2);

sh(a*a+b*b,t3);

z:=(sqr(t1)+t2)/(t1+sqrt(t3));

write('z=',z:8:4)

end.

Приклад. Знайти середнє арифметичне додатних елементів кожного рядка матриці дійсних чисел М(5х5).

Pascal-програма розвязку задачі.

Program zavd_9; {знаходження середнього арифметичного кожного рядка матриці}

uses crt;

const n=5; m=5;

var m: array [1..n,1..m] of real;

f,sa1,sa2,sa3,sa4,sa5:real;

i,j:integer;

procedure ser_ar(l:integer; var sa:real);

var k:integer;

s:real;

begin

k:=0;s:=0;

for i:=1 to m do

if m[l,i]>0 then

begin s:=s+m[l,i];

k:=k+1;

end;

sa:=s/k;

end;

BEGIN

clrscr;

for i:=1 to n do

begin

for j:=1 to m do

begin

m[i,j]:=random*(i/5 - j/8);

write (m[i,j]:8:3);

end;

writeln;

end;

ser_ar(1,sa1);

ser_ar(2,sa2);

ser_ar(3,sa3);

ser_ar(4,sa4);

ser_ar(5,sa5);

writeln(' sa1=',sa1:8:6,' sa2=',sa2:8:6,' sa3=',sa3:8:6);

writeln(' sa4=',sa4:8:6,' sa5=',sa5:8:6);

END.

Приклад. Задано масиви цілих чисел Х(23), У(15). Знайти суму та кількість додатних елементів кожного масиву.

Pascal-програма розвязку задачі.

program zavd_10;

{знаходження суми та кількості додатних елементів масивів}

uses crt;

const n=25;

type index=1..n;

mas=array[index] of integer;

var x,y:mas;

i,sx,sy,kx,ky:integer;

z:real;

PROCEDURE S_K(m:mas;k:integer; var sm,km:integer);

var j:integer;

begin

sm:=0; km:=0;

for j:=1 to k do if m[j]>0 then

begin

sm:=sm+m[j]; km:=km+1

end;

end;

begin clrscr;

for i:=1 to 23 do x[i]:=20-round(10*random);

writeln('X:');

for i:=1 to 23 do write(' ',x[i]); writeln;

s_k(x,23,sx,kx);

writeln('sx=',sx,' kx=',kx);

for i:=1 to 15 do y[i]:=round(30*random);

writeln('Y:');

for i:=1 to 15 do write(' ',y[i]); writeln;

s_k(y,15,sy,ky);

writeln('sy=',sy,' ky=',ky);

z:=(sx+sy)/(kx*ky);

writeln('z=',z:6:2)

end.

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