- •Лекция 3
- •3. Алгоритмический язык фортран /3,5,11/
- •3.1. Историческая справка
- •1978 Г., Фортран 77.
- •3.2. Элементы языка Фортран
- •3.2.1. Алфавит, форматы записи программы
- •3.2.2. Имена, объекты данных, атрибуты
- •3.2.4. Программные единицы
- •3.3. Порядок следования операторов и метакоманд в программной единице
- •3.4. Организация данных
- •3.4.1. Типы данных
- •3.4.2. Описание несимвольных типов данных
- •3.4.3. Буквальные (неименованные) константы
- •3.4.4. Задание именованных констант
- •3.4.5. Задание начальных значений переменных
- •3.4.6. Символьные данные
- •3.5. Выражения, операции и присваивания
- •3.5.1. Арифметическое выражение
- •Integer(2)
- •Integer(4)
- •3.5.2. Выражения отношения и логические выражения
- •3.5.3. Правила вычисления выражений
- •3.5.4. Константные и описательные выражения
- •3.6. Управляющие операторы и конструкции
- •3.6.2. Конструкция select case
- •1 Continue
- •3.6.5. Операторы pause, stop, end
- •3.7. Форматный ввод-вывод
- •3.7.1. Вводный комментарий
- •3.7.2. Оператор format
- •3.7.3. Дескрипторы данных
- •3.7.4. Дескрипторы управления
- •3.7.5. Задание формата в операторах ввода-вывода
- •20 Format (f5.0, 2p, 2f5.0, 3p, f5.0)
- •21 Format (1x, 2p, e10.3, 3x, 3p, f10.3)
- •3.7.6. Списки ввода-вывода
- •3.7.7. Управляемый списком ввод-вывод
- •Namelist / имя списка b/b / список переменных &
- •24.000000 Qwertyuiop sub
- •3.8. Массивы
- •3.8.1. Описание размерности статических массивов
- •3.8.2. Сечение массива
- •3.8.3. Присваивание значений элементам массива
- •Where (логическое выражение - массив) присваивание массива
- •3.8.4. Динамические массивы
- •Integer n, m, kp
- •Integer I
- •Interface
- •3.8.5. Массивы – формальные параметры процедур
- •Integer n, m, j
- •Integer n, I, j
- •Interface
- •3.9. Файлы Фортрана
- •3.9.1. Основные понятия
- •3.9.2. Операции над внешними файлами
- •3.9.3.Операторы передачи данных
- •Endfile u
- •3.9.4. Порядок выполнения передачи данных
- •3.9.5. Операторы подсоединения устройств к файлам
- •24.000000 Qwertyuiop sub
- •3.9.6. Операторы позиционирования файла
- •3.10. Встроенные функции и процедуры
3.7.4. Дескрипторы управления
Таблица 3.7. Неповторяющиеся дескрипторы преобразований
Форма |
Имя |
Назначение |
Использование |
Строка |
Преобразование апострофа |
Передает строку текста на внешнее устройство |
Вывод |
NH |
Преобразование Холлерита |
Передает n символов на внешнее устройство |
Вывод |
Q |
Преобразование опроса |
Возвращает число непрочитанных символов записи |
Ввод |
Tn, TLn, TRn |
Преобразование позиции |
Спецификация позиции в записи |
Вывод/ввод |
NX |
Преобразование позиции |
Спецификация позиции в записи |
Вывод/ввод |
SP, SS, S |
Преобразование знака плюс |
Управление выводом знака плюс |
Вывод |
/ |
Преобразование слэша |
Переход к следующей записи и простановка символа конца записи |
Вывод/ввод |
\ |
Преобразование обратного слэша |
Продолжение текущей записи (для тех же целей можно использовать знак $) |
Вывод |
: |
Прерывание выполнения действия дескриптора |
При исчерпании списка вывода прерывает выполнение дескриптора |
Вывод |
KP |
Преобразование масштабного коэффициента |
Устанавливает значение показателя степени в дескрипторе данных F, E, D и G |
Вывод/ввод |
BN, BZ |
Интерпретация пробела |
Устанавливает способ интерпретации пробелов |
Ввод |
Пример использования дескриптора Q.
integer kar(5), nq ! в этом примере спецификатор
character(1) chr(80) ! формата задан как символьная строка
read (4,’(5I4, Q, 80A1)’) kar, nq, (chr(i), i=1,min(nq,80)) ! ’(5I4, Q, 80A1)’
Пример, иллюстрирующий использование дескриптора Q в следующем операторе ввода.
integer k, nq
character(1) chr(80)
read(*,’(I2,Q)’, advance = ‘no’) k,nq ! опция advance = ‘no’ задает
read(*,’(80A1)’, (chr(i), i=1,min(nq,80)) ! ввод без продвижения
Пример использования масштабного множителя.
REAL A,B,C,D
20 FORMAT (F5.0,2P(2F5.0),3P,F5.0)
READ (5,20) A,B,C,D
.........................
WRITE (6,21) A,A
21 FORMAT (1X,2P,E10.3,F10.3)
.........................
Предположим, что A, B, C и D это следующие поля:
“2400”, “2.4E3”, “2400”, “2400”
тогда переменные A, B, C и D получат значения: 2400, 2400, 24 и 2.4 (при вводе), а результаты вывода будут следующими: 24.00+02, 240000.
Пример использования спецификатора BZ.
REAL A,B
READ (4,20) A,B
20 FORMAT (F3.0, BZ, F3.0)
Предположим, что поля записей A и B имеют вид: 24, 24", тогда переменные A и B получат следующие значения 24, 204.