- •1 Виділення слів у текстових файлах
- •1.1 Підготовка до лабораторної роботи
- •Теоретичні відомості
- •Варіанти завдань
- •1.4 Контрольні питання
- •2 Комбінований тип даних
- •2.1 Підготовка до лабораторної роботи
- •2.2 Теоретичні відомості
- •2.3 Варіанти завдань
- •2.4 Контрольні питання
- •3 Сортування масивів комбінованого типу даних
- •3.1 Підготовка до лабораторної роботи
- •3.2 Теоретичні відомості
- •3.3 Варіанти завдань
- •3.4 Контрольні питання
- •4 Підпрограми-процедури
- •4.1 Підготовка до лабораторної роботи
- •4.2 Теоретичні відомості
- •4.3 Варіанти завдань
- •4.4 Контрольні питання
- •5 Підпрограми-функції
- •5.1 Підготовка до лабораторної роботи
- •5.2 Теоретичні відомості
- •5.3 Варіанти завдань
- •Контрольні питання
- •6 Організація односпрямованого списку
- •6.1 Підготовка до лабораторної роботи
- •6.2 Теоретичні відомості
- •6.3 Варіанти завдань
- •6.4 Контрольні питання
- •7 Обробка матриць у середовищі lazarus
- •7.1 Теоретичні відомості
- •7.2 Варіанти завдань
- •7.3 Контрольні питання
- •Перелік посилань
4.4 Контрольні питання
Коли доцільно використовувати підпрограми?
Перерахуйте відмінності функцій від процедур.
Що таке локальні та глобальні змінні?
З чого складаються і де розташовані описи підпрограм?
Як викликаються процедури?
Назвіть способи передачі параметрів у підпрограму.
Як узгоджуються формальні і фактичні параметри?
Чи може бути заданий фактичний параметр константою?
5 Підпрограми-функції
Мета роботи - оволодіння навичками написання підпрограм-функцій та звернення до них.
5.1 Підготовка до лабораторної роботи
При підготовці до лабораторної роботи необхідно ознайомитися з особливостями передачі результату функції в основну програму і виклику функцій.
5.2 Теоретичні відомості
Особливістю використання функцій є те, що результатом її роботи є тільки один результат, в той час, як процедура може повертати одне, декілька або жодного значення.
Загальний вигляд запису функції:
Function <ім'я> (<список формальних параметрів>): <тип функції>; <розділи описів і оголошень функції>; begin <розділ операторів функції, де повинен бути оператор: ім'я: = вираз> end; |
Виклик функції здійснюється тільки з виразів операторів основної програми за допомогою покажчика функції. Не існує спеціального оператора звернення до функції. Зазвичай таке звернення проводиться за допомогою іншого оператора, часто оператора присвоювання.
У заголовку функції додається визначення типу результату, a в тілі функції ім'я функції має зустрітися в лівій частині оператора присвоювання.
FUNCTION F(S1:T1;S2:T2):T;
< описова частина >
BEGIN
. . .
F:=< вираз >
END;
де F- ім'я функції;
S1,S2 - імена формальних параметрів;
T1,T2 - типи параметрів;
T- тип функції.
При виклику ім'я функції разом з фактичними параметрами використовується у вирази. Наприклад, у правій частині оператора присвоювання К: = F (A, B), операторі виведення - WRITELN (F (A, B)) або в умовному операторі – IF F(A,B)> 0 THEN …
Приклад. Знайти cуму елементів квадратної матриці A (n, n).
Програма має вигляд:
PROGRAM LAB;
TYPE
AR=ARRAY[1..10,1..10] OF INTEGER;
VAR
A:AR; {массив А}
N: INTEGER; { }
{функція обчислення суми }
FUNCTION SUM(B:AR; M: INTEGER): INTEGER;
VAR
K, L: INTEGER; {індекси рядків, стовпців }
P: INTEGER; { сума }
BEGIN
P:=0; {початкове значення результату }
FOR K:=1 TO M DO
FOR L:=1 TO M DO
P:=P+B[K,L];
SUM:=P
END; { PR }
PROCEDURE VVOD(VAR B:AR; VAR M: INTEGER);
VAR
K, L: INTEGER; {індекси рядків, стовпців }
BEGIN
WRITELN(‘Введіть розмірність матриці’);
READLN(M);
FOR K:=1 TO M DO
FOR L:=1 TO M DO
B[K,L]:= RANDOM(20)-10;
END;
PROCEDURE OUT(CONST B:AR; M: INTEGER);
VAR
K, L: INTEGER; {індекси рядків, стовпців }
BEGIN
FOR K:=1 TO M DO
BEGIN
FOR L:=1 TO M DO
WRITE (B[K,L]:4);
WRITELN;
END;
END;
{ головна програма }
BEGIN
VVOD(A, N);
OUT(A, N);
WRITELN(‘ P=‘,PR(A,N):3); {вивід результату множення }
END.
