Главная » Файлы » Доклады » Доклады |
Функції та підпрограми
[ Скачать с сервера (60.5 Kb) ] | 18.02.2018, 00:11 |
Часто виникає необхідність використання одного і того ж фрагменту у різних частинах програми. Змінюватися повинні лише значення параметрів цього фрагменту. Тривіально було б включити цей фрагмент у відповідні місця програми, однак це супроводжується затратами часу на програмування і відлагодження та нераціональним використанням пам’яті комп’ютера внаслідок суттєвого видовження програми. Оформлення такого фрагменту у вигляді підпрограми, підпрограми-функції чи оператора-функції дає можливість зекономити час і пам’ять. При такому оформленні фрагмент записується один раз, а у відповідні місця програми вставляються лише звертання до цього фрагменту. 7.1. Оператор-функція Оператор-функція складається з одного оператора. Він має вигляд: f (a1, a1, …, an) = e Тут f – ім’я функції; a1, a1, …, an – імена формальних параметрів; e – вираз. Функція і кожен формальний параметр мають тип. Тип може бути заданий неявно чи за допомогою оператора описання типу. У виразах e можуть входити константи, формальні параметри, змінні та звертання до підпрограм-функцій. В e не можуть входити елементи масивів і звертання до того ж самого оператора-функції. Приклади операторів-функцій: Оператор описання типу та оператор-функція Тип оператора-функції FORM(A, B, C) = A–B/C+COS(A*B)–5.3 Дійсний INTEGER FUN FUN(K, M1) = 2*K1–ALJG(M1) Цілий LOGICAL LG LG(X,Y,Z) = X .GT. Y .AND. Y .GT. Z Логічний Оператори-функції повинні бути розміщеними перед першим виконуваним оператором. На початку виконання програмної одиниці записані у ній оператори-функції пропускаються. Звертання до них відбувається із деяких арифметичних виразів. Для організації такого звертання в арифметичних виразах записується ім’я функції, а далі, у дужках, розділені комами так звані фактичні параметри. Фактичними параметрами можуть служити і вирази. Між формальними та фактичними параметрами повинні зберігатися відповідності у типах, кількості та порядку чергування. У процесі звертання до оператора-функції спочатку обчислюються значення всіх фактичних параметрів. Обчислені значення присвоюються відповідним формальним параметрам (говорять, що відбувається обмін параметрами). Потім обчислюється значення оператора-функції, яке далі використовується у тому виразі, з якого відбулося звертання до даного оператора-функції. Увага! Оператори-функції можуть використовуватися тільки у тих програмних одиницях, де вони визначені. Приклади використання операторів-функцій, показаних у попередній таблиці: D3 = P+FORM(P, R+1.2, –3.25) TT = FUN(K4, 21)*FORM(–P, 2*R, S)–ABC H = FORM(FORM(–5.1, R, S), D1, F) Після кінцевого обміну параметрів перший оператор стає еквівалентним оператору D3 = P+P–(R+1.2)/(–3.25)+COS(P*(R+1.2))–5.3 В останньому прикладі оператор-функція викликається двічі. Спочатку обчислюється значення виразу FORM(–5.1, R, S). Після цього знову відбувається звертання до того ж оператора-функції при нових значеннях фактичних параметрів. Отримане значення присвоюється змінній Н. 7.2. Підпрограма-функція Підпрограма-функція – це самостійна програмна одиниця. Вона починається оператором FUNCTION і закінчується оператором END. Підпрограма-функція виконується після звертання до неї з іншої програмної одиниці. Інформація, необхідна для роботи підпрограми-функції, доставляється параметрами. Підпрограми-функції можуть компілюватися окремо від інших програмних одиниць, що надає вигоди при відлагоджуванні програми. Оператор початкового рядка підпрограми-функції має вигляд: t FUNCTION f (a1, a1, …, an) Тут FUNCTION – символ Фортрану; f – ім’я підпрограми-функції; a1, a1, …, an – імена формальних параметрів (n1); t – оператор описання типу підпрограми-функції. На місці t можуть використовуватися символи INTEGER, REAL, DOUBLE PRECISION, COMPLEX чи LOGICAL, або він може бути упущений. Якщо на місці t вказаний один із перерахованих символів, то цей символ визначає тип підпрограми-функції. Якщо оператор описання типу відсутній, то тип підпрограми-функції заданий неявно, тобто визначається першою буквою його імені. Формальними параметрами можуть бути: 1) змінна; 2) масив; 3) підпрограма; 4) інша підпрограма-функція. Формальні параметри (крім імені підпрограми) мають тип. Він може бути заданий неявно чи встановлений оператором описання типу, який розташовується після оператора початкового рядка підпрограми-функції. Після оператора початкового рядка і операторів описання типу параметрів (якщо такі мають місце) записуються виконувані й невиконувані оператори, які вже описані у попередніх розділах. Приклади заголовків підпрограм-функцій: Оператор початкового рядка та оператор описання типу Тип підпрограми-функції FUNCTION FUN(X) Дійсний FUNCTION ABDM(Z5, B, N) INTEGER B Дійсний FUNCTION MFUN (Y, J, K) Цілий INTEGER FUNCTION FUN(X) Цілий LOGICAL LG(X, Y, Z) LOGICAL Y, Z Логічний Чи LOGICAL FUNCTION LG(X, Y, Z)???? Всередині підпрограми-функції не можуть знаходитися інші підпрограми-функції, а також підпрограми, однак допустима присутність операторів-функцій, розташованих перед першим виконуваним оператором. Формальні параметри підпрограми-функції не можна вказувати в операторі еквівалентності. Всередині підпрограми-функції її ім’я можна використовувати як змінну. Ім’я підпрограми-функції можна вказувати у виразах. Йому можна присвоювати значення. Якщо формальним параметром виступає ім’я масиву, то воно повинне бути описане всередині підпрограми-функції оператором описання розмірності масиву. Виконання підпрограми-функції починається з першого виконуваного оператора. Дальше виконується другий оператор і т. д. Після виконання оператора повернення RETURN робота підпрограми-функції закінчується. | |
Просмотров: 324 | Загрузок: 15 | Рейтинг: 0.0/0 |
Всего комментариев: 0 | |