2. АРИФМЕТИЧНІ ВИРАЗИ І ОПЕРАТОРИ ПРИСВОЄННЯ 2.1. Оператори описання типу Раніше були введені імена цілого і дійсного типів. Іменами вказаних типів можна обмежитися при розв’язуванні багатьох задач. Однак деякі задачі потребують використання імен інших типів. Така необхідність виникає, наприклад, при використанні комплексних чисел і величин з подвійною точністю. Крім того, бажано мати можливість переводити у інший тип імена, тип яких заданий неявно початковими буквами (наприклад, імена, які починаються з букв I, J, K, L, M, N, робити дійсними). Так, силу струму в електротехніці прийнято позначати іменем І, яке у фортранівських програмах повинно представляти дійсну змінну. Виконання цих вимог можливе з допомогою операторів описання типу. Крім неявного способу задавання типу у мові ФОРТРАН існує ще явний. Для цього використовують оператори описання типу. Це невиконувані оператори шести типів, які призначені для описання змінних, масивів і функції й починаються із одного з наступних символів: INTEGER – для цілого типу; REAL – для дійсного типу; DOUBLE PRECISION – для дійсного типу з подвійною точністю; COMPLEX – для комплексного типу; LOGICAL – для логічного типу; CHARACTER – для текстового типу. Слідом за символом описання типу через кому записують імена змінних, масивів чи функцій, а також описання розмірності масивів. Імена функцій та описання розмірності масивів будуть розглянуті нижче. Оператори описання типу перевизначають тип, який був установлений неявним описанням. Очевидно, що одне і те ж ім’я не може зустрічатися одночасно в обох операторах описання типу. Приклади операторів описання типу: INTEGER A, Z17, B REAL I, J2B, K DOUBLE PRECISION R, S, TUR COMPLEX UAD, V LOGICAL N, T CHARACTER TX, ZM Дані кожного типу характеризуються довжиною. Стандартні довжини даних типу INTEGER, REAL, LOGICAL – 4 байти (байт – 8 біт, тобто 8 двійкових розрядів), дані типу DOUBLE PRECISION– 8 байт (подвоєна кількість розрядів), дані типу COMPLEX – 8 байт (для даних комплексного типу дійсна і комплексна частини по 4 байти), дані типу CHARACTER – 1 байт. Довжина даних типу може бути змінена. Для цього після символу описання типу записують його довжину у вигляді “*n”, де число n вказує кількість байт. Для оператора типу INTEGER крім стандартної довжини (4 байти) існує довжина 2 байти, для оператора типу REAL – довжина 8 і 16 байт, для оператора типу COMPLEX – 16 і 32 байти, для оператора типу LOGICAL –1 байт і для оператора типу CHARACTER – від 1 до 32767 байт. Приклади операторів описання типу нестандартної довжини: INTEGER*2 A1, Z, N1 REAL*8 М COMPLEX*16 UV, ALPHA LOGICAL*1 КМ CHARACTER*27 TEXT Крім наведених вище операторів описання типу існує оператор IMPLICIT, який визначає тип імені за його першим символом. Наприклад, оператор IMPLICIT REAL*8 (A) забезпечує для всіх змінних, імена яких починаються з букви А, довжину 8 байт. 2.2. Цілі та дійсні константи Значення змінних може змінюватися в час роботи програми. Константи ж залишаються постійними. Аналогічно до цілих та дійсних змінних відповідно існують цілі та дійсні константи. Цілі константи записуються у вигляді цілих чисел із знаком. Наприклад, –1, 125, –753, 0, 97. Ціла константа має тип INTEGER і займає комірку пам’яті, розміром 4 байти. У записі дійсної константи повинна бути присутня десяткова крапка (на місці коми), яка відділяє цілу й дробову частину числа, або (і) буква Е, яка відіграє роль основи 10. Наявність хоча б одного із вказаних символів є обов’язковою. Запис zEn (де z – ціле чи десяткове дробове число, n – ціле число) тотожний записові . Слід зауважити, що z не може містити символу Е. Дійсна константа має тип REAL і теж займає комірку пам’яті розміром 4 байти. Приклади запису дійсних констант: Звичайний запис
Запис мовою ФОРТРАН
Звичайний запис
Запис мовою ФОРТРАН
–125 –125. 1200 12Е+2
1 1.0 чи 1. 1021 1.0Е+21
0,1 0.1 чи .1 10–5 0.1Е–4
0 0.0; 0. чи .0 –107 –1Е7
Приклади невірного запису дійсних констант: Запис
Пояснення
1,0 Повинна використовуватися крапка, а не кома.
1.7.0 Повинна використовуватися лише одна крапка.
–1.2+3 Константа повинна містити лише один знак; очевидно тут пропущений символ Е.
77 Дійсна константа повинна містити десяткову крапку чи символ Е.
27.3А Букву А не можна використовувати при записі дійсних констант.
–12.7Е–7.2 При записі дійсної константи після Е повинна міститися ціла константа.
Змінні з подвійною точністю у порівнянні з дійсними змінними мають більше значущих цифр у мантисі. Константа з подвійною точністю має вигляд zDn. Тут z – дійсне чи ціле число, буква D – є основою, n – показник степеня, виражений цілим числом. Основа D ніколи не опускається, вона служить ознакою константи з подвійною точністю. Приклади запису констант з подвійною точністю: Звичайний запис
Запис мовою ФОРТРАН
Звичайний запис
Запис мовою ФОРТРАН
0 0D0 47,5 4.75D1
0 0.0D–1 –12,3 –0.123D2
0 +0.0D+1 0,002 0.2D–2
1 1.0D0 число ? з точністю до 15 значущих цифр 3.14159265358979D0
30000 3D+4
Приклади невірного запису констант з подвійною точністю: Запис
Пояснення
3 Ціла константа.
2.7D–1.5 Показник степеня повинен бути цілим числом.
–1.2+3 Відсутність букви D (очевидно тут вона пропущена).
–2.7D–1D7 Присутність двох букв D.
2.3. Цілі та дійсні вирази Вирази у мові ФОРТРАН аналогічні до математичних формул. Вони дають можливість обчислити значення змінних. Вирази складаються із операндів, з’єднаних знаками арифметичних операцій. Операндами можуть служити: константи, змінні, вирази у дужках, елементи масивів і функції. У мові ФОТРАН використовуються наступні знаки математичних операцій: + (додавання); – (віднімання); * (множення); / (ділення); ** (піднесення до степеня). У противагу до звичайних методів запису математичних формул оператор множення у ФОТРАНі опускати не можна. Зліва і справа від знаку математичної операції повинні стояти операнди. Тому запис A*–I є невірним; можливо, мався на увазі вираз A*(–I). Ліві операнди відсутні, коли символи + і – використовуються лише для формування знаку операнда. Наприклад, у виразах –7*А (С+В)/(–L) правомірно відсутні операнди зліва від знаку мінус. Порядок дій визначається дужками. Обчислення виразів відбувається у звичайній послідовності, яка прийнята в математиці: піднесення до степеня; множення і ділення; додавання і віднімання. Вираз I/J/N обчислюється зліва направо, тобто він еквівалентний виразу (I/J)/N. Особливості запису та обчислення цілих виразів наступні. Насамперед це стосується операції ділення. Увага! Результат ділення двох цілих операндів завжди є цілим – отримана дробова частина числа відкидається. Тому значення виразів 10/3 і 11/3 дорівнює 3. Піднесення до степеня I**J при цілих операндах I і J може бути пояснено наступним чином:
Вираз I ** J ** K у ФОРТРАНі недопустимий. Він повинен містити дужки. Цей вираз можна записати так: (I ** J) ** K, що означає , чи так: I ** (J * K), що означає . Приклади запису цілих виразів: Звичайний запис
Запис на ФОРТРАНі
I + 5 – K
I + 5 – K
(J + M) · N – I5F
(J + M) * N – I5F
– (N13 + M) + 8 · (NN – 3)
– (N13 + M) + 8 * (NN – 3)
(J2 + 1) ** 3
(I **J) ** K
Приклади невірного запису цілих виразів: Запис
Пояснення
5N Між операндами повинен стояти знак арифметичної операції.
L5 * – 3 Два знаки арифметичних операцій не можуть стояти поряд.
Вирази дійсного типу утворюються так само, як і вирази цілого типу, тобто із знаків арифметичних операцій і операндів. Операндами, як і у випадку виразів цілого типу, можуть служити: константи, змінні, вирази у дужках, елементи масивів, функції, а також стандартні функції, про що буде мова у наступному параграфі. Степінь з цілим показником J обчислюється за наступним правилом:
а з дійсним показником B – за наступним правилом:
Для обчислення доцільно записати вираз А ** 2 (чи А * А) замість А ** 2.0, оскільки значення останнього виразу обчислюється значно довше. Приклади запису дійсних виразів: Звичайний запис
Запис на ФОРТРАНі
А/(B + C)
(X + 5) ** 3 – P
– (C + D – H) * E – 7
(В2 + 1.0) ** 3.2
(С**J) ** K
Приклади невірного запису дійсних виразів: Запис
Пояснення
5.7А Між операндами повинен стояти знак арифметичної операції.
(–3.0)**С При дійсному показнику степеня основа повинна бути додатною.
Вирази з подвійною точністю, як і дійсні вирази, утворюються із знаків арифметичних дій і операндів. Правила об’єднання знаків та операндів, а також послідовність виконання операцій та ж, що і для дійсних виразів. При обчисленнях з подвійною точністю можуть використовуватися стандартні функції з подвійною точністю, про що буде йти мова у