Цикл довузовской подготовки кафедры ЭФУ

ЛАБОРАТОРНЫЙ ПРАКТИКУМ:
«ПРОГРАММИРОВАНИЕ НА ФОРТРАНЕ»

СТРУКТУРА ПРАКТИКУМА

ВВЕДЕНИЕ

ВАЖНАЯ ИНФОРМАЦИЯ

1. ПРАВИЛА ЗАПИСИ ПРОГРАММЫ

1. Набор символов Фортрана

2. Форматы записи программы

3. Фиксированный формат

4. Свободный формат

2. ТРАНСЛЯЦИЯ ПРОГРАММЫ

1. Программа в одном исходном файле

2. Трансляция исходного файла

3. Трансляция нескольких исходных файлов

4. Трансляция модулей

3. КОНЦЕПЦИЯ ДАННЫХ ЯЗЫКА ФОРТРАН

1. Имена (идентификаторы)

2. Понятие типа

3. Буквальные константы

4. Разновидности типов и диапазоны значений

5. Скалярные переменные и константы

6. Массивы

7. Производные типы данных

4. ВЫРАЖЕНИЯ И ПРЕОБРАЗОВАНИЕ ТИПОВ

1. Скалярное присваивание

2. Арифметика Фортрана

3. Логические выражения

4. Работа с текстовыми строками

5. Операции с массивами

5. УПРАВЛЯЮЩИЕ ОПЕРАТОРЫ

1. Условный оператор и конструкция IF

2. Оператор варианта – конструкция CASE

3. Циклы – разновидности конструкции DO

4. Оператор GO TO

6. ВВОД/ВЫВОД ДАННЫХ

1. Простейшие операции ввода/вывода

2. Форматный ввод/вывод данных

3. Ввод/вывод массивов в неявных циклах

4. Файловый ввод/вывод

7. ПРОГРАММНЫЕ КОМПОНЕНТЫ И ЭЛЕМЕНТЫ ООП

1. Структура программных компонентов

2. Внешние подпрограммы

3. Внутренние подпрограммы

4. Модули как библиотеки производных типов

5. Встроенные функции Фортрана

ЗАДАЧИ ДЛЯ ПРОГРАММИРОВАНИЯ

4.3 Логические выражения

Логическими данными чаще всего являются логические отношения числовых или текстовых данных (п. 5.1), хотя могут иметь вид самостоятельных логических выражений. Каждая операция логического отношения имеет два равноценных обозначения, поддерживаемых стандартом Фортрана 90/95 (Таблица 4.5). Для обозначений в первом столбце таблицы, унаследованных от ранних версий Фортрана (ФОРТРАН 77), обязательны обрамляющие точки, являющиеся частью мнемоники операции. Т.е. запись с обрамляющими точками: «.EQ.» – правильно, а без них: «EQ» – неправильно. При записи операций отношения, таких как «= =«, «/ =« и ниже, в том же столбце Таблицы 4.5, обрамляющие символы (точки или что-то еще) не требуются, но нужно следить, чтобы между символами не было пробелов. Если в тексте данного руководства такие пробелы присутствуют, то только для улучшения читаемости, поскольку некоторые читатели будут искать на клавиатуре кнопку с длинным знаком равенства (по аналогии с клавишей Any Key).


Таблица 4.5. Логические отношения в Фортране

Обозначение Отношение
.EQ. или ==РАВНО
.NE. или /=НЕ РАВНО
.GT. или >БОЛЬШЕ
.GE. или >=БОЛЬШЕ ИЛИ РАВНО
.LT. или <МЕНЬШЕ
.LE. или <=МЕНЬШЕ ИЛИ РАВНО

Правила объявления и инициализация логических переменных и констант практически ничем не отличается от объявления и инициализация числовых данных (п. 4.1) – в точности также используется атрибут PARAMETER для объявления именованных констант и оператор присваивания «=« для присваивания логических значений переменным и именованным константам (Пример 4.6). Для объявления логических массивов в примере в пример используется атрибут DIMENSION

Для обеспечения возможности построения из операций отношения более сложных логических выражений в Фортране предусмотрены логические операции, представленные в Таблице 4.6 в порядке убывания приоритета.


Пример 4.6. Особенности деления целых чисел

program LOGFACT1
logical, parameter :: TRUFACT=.TRUE., FALFACT=.FALSE.
logical, parameter , dimension(0:1):: FACTS=(/.FALSE., .TRUE. /)
logical FACT1, FACT2
FACT1 = 0 .EQ. 0; FACT2 = – 1 /= 1  !Присваивание логических значений
print*, TRUFACT, FALFACT	! Печать логических именованных констант
print*, FACT1, FACT2
print*, FACTS
end
	

Таблица 4.6. Логические операторы Фортрана

Обозначение Название оператора
.NOT. ЛОГИЧЕСКОЕ ОТРИЦАНИЕ (НЕ)
.AND. ЛОГИЧЕСКОЕ ПЕРЕСЕЧЕНИЕ (И)
.OR. ЛОГИЧЕСКОЕ ОБЪЕДИНЕНИЕ (ИЛИ)
.EQV. ЛОГИЧЕСКАЯ ЭКВИВАЛЕНТНОСТЬ
.NEQV. ЛОГИЧЕСКАЯ НЕЭКВИВАЛЕНТНОСТЬ

Если операндами логических отношений (Таблица 4.5) могут быть только текстовые и числовые данные, то операндами логических операций могут быть только логические данные.

Логические отношения (Таблица 4.5) имеют более высокий приоритет выполнения по сравнению с логическими операциями (Таблица 4.6). Каждое логическое отношение (утверждение) является элементарным логическим выражением и может принимать значения: ".TRUE." или ".FALSE.", все операции отношения имеют одинаковый приоритет выполнения по отношению друг к другу:

Из логических данных и элементарных логических выражений можно выстраивать достаточно сложные логические выражения. При записи логических выражений можно использовать круглые скобки. Заключенные в круглые скобки части логического выражения вычисляются в первую очередь.

Оба логических выражения (для переменной FACT1 и FACT2 в Примере 4.7) содержат смешение стилей: для X > 0 используется знак «больше», а для Y.LT.2 используется мнемоника «меньше», что допустимо, но чего лучше избегать, в силу возникающей путаницы. В первом выражении проверяется истинность хотя бы одного из условий: принадлежности X интервалу от нуля до двух (включая два) или принадлежности Y тому же интервалу, но (включая ноль), а во втором выражении проверяется одновременная истинность тех же условий.

Поскольку логическое объединение «ИЛИ» (.OR.) имеет меньший приоритет, по сравнению с логическим пересечением «И» (.AND.), то в первом выражении скобки не требуются, а во втором выражении они необходимы для регулирования приоритета – иначе логические пересечения «И» (.AND.) будут выполняться последовательно, как имеющие равный приоритет.


Пример 4.7. Сложные логические выражения

program LOGFACT2
logical  FACT1, FACT2
real :: X= 1., Y =2.
FACT1=X > 0. .and. X <= 2. .or. Y .ge. 0. .and. Y .lt. 2.
FACT2=(X > 0. .and. X <= 2.) .and. (Y .ge. 0. .and. Y .lt. 2.)
print*, FACT1, FACT2
end
	

Практическое использование логических выражений рассматривается в связи с их использованием в логических операторах и конструкциях IF (п. 6.1).