підпрограми (процедури і функції) 7

7

Click here to load reader

Upload: zero1996

Post on 17-Jun-2015

27 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: підпрограми (процедури і функції) 7

Підпрограми (процедури і Підпрограми (процедури і функції)функції)

Page 2: підпрограми (процедури і функції) 7

Підпрограмою – називається найменована логічно закінчена група вказівок, яку можна викликати для виконання довільну кількість раз з

різних місць програми.

Процедура – це незалежна найменована частина програми, призначена для виконання конкретних дій.

Процедура складається із заголовка і тіла.

Формат запису процедури:Procedure <ім'я процедури>;

<тіло процедури >;Використання процедур дає можливість підвищити

продуктивність праці, зробити програму більш наочною, спростити розробку програми,...

Page 3: підпрограми (процедури і функції) 7

Так, наприклад, програма знаходження об'єму конуса може містити декілька процедур:

• procedure InputDate;• procedure Vkazivka;• procedure OutputDate;procedure InputDate виконує

введення даних в програму.procedure Vkazivka виконує вказівки

для знаходження об'єму конуса.procedure OutputDate виконує

виведення даних на дисплей.

Наприклад. Задача. Скласти програму знаходження об'єму конуса.

Program Vkonus;

Const p=3.14;

Var R,H,V:real;

procedure InputDate;

Begin write(‘r=’);

Readln (R);

write(‘h=’);

Readln (H); end;

procedure Vkazivka;

Begin V:=p*sqr(R)*H/3; end;

procedure OutputDate;

Begin writeln (‘V=’,V); end;

Begin {Основна програма}

InputDate;

Vkazivka;

OutputDate;

End.

Page 4: підпрограми (процедури і функції) 7

У процедурі можна оголошувати константи, змінні, інші процедури та функції. Розділ опису в процедурах має таку саму структуру, як і в основній програмі.

Оголошенні всередині процедури змінні називаються локальними по відношенню до даної процедури. Локальні змінні не можуть бути доступні поза межами даної процедури.

Змінні, які використовуються в процедурі, але описанні поза нею, називаються глобальними по відношенню до даної процедури. Будь-які зміни глобальних змінних всередині процедури змінюють значення цих змінних поза процедурою.

Program Lokalizacia;

Var A,B:real;

procedure Lokal;

Var A,X:char;

Begin

A:=‘:’;

X:=‘?’;

B:=B+1;

end;

Begin {Основна програма}

A:=0;

B:=100;

Lokal;

Writeln (‘a=‘,A,’b+’,B);

End.

Page 5: підпрограми (процедури і функції) 7

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

Program Perrymetr;

Var C,D:integer;

procedure PARAM(A,B:integer);

Var S:integer;

Begin

S:=0;

S:=A+B;

Writeln (‘s=’,S);

end;

Begin {Основна програма}

C:=10; {1-й спосіб}

D:=100;

PARAM(C,D);

PARAM(100,100); {2-й спосіб}

End.

Page 6: підпрограми (процедури і функції) 7

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

Задача. Дано дві трійки чисел:A1,B1,C1,A2,B2,C2. Знайти значення сум:S1=min(A1,B1,C1)+min(A2,B2,C2)S2=max(A1,B1,C1)+max(A2,B2,C2)

Program Priklad;Var A1,B1,C1,A2,B2,C2,MIN1,MAX1,MIN2,MAX2,S1,S2:real;Procedure MinMax(A,B,C:real; var MIN,MAX:real);BeginMAX:=A;If MAX<B then MAX:=B;If MAX<C then MAX:=C; end;Beginwrite(‘A1=’); Readln (A1); write(‘B1=’); Readln (B1); write(‘C1=’); Readln (C1);write(‘A2=’); Readln (A2); write(‘B2=’); Readln (B2); write(‘C2=’); Readln (C2);MinMax(A1,B1,C1,MIN1,MAX1);MinMax(A2,B2,C2,MIN2,MAX2);S1:=MIN1+MIN2;S2:=MAX1+MAX2; Writeln (‘S1=’); writeln (‘S2=’);End.

Page 7: підпрограми (процедури і функції) 7

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

Формат опису функції:

Function <ім'я функції>(список формальних параметрів):<тип результату>;

Задача.

Знайти значення числа комбінацій n!

C=n!/m!(n-m)!

Program Kombinacij;

Var N,M,C:integer;

function FACT(K:integer):integer;

Var i,F:integer;

Begin F:=1;

For i:=1 to K do F:=F+i;

FACT:=F; end;

Begin {Основна програма}

Begin write(‘n=’);

Readln (N);

write(‘m=’);

Readln (M);

C:= FACT(N)div(FACT(M)* FACT(N-M));

Writeln(‘Кількість комбінацій з ‘,n,’по ‘,m,’=’,C);

End.