- •8. Все разновидности чисел integer и real, представление чисел в Фортране, операции над числами
- •Строковое выражение
- •Логическое выражение
- •10. Логические выражения и порядок действий при их вычислении. Интерпретация отношений, логических значений, операций, выражений. Булева алгебра и ее законы
- •11. Оператор присваивания, арифметический, логический, строковый. Смешанные числовые выражения и порядок их вычислений
- •12. Структурный if, одноблочный if, логический if, многоблочный if Ветвления – конструкция If
- •13. Сравнение трех видов циклов, вспомогательные операторы
- •Цикл по переменной
- •14. Цикл с заранее известным числом повторений, его подробная блок-схема
Строковое выражение
Операнды строкового выражения должны быть строкового типа. В строковом выражении допускается только одна операция – сцепление строк или конкатенация. Сцепление обозначается «//», например s=s1//s2, символы в строке s нумеруются слева направо как 1,2,…len(s), len(s1//s2)=len(s1)+len(s2). Подстрока - несколько символов строки подряд.
Пример: результат вычисления ba =ab(14:26)//ab(1:13) – строка, в которой меняются местами первая и вторая половины алфавита:
Character*26 :: ba, ab=’abcdefghijklmnopqrstuvwxyz’
Обратите внимание на то, что оператор s1=s1//s2 с повторением s1 слева и справа от “=” не имеет смысла. В Фортране строки постоянной длины, а именно той, что заявлена в описании строки. В то же время оператор s1=trim(s1)//s2 вполне осмыслен, если в s1 хвостовых пробелов, не менее чем символов в s2. Функция trim(s1) обрезает хвостовые пробелы.
Логическое выражение
Логическое выражение имеет значение «истина» или «ложь», состоя из:
логических констант и переменных;
пяти логических операций с операндами логического типа;
шести отношений, которые сравнивают либо два числовых выражения, либо два символьных выражения.
Результат вычисления отношения – это либо .true. – «истина» либо .false.– «ложь». В Фортране шесть операций отношения
Отношения |
Фортран 90 сейчас пишут так |
В стиле Фортран 77, устаревающее |
меньше чем A<b |
a<b |
a .lt. b |
меньше или равно A≤b |
a<=b |
a .le. b |
равно A=b |
k==m |
a .eq. b |
не равно A≠b |
k/=m |
a .ne. b |
больше или равно A≥b |
a>=b |
a .ge. b |
больше чем a>b |
a>b |
a .gt. b |
Отношения вычисляются после вычисления их операндов. Например, при A=2, B=0 для отношения A+3 >B порядок действий такой: сначала вычисляется А+3 и получается 5; затем 5 сравнивается с В, которое равно 0; результат вычисления выражения 5>0 – «истина».
Логические операции выполняются после вычисления отношений. В Фортране пять логических операций
Операция |
Обозначение |
Старшинство |
Пример |
Отрицание НЕ |
.not. |
1 |
.not.a |
Конъюнкция И |
.and. |
2 |
a.and.b |
Дизъюнкция ИЛИ |
.or. |
3 |
a.or.b |
Эквивалентность |
.eqv. |
4 |
a.eqv.b |
Неэквивалентность |
.neqv. |
4 |
a.neqv.b |
Операция .not.a является, как и (–x), одноместной (унарной) и пишется перед операндом, остальные знаки логических операций записываются между операндами. Две логические операции могут следовать в выражении непосредственно друг за другом, только если второй операцией является операция отрицания. Например, допустимо a.and. .not.b.
Введем обозначения: T – «истина» и F – «ложь». Строки и столбцы таблиц истинности помечены значениям операндов, а на пересечении строки и столбца записан результат двухместной операции
.AND. |
F |
T |
|
.OR. |
F |
T |
F |
F |
F |
|
F |
F |
T |
T |
F |
T |
|
T |
T |
T |
.EQV. |
F |
T |
|
.NEQV. |
F |
T |
F |
T |
F |
|
F |
F |
T |
T |
F |
T |
|
T |
T |
F |
Операция .not. – одноместная и дает результат «истина», если значение операнда «ложь», и результат «ложь», если значение операнда «истина»
.NOT. |
F |
T |
|
T |
F |
Пример логического выражения: a>3 .and. a<5. Выражение истинно, когда оба отношения истинны, то есть а(3,5).
Сложные выражения вычисляются в следующем порядке:
числовые операции или строковые операции;
операции отношения;
логические операции.