При вещественном показателе степени real x операция a**x выполняется как - откуда следует ограничение на основание a>0
при целом показателе степени integer n операцияa**n выполняется как n-кратное умнжение a*a*a* ..*a
1.3.2 Логические выражения
Результатом операций отношения может быть только два значения True – истина и False – ложь. В логическом выражении можно использовать отношения и логические операции. Отношения в логических выражениях используют для сравнения либо двух числовых, либо двух символьных выражений. Результат вычисления отношения имеет логический тип - это либо .true. - "истина" либо .false.- "ложь". В Фортране допускаются следующие отношения (см. табл. 1.4):
Таблица 1.4 Операции отношения языка Фортран
Отношения | Фортран 90 | Пример | |
Меньше чем | .LT. | < | a.LT.b |
Меньше или равно | .LE. | <= | a.LE.b |
Равно | .EQ. | == | k.EQ.m |
Не равно | .NE. | /= | k.NE.m |
Больше или равно | .GE. | >= | a.GE.b |
Больше чем | .GT. | > | a.GT.b |
Знаки отношений записываются между числовыми либо символьными операндами. Отношения вычисляются после вычисления их операндов.
В Фортране допускаются следующие логические операции (см. табл. 1.5):
Таблица 1.5 Логические операции языка Фортран
Операция | Обозначение | Старшинство | Пример |
Отрицание | .NOT. | .NOT.a | |
Конъюнкция | .AND. | a.AND.b | |
Дизъюнкция | .OR. | a.OR.b | |
Эквивалентность | .EQV. | a.EQV.b | |
Неэквивалентность | .NEQV. | a.NEQV.b |
Операция .NOT. является унарной и пишется перед операндом, остальные знаки логических операций всегда записываются между операндами. Две логические операции могут следовать в выражении непосредственно друг за другом, если второй операцией является операция отрицания. Например, a .and. .not. b.
Таблица 1.6.Таблица истинности логических операций
x | y | x.and.y | x.or.y | .not.x | x.xor.y | x.eqv.y | x.neqv.y |
И И Л Л | И Л И Л | И Л Л Л | И И И Л | Л Л И И | Л И И Л | И Л Л И | Л И И Л |
Приоритет операций в логическом выражении:
1 – вычисления значений функций;
2 – арифметические операции;
3 – операции отношения;
4 – логические операции.
Примеры:.
На математическом языке a<x<b => x>a Ùx<b.
На Фортране x>a.and.x<b.
Так если a=2, b=4, то выражение истинно при x=3 и ложно при x=1 или x=5.
На математическом языке -¥<x<+¥ =>x>a Úx<b.
На Фортране x>a.or.x<b.
Так если a=2, b=4, то выражение истинно при любом x.
На математическом языке X<a или x>b =>x>a Úx<b.
На Фортране x<a.or.x>b.
Так если a=2, b=4, то выражение ложно при x=3 и истинно при x=1 или x=5.
1.4 Структура программы языка Фортран. Основные операторы программы с линейной структурой
Программа на Фортране состоит из главной программы и, возможно, некоторого числа подпрограмм. Первым оператором главной программы является её заголовок PROGRAM. За ним следует имя программы:
PROGRAM ИМЯ_ПРОГРАММЫ
Имя программы обязательно начинается с буквы, затем могут идти буквы, цифры и символы подчеркивания, например:
PROGRAM SUMMATION
PROGRAM QUADRATIC_EQUATION_SOLVER45
Максимальная длина любого имени в программах на Фортране - 31 символ. Заключительный оператор главной программы может иметь также следующий вид:
END PROGRAM ИМЯ_ПРОГРАММЫ
ИМЯ_ПРОГРАММЫ является необязательной частью оператора.
После заголовка следуют описания переменных, констант, меток, подпрограмм и других объектов, используемых в программе. Эта ее часть называется разделом описаний (или неисполняемых операторов). После раздела описаний следует раздел исполняемых операторов. Процесс создания проекта приведен в приложении Б.
При обработке информации программой выполняется три основных блока:
1. ввод исходных данных;
2. обработка данных согласно алгоритму;
3. вывод результата из программы.
Пример:
Program itit
Integer :: a=10, b=20
End program init
Оператор Program задает имя программы. Оператор End обозначает окочание программы.
Вторая строка в программе означает, что переменные целого типа a и b содержат значения 10 и 20.
Пример. Программа сложения двух целых чисел:
Program sum
Integer a,b,c
A=100
B=20
C=a+b
End program sum
В программе описаны три переменные целого типа. Чтобы поместить в переменные определенные значения, используется оператор присваивания, который записывается как знак =. Его следует отличать от математического знака равно, который в Фортране используется как логический оператор для сравнения двух величин и обозначается = =. В данном случае a=100 означает, что переменной а присвоили значение 100. Таким образом, в переменных a и b будут храниться числа 100 и 20. Далее переменной присваивается сумма значений переменных a и b, то есть в с будет значение 120.
Для ввода данных в программу извне, а так же для вывода результатов за пределы программы из ячеек памяти используются операторы ввода/вывода.
Оператор вводаread (читать).
Integer a
Read (*,*), a
При выполнении этого фрагмента программы на черном экране будет мигать курсор, в ожидании ввода с клавиатуры целого числа. После ввода число будет записано в переменную a. При попытке ввода значения другого типа компилятор сообщит об ошибке.
Операторы вывода Print (печатать) и Write(писать) служат для вывода на экран информации.
В приведенном ниже примере оба оператора выводят на экран приветствие Hello!. Заключение приветствия в одинарные кавычки показывает что выводит значение символьного типа. Внутри кавычек могут быть любые символы, которые в точности будут выведены на экран.
Print*, ‘Hello!’
Write(*,*),‘Hello!’
Можно улучшить вывод, если воспользоваться средствами форматирования. Для этого вместо звездочки в операторе Print и вместо второй звездочке в операторе Write указывается спецификация формата вывода. Спецификация формата – это набор дескрипторов преобразования, заключенных в ‘()’.
Основные дескрипторы:
А – вывод символов;
$ - запрет перехода на следующую строку;
/ - переход на следующую строку;
// - пропуск строки;
Nx – вывод n пробелов.
In – выделение n позиций для вывода целого числа
Fk.n – выделение k позиций для вывода вещественного числа, из которых n отводится на количество знаков после запятой
Ek.n – выделение k позиции под вывод числа в экспоненциальной форме. Из них 4 выделяется по показатель десятичной экспоненты, степень и знак степени (например e+04), 1 под точку, 1 под знак и n под дробную часть.
An - выделение n позиций для вывода строки символов
Ka – вывод k строк.
L – вывод логического значении T (true - истина) F (false - ложь).
Если при выводе числовой информации отвести меньшее количество символов, то будут выведены звездочки. Символьная информация в этом случае будет обрезана до указанного размера. В случае выделения большего места чем необходимо, то оставшееся место будет заполнено пробелами.
Например:
Write(*,’(a3)’), ‘Hello!’
На экране:
Hel
Write(*,’(a10)’), ‘Hello!’
На экране (^ - обозначен пробел):
^^^^ Hello!
Write(*,’(L)’), 5>3
На экране
T
Если спецификация формата часто повторяется, то ее рекомендуется записывать отдельно при помощи оператора format (формат). Ссылка на формат осуществляется при помощи числовой метки, например:
Write(*,100), ‘Hello!’
100 format(a10)