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)**С
При дійсному показнику степеня основа повинна бути додатною.


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