Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Алгоритмічна мова Паскаль.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
311.3 Кб
Скачать

3.6. Підпрограми

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

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

В Турбо Паскалі підпрограми реалізуються у вигляді процедур та функцій.

Функції.

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

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

FUNCTION <ім’я> (<список параметрів та їх типів>) : <тип функції> ;

<ім’я> – ідентифікатор функції;

<список параметрів та їх типів> – перелік формальних параметрів із вказівкою їх типів;

<тип функції> визначає, які значення може набувати ідентифікатор функції.

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

Після заголовку і перед тілом функції, як і в будь-якій програмі ,повинні йти блоки оголошень всіх констант, змінних, типів, підпрограм, які використовуються в тілі функції, тобто її основному блоці. Все це – її локальні дані , які не можуть бути використані в головній програмі.

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

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

<ім’я функції> (<список фактичних параметрів>) ;

Список фактичних параметрів повинен відповідати списку формальних параметрів в заголовку функції за послідовністю, кількістю та типами. Фактичні параметри заміщують всі формальні у відповідності до списку.

Послідовність дій при виконанні виклику підпрограми-функції:

  • Робота головної програми припиняється і починається виконання ПП-функції.

  • Головна програма передає ПП одне або декілька конкретних значень, тобто відбувається заміна формальних параметрів на фактичні.

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

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

Механізм виконання виклику підпрограми-функції можна схематично представити так:

FUNCTION F ( a1 : T1 ; a2: T2 ; …….. ; an : Tn ) : T ;

F ( b1 , b2, ……, bn )

Правила формування та використання підпрограми-функції:

  1. Перший рядок опису ПП-функції – її заголовок, в якому визначаються : ім’я функції, ім’я та тип кожного формального параметра, тип результату, тобто самої функції.

  2. Локальні змінні, що оголошуються за заголовком функції, ніяк не пов’язані з об’єктами головної програми, навіть якщо в них співпадають імена; при виконанні тіла функції ПП користується окремою від головної “стековою” пам’яттю.

  3. Фактичні параметри можуть бути змінними, константами або навіть виразами.

  4. ПП починає виконуватися з тими значеннями своїх формальних параметрів, які вони мали в момент входу в ПП.

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

  6. Значення, що повертається в головну програму, може бути 1)присвоєне деякій змінній; 2)використано як складова якогось виразу; 3)надруковано; 4)передано в іншу ПП як фактичний параметр.

  7. Підпрограму-функцію можна тестувати та відладжувати незалежно від інших модулів.

Приклад. Скласти програму обчислення значення кількості сполучень

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

PROGRAM SPOLUCH ;

VAR CNM : REAL ;

N , M , L : INTEGER ;

FUNCTION FACTOR ( K : INTEGER ) : INTEGER ;

VAR I , P : INTEGER ;

BEGIN

P := 1 ;

FOR I := 1 TO K DO P := P*I ;

FACTOR := P

END ;

BEGIN

WRITELN (‘ВВЕСТИ N,M’) ; READ ( N , M ) ;

L := N – M ;

CNM := FACTOR(N)/ (FACTOR(M) *F ACTOR(L)) ;

WRITELN ( ‘Кількість сполучень із ‘ , N , ‘ по ‘ , M ,

‘ = ‘ , CNM )

END .