
- •Процедури та функції споживача
- •Блочна структура програми
- •Опис функціЇ
- •1) Параметр-значення:
- •2) Параметр-змінна:
- •3) Нетипізовані параметри-змінні
- •Правила локалізації
- •Рекурсивний виклик функцій та процедур
- •Перехрестна рекурсія
- •Процедури
- •Типізовані константи у процедурних блоках
- •Примусовий вихід із процедури чи функції
- •Завдання
Типізовані константи у процедурних блоках
Типізовані константи програми ініціалізуються (набувають початкових значень) один раз - на початку виконання програми і зберігаються як звичайні змінні у сегменті даних. Таким чином, якщо типізована константа визначена у процедурному блоці (процедура чи функція), тобто є локальною, то при повторному зверненні до цього блоку вона наново не ініціалізується, але зберігає значення, отримане при попередньому зверненні.(Можна використовувати дя накопичення значень чи зберігання флагів - умов та т. і)
Приклад
procedure my; I звернення II звернення
const i:integer=2; i=2 i=4
b:boolean=true; b=true b=false
begin
:
i:=i+2; i=4 i=6
b:=not b; b=false b=true
:
end.
Примусовий вихід із процедури чи функції
1) Процедура EXIT. Якщо зустрічається у тілі процедури чи функції, чи головної програми, то виконання цього блоку припиняється, керування надається блоку, що викликав поточний.
Для рекурсивних функцій - повернення на один рівень віще.
Якщо до моменту виходу із процедурного блоку змінним не надані значення, вони залишаться невизначенними.
2) Процедура HALT[(<код виходу>:word)];
Припиняє виконання програми та віддає керування операційній системі.
<код виходу> - значення, що повертається для подальшого аналізу операційною системою (за допомогою функції EXITCODE чи IF ERRORLEVEL - у пакетній обробці операційної системи DOS)
HALT без параметрів еквівалентно HALT (0) – нормальному завершенню програми.
Завдання
1. Знайти найбільший загальний дільник трьох натуральних чисел, використовуючи функцію пошуку загального дільника для двох чисел.
2. Для чотирьох чисел a, b, c, d знайти всі трійки, для яких можна побудувати трикутник, та визначити його площу. Використати функцію.
3. Описати логічну функцію search(s,ss,k,n), що превіряє, чи входить підрядок ss у рядок s починаючи з k-ї позиції та надає параметру n номер позиції знайденного у s підрядка.
Використати функцію для змінення у рялку s підрядка x на підрядок y.
4. Описати рекурсивну функцію, що перевіряє, чи є симетричною частина рядка s починаючи з j-го та закінчуючи і-м елементом - simm(s,j,i).
5. Обчислити площину n-кутника, наданого координатами вершин (X1,Y1),…,(Xn,Yn), використовуючи функцію обчислення площі елементарного трикутника (X1,Y1,Xi,Yi,Xi+1,Yi+1), i=2..n-1.
6. Функція для цілих невід'ємних n визначено наступним чином
f(0)=0, f(1)=1;
f(2n)=f(n);
f(2n+1)=f(n)+f(n+1)
Для наданого М визначити f(M) не використовуючи вспоміжних масисвів.
7. Значення функції B(M) обчислюється наступним чином: М записується у двійковій системі числення, а потім його розряди переставляються у зворотній послідовності. Розробити пограму для обчислювання цієї функції для довільного М.
8. Розробити процедури
а) надання матриць (mxn)
б) множення матриць (m*n), (n*k)
в) транспонування
Для довільних матриць A(m,n), B(n,m) обчислити (A*B)T