- •1.3. Елементи алгоритмічної мови фортран
- •1.3.3. Невиконувані службові оператори.
- •1.3.5. Виведення даних
- •36 Format (3x, ‘ aa____аb____ea____eb_____eg____еt____t____dt__tp__рр’)
- •7 Continue
- •1 Continue
- •If (eps.Lt.0.001) goto 123 Перелік можливих логічних відношень має такий вигляд:
- •If ((eps1.Lt.0.001).Or.( eps2.Lt.0.1)) goto 123
- •1.3. 9. Контроль синтаксичних помилок.
7 Continue
DO- службове слово оператора початку циклу (голова циклу). В цьому операторі число “7” є поміткою оператора кінця циклу, К - ціле число, яке називають “змінна циклу”. Це число в процесі обчислень на кожному кроці циклу прийматиме значення від 8 (перший крок), через 2 одиниці - 8, 10, 12, 14,… до 100. Якщо крок (третє число, тут 2) дорівнює 1,що буває найчастіше, його не ставлять. Друге число (тут 100) – максимальне значення змінної цикла. Після досягнення змінною К цього значення цикл буде завершено і програма буде виконувати оператори, розташовані за оператором з поміткою “7”.
Змінна циклу К в даному прикладі використовується для визначення адреси елементів 150-елементних масивів Х,Y послідовно зчитуються елементи масиву Х - 11, 13, 15….103, до кожного додається число А, а результати записуються в елементи масиву Y - 7, 9, 11…99).
Оператор присвоєння T=T+DT зручно використовувати для одержання сум (тут підрахунок часу з постійним кроком DT )
Оператор 7 CONTINUE - «порожній», його єдина функція – вказувати місце в програмі (нести помітку). В даному випадку це місце, де закінчується виконання циклічної процедури (помітка 7, вказана в операторі DO ). Помітку може нести і просто останній оператор послідовності (тут T=T+DT ), але текст програми стане зрозумілішим, якщо використати порожній оператор.
Г) Оператори вкладених циклів. При розрахунках, де використовують двовимірні або більш складні масиви, використовують складніші організації циклічних процедур, коли один цикл розташований всередині іншого. Наприклад, в циклі
DIMENSION Y(20,30)
DO 1 K=1,20
DO 1 N=1,30
Y(K,N) = 5
1 Continue
двовимірний масив (таблиця з К=20 строчками таN=30 колонками) заповняється числами “5”. СпочаткуК=1, і заповняється перша строчка масиву 30 числами, потімК=2 і заповняється друга строчка і т.д.
Д) Логічні оператори.Логічний оператор містить службове слово IF (“якщо» ), умову в дужках, і оператор, який виконується лише тоді, коли умова виконана, а інакше ігнорується . Можна навести приклад оператора, який розташовується всередині ітераційного циклу і при досягненні відносною помилкою EPS рівня, меншого за 0.001, управління передається на оператор з поміткою 123, розташований після закінчення циклу :
If (eps.Lt.0.001) goto 123 Перелік можливих логічних відношень має такий вигляд:
|
|
|
|
|
НЕ |
ТА |
АБО |
.LT. |
.GT. |
.EQ. |
.GE. |
.LE. |
.NOT. |
.AND. |
.OR. |
Умова може бути складнішою і вміщувати декілька окремих логічних відношень. Їх потрібно або записувати окремо, або в одному операторі відокремлювати дужками, наприклад:
If ((eps1.Lt.0.001).Or.( eps2.Lt.0.1)) goto 123
В даному прикладі оператор GOTO 123 буде виконаний, якщо виконається одна з вказаних двох умов.
Підпрограми SUBROUTINE
Підпрограми використовують для виконання однотипних блоків обчислень, які в головній програмі виконуються декілька разів.
Підпрограма призначена для вирішення окремого часткового завдання, має власне ім’я і список формальних параметрів, розташований в дужках. Оператор, який запускає підпрограму, (наприклад, для розрахунку струму І та напруги U електрохімічної ячейки)
,
матиме таку форму
CALL MOD (U,RA,RK,RE,I)
де CALL – службовий оператор виклику підпрограми, MOD– її ім‛я. В такому вигляді оператор, який запускає підпрограму, зписують в тексті головної програми.
Параметри підпрограми за функціональними ознаками розподіляються в три групи.
Вхідніпараметри – це ті, які повинні бути обов’язково визначені в програмі раніше, до оператораMOD . Вони використовуються для розрахунків в підпрограмі (тут – поляризаційні опори катода RK, анода RA , опір електроліту RE, опір зовнішнього кола навантаження R3 ).
Вихідні параметри- результати розрахунків (тут струм І).
Внутрішні– використовуються лише в самій підпрограмі, і їх немає потреби виносити в список формальних параметрів підпрограми.
Підпрограму записують в кінці головної програми, вона має такий вигляд:
STOP
END (кінець головної програми)
SUBROUTINE MOD(UU,RAA,RKK,REE,R33,II)
EE=1.23
II=EE/(RAA+RKK+REE+R33)
UU=II*R33
RETURN
END
Трепба пам’ятати, що в тексті підпрограми імена змінних власні, вони вказані в заголовку підпрограми. В тексті головної програми імена можуть бути іншими, вони повинні лише узгоджуватись з формальними за кількістю, типом і порядком розташування (формальні тут вказані здвоєними останніми буквами імен). Це дає можливість використовувати одну підпрограму в різних програмах, не переробляючи її імена змінних.
Підпрограми-функції FUNCTION
На відміну від підпрограм SUBROUTINE , в підпрограмі-функції FUNCTION вихідним параметром є лише одна змінна. Тому ім’я підпрограми-функції в головній програмі (тут U ) використовується як ім’я змінної в будь-яких операторах. Для попереднього прикладу вихідний параметр – напругу можна підрахувати в підпрограмі функції
EXTERNAL U
COMMON RA, RK, RE, R3, I
………………………………….
STOP
END
FUNCTION U(RA, RK, RE, R3, I)
COMMON RA, RK, RE, R3, I
E=1.23
I=E/( RA, RK, RE, R3, I)
U=I*R3
RETURN
END
В цьому прикладі через оператор Common однакові імена змінних в підпрограмі і головній програмі доступні з головної програми (це одні і ті ж ячейки пам’яті). Будь-яке використання імені U ініціює запуск підпрограми і підрахування цього числа.