01 (537404), страница 2
Текст из файла (страница 2)
Integer*4 – ранг 2
Real*4 – ранг 3
Real*8 – ранг 4
Например:
5*ROT | – дает результат Real*4; |
I/10 | – Integer*4; |
J + 0.2D+6 | – Real*8; |
5.*(N+1) | – Real*4. |
*** Замечания: – в сложных арифметических выражениях тип результата определяется поэтапно, для каждой отдельной операции, например
(N+1) * A
Первая операция – N+1 – дает целый результат, так как оба операнда целого типа. Вторая операция – умножение результата первой операции на А – дает вещественный результат, так как переменная А вещественного типа. Окончательный результат выражения Real*4.
– неучет типов операндов арифметического выражения может привести к неожиданным результатам, например
5 / 2 * 10 = 20; 64**(1 / 3) = 1;
5 / 2.* 10 = 25.0; 64**(1. / 3) = 4.0 .
Простое логическое выражение определяет соотношение между сравниваемыми величинами. Оно представляет собой логические константы и переменные или арифметические выражения, соединенные символами логических отношений, что позволяет записывать необходимые условия. Выделяют следующие логические отношения:
.EQ. | – равно; | .NE. | – не равно; |
.GT. | – больше; | .LT. | – меньше; |
.GE. | – больше или равно (не меньше); | .LE. | – меньше или равно (не больше). |
Например, результатом выполнения логического выражения A.LT.B. будет .TRUE. (истина), если A<B, или .FALSE. (ложь), если AB.
Простые логические выражения могут быть объединены в сложные с помощью логических операций .NOT. - "не", .AND. - "и" и .OR. - "или". При вычислении логических выражений используется следующий порядок выполнения операций. Сначала выполняются операции отношения .EQ., .NE., .GT., .GE., .LT. и .LE., а затем .NOT., .AND. и .OR.. Например, условие принадлежности величины X отрезку [-1, 3/2] или интервалу ]3, 8[ будет записываться в виде
X.GE.-1..AND.X.LE.1.5.OR.X.GT.3..AND.X.LT.8.
Для изменения порядка выполнения логических операций или повышения степени их наглядности используются скобки:
((X.GE.-1.).AND.(X.LE.1.5)).OR.(X.GT.3..AND.X.LT.8.)
Текстовое выражение служит для обработки символьных констант и переменных. Для них определена только одна операция – конкатенация – слияние символьных констант и переменных, обозначающаяся символами "//".
Например выражение '1 + 1 ='//' 2' дает '1 + 1 = 2'.
Встроенные библиотечные функции – это программы для вычисления элементарных математических функций (например, sin х, cos х и др.), которые хранятся в библиотеке математических программ Фортрана. Для обращения к функции в арифметическом выражении требуется указать имя функции и далее в круглых скобках фактический параметр в форме константы, переменной или выражения. Ниже в таблице приведены некоторые часто используемые библиотечные функции.
Название функции | Математическое обозначение | Обозначение функции в Фортране |
Показательная функция | ex | Exp(x) |
Натуральный логарифм | ln x | ALog(x) |
Десятичный логарифм | lg x | ALog10(x) |
Синус | sin x | Sin(x) |
Косинус | cos x | Cos(x) |
Тангенс | tg x | Tan(x) |
Арксинус | arcsin x | ASin(x) |
Арккосинус | arccos x | ACos(x) |
Арктангенс | arctg x | ATan(x) |
Квадратный корень | Sqrt(x) | |
Абсолютное значение | x | Abs(x) |
Целая часть числа | [x] | Int(x) |
При использовании функций следует учитывать, что:
-
тригонометрические функции используют аргумент только в радианной мере;
-
аргументы, приведенных в таблице функций, имеют вещественный тип;
-
результаты вычисления функций имеют вещественный тип;
Оператор присваивания – простейший выполняемый оператор Фортрана. Он не имеет ключевого слова и форма его записи имеет вид:
переменная = выражение
Действие оператора состоит в том, что переменная, стоящая слева от символа "=", получает значение, равное результату выполнения выражения, записанного справа. Например
A = c i = i + 1
y = a*Sin(X**2) G = .TRUE.
Res_1 = (1.0 + Exp(x+1))/(x**2 + 1.) Str = 'МГТУ (МАМИ)'
После вычисления выражения его результат, независимо от типа, приводится к типу переменной.
Например, оператор L = 12.1 / 10.4 даст результат, равный единице.
Пример программы. Вычислить значение функции
F = 4x2 +eax при a = 2,87 и x = 0,5 .
123456789......................72 73......80
C *** Лабораторная работа 1 ***
A = 2.87
X = 0.5
F = 4.*X*X + Exp(A*X)
Write(*, *) ' A, X, F =', A, X, F
Stop
End
Данная программа выполняет следующую последовательность операций:
-
переменной А присваивается значение 2.87;
-
переменной X присваивается значение 0.5;
-
переменной F присваивается значение арифметического выражения, соответствующего заданной функции;
-
значения переменных А, Х и F выводятся на экран монитора;
-
ЭВМ завершает работу с программой.
При написании программы были использованы ранее не описанные операторы Write, Stop и End. Оператор Write(*, *) выводит на экран текст строки в апострофах и значения указанных переменных. Оператор Stop останавливает выполнение программы, а оператор End служит признаком конца текста программы.
*** Замечания:
– оператор Stop в данном случае является необязательным. При его отсутствии функции остановки программы выполнит оператор End;
– после завершения работы программы, содержащей оператор Stop, на экран монитора выводится сообщение Programm terminated;
– допускается форма записи Stop [n], где n – символьная константа, которая будет выведена на экран монитора при завершении работы программы.
З а д а н и е к л а б о р а т о р н о й р а б о т е
Составить программу для вычисления по формулам. Программу протестировать на приведенных данных. Значения аргументов задавать с помощью оператора присваивания. Результаты расчета вывести на экран монитора. В отчете по лабораторной работе привести результаты вычислений для к=1,3 и х=-1,1,2. В случае, если при каких – либо сочетаниях параметров к и х вычисление провести невозможно, дать объяснение -- почему это произошло.
Для вычисления кубического или любой целой нечетной степени корня из числа, которое может быть отрицательным, необходимо использовать библиотечную функцию Sign(A, B). Данная функция передает знак параметра B модулю параметра A. Например, при Х=-8 – параметр , а В=-8, в результате чего функция Sign возвращает результат равный -2. Фрагмент программы, реализующий эти вычисления:
X=-8.
Z=Sign(Abs(X)**(1./3.),X)
Write(*,*) x, z
End
1 | При k=2 и x=0.5 Y=3.933026Е-03 | 2 | При k=2 и x=1 Z=7.793753E-01 |
3 | При k=2 и x=-1.7 Y=2.880522 | 4 | При k=1 и x=-0,6 V=-4.399004 |
5 | При k=2 и x=0,4 Y=2.807465E-03 | 6 | При k=2 и x=1 Z=3.324662E-01 |
7 | При k=1 и x=1 Z=-3.488070E-02 | 8 | При k=1 и x=0,3 Y=-3.372081E-02 |
9 | При k=2 и x=1 Y=8.000226 | 10 | При k=2 и x=0,7 V=20.214210 |
11 | При k=2 и x=1.5 Y=2.076025E-01 | 12 | При k=2 и x=1 Z=9.046751E-02 |
13 | При k=2 и x=-1.3Y=-2.806125E-01 | 14 | При k=1 и x=-0,8 V=-1.547823 |
15 | При k=1 и x=0,8 Y=-6.426743E-02 | 16 | При k=2 и x=0,5 Z=--4.009187 |
17 | При k=2 и x=0.5 Z=-2.936719E-02 | 18 | При k=1и x=0,3 Y=-5.602377E-02 |
19 | При k=2 и x=1 Y=19.703690 | 20 | При k=2 и x=0,5 V=2.723359 |
21 | При k=1 и x=0.3 Y=1.048512E-01 | 22 | При k=2 и x=1 Z=1.628316 |
23 | При k=2 x=-1.3 Y=9.530854E-02 | 24 | При k=1и x=-0,8V=-2.803053E-01 |
25 | При k=2 и x=0,4 Y=-1.809660E-01 | 26 | При k=2 и x=0,5 Z=1.156944 |
27 | При k=1 и x=1 Z=1.793167E-02 | 28 | При k=1 и x=0,3 Y=1.003597E-01 |
29 | При k=2 и x=-1 Y=-3.301568 | 30 | При k=2 и x=0,7 V=5.373366 |
Л А Б О Р А Т О Р Н А Я Р А Б О Т А № 2