Підпрограми (процедури і функції)
Підпрограмою – називається найменована логічно закінчена група вказівок, яку можна викликати для виконання довільну кількість раз з різних місць програми. Процедура – це незалежна найменована частина програми, призначена для виконання конкретних дій. Процедура складається із заголовка і тіла. Формат запису процедури: Procedure ; ; Використання процедур дає можливість підвищити продуктивність праці, зробити програму більш наочною, спростити розробку програми,...
Так, наприклад, програма знаходження об'єму конуса може містити декілька процедур: 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.
У процедурі можна оголошувати константи, змінні, інші процедури та функції. Розділ опису в процедурах має таку саму структуру, як і в основній програмі. Оголошенні всередині процедури змінні називаються локальними по відношенню до даної процедури. Локальні змінні не можуть бути доступні поза межами даної процедури. Змінні, які використовуються в процедурі, але описанні поза нею, називаються глобальними по відношенню до даної процедури. Будь-які зміни глобальних змінних всередині процедури змінюють значення цих змінних поза процедурою. 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.
Після заголовка процедури в круглих дужках можуть вказуватись змінні (з допомогою яких в процедуру передаються дані) і їх типи, які називаються параметрами- значеннями. Змінні, які описанні в заголовку процедури є формальними параметрами. Змінні або константи, які описанні у вказівці процедури є фактичними параметрами. 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.
Для того, щоб процедура змогла змінювати значення фактичних параметрів, потрібно змінити спосіб передачі параметрів в процедуру. Цей спосіб називається передачею по імені (змінні називаються параметрами-змінними). Задача. Дано дві трійки чисел: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); Begin MAX:=A; If MAX<B then MAX:=B; If MAX<C then MAX:=C; end; Begin write(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.
Якщо результатом виконання деякої процедури є одне скалярне значення, то цю процедуру бажано оформити як функцію. Формат опису функції: 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.