
- •Управление векторами и матрицами
- •Компиляция и выполнение Компиляция
- •Связывание (редактирование связей )
- •Выполнение
- •Примеры
- •Соглашения о записи кода
- •Арифметические выражения
- •Операции отношения
- •Логические выражения
- •Сравнение символов
- •Переносимость результата
- •Спецификация массивов
- •Сечения массива Индивидуальные элементы
- •Сечения
- •Векторные указатели
- •Память для массива Физическая память:
- •Присваивание массива Присваивание всего массива
- •Присваивание секции (вырезки) массива
- •Повторная нумерация
- •Основные встроенные процедуры
- •Массивы нулевого размера
- •Массивы и производные типы
- •Инициализация массивов Конструкторы
- •Оператор data
- •Встроенные функции для массива
- •Пример упрощения
- •Пример исследования (запроса)
- •Пример конструирования
- •Пример локализации
- •Я Операторы управления
- •Вложения
- •Порядок операторов
- •Синтаксис программы Main
- •Формат представления программы
- •Программные единицы
- •Уровни доступа
- •Дополнения
- •Спецификация входных-выходных параметров
- •Использование модуля
- •Родовые подпрограммы
- •Интерактивный ввод-вывод
- •Простой Input и Output
- •Форматирование по умолчанию
- •Форматированный ввод-вывод I/o
- •Дескрипторы редактора
- •Вещественные - форма с фиксированной точкой
- •Вещественные - экспотенциальная форма
- •Символьные
- •Логические
- •Заполнение пробелами (пропуск символьных позиций)
- •Специальные символы
- •Списки ввода-вывода
- •Производные типы данных
- •Неявный цикл do
- •Ввод-вывод без продвижения
- •Файловый ввод-вывод
- •Номера устройств
- •Операторы read и write
- •Оператор write
- •Оператор open
- •Оператор close
- •Оператор inquirе
- •Динамический массив
- •Распределяемые массивы
- •Спецификация
- •Выделение и возвращение памяти
- •Статус распределяемых массивов
- •Потоки памяти (куча)
- •Что есть указатели?
- •Указатели и адресаты
- •Спецификации указателя Общая форма для операторов определения указателя и адресата такая:
- •Присваивание указателя
- •Разыменование (Dereferencing)
- •Статус (состояние) связи указателя
- •Динамическая память
- •Общие ошибки
- •Указатели в производных типах данных
- •Связанные списки
- •Параметры - указатели
- •Функции для указателей
Интерактивный ввод-вывод
Эта глава рассматривает взаимодействие между пользователем и программой с помощью стандартных устройств ввода и вывода (клавиатура и экран). Данные могут запомнены и представлены в нескольких различных видах; данные, запомненные программой в бинарной форме (называемые бесформатными данными), пока программист и пользователь программы предпочтет работать с сивольными (форматными).
Когда данные читаются в программу, сиволы конвертируются в машинную бинарную форму. Просто данные, запомненные в бинарной форме, когда пишутся на экран. Просмотр и форматирование данных специфицируются программистом или берется формат по умолчанию, используемый в Fortran 90. Подмножество спецификаций форматирования представлено далее, полное множество is rarely used.
Может использоваться международное шестнадцатиричное представление вещественных чисел:
BE1D7DBF
Которое трудно для понимания (ограничено использованием во время записи на экран), но связано с вещественным значением 0.00045. Оно может быть записано по разному
0.45E-03
4.5E-04
0.000450
где E## стоит на месте экспоненты и эквивалентно умножению на 10 в степени x10##.
Конвертация внутреннего представления в читаемую пользователем форму известна как форматированный ввод-вывод и заменяющая внешнюю форму символов ссылками на форматирование.
Простой Input и Output
Пользователь может присвоить значения переменным, используя оператор READ. Пользователь , желая знать результат работы программы, обычно выводит на экран, используя операто WRITE.
Чтобы читать значение в переменную, называемую radius, скажем, следующий оператор будет подходящим.
READ(*,*) radius
И значение переменной area будет выдано на экран оператором:
WRITE(*,*) area
Общий вид операторов READ и WRITE :
READ( [UNIT=]unit, [FMT=]format ) список переменных
WRITE( [UNIT=]unit, [FMT=]format ) список переменных
где unit это целое, ассоциированное с экраном или файлом и format описывает, как данные будут выглядеть. Когда читается с клавиатуры, unit может быть равно 5 или *; когда пишется на экран, unit может быть равно 6 или *:
READ(5,*) length, breadth
WRITE(UNIT=6,*) temperature, pressure, mass
WRITE(*,*) pi*radius**2, 2.0
Некоторые переменные (или выражения) могут быть специфицированы в операторе READ или WRITE.
READ(5,*) length, breadth
WRITE(6,*) temperature, pressure, mass
WRITE(*,*) pi*radius**2, 2.0
Форматирование по умолчанию
Когда читается или пишется на экран или с клавиатуры, Fortran-программа автоматически преобразует данные в требуемую форму; символы для экрана, битовые данные для компьютера.
INTEGER :: i, j
REAL :: data(3)
...
READ(*,*) i
WRITE(*,*) i, j, data
Символ * позволяет программе использовать ввод-вывод по умолчанию. Первая * указывает стандартное устройство, вторая * представляет по умолчанию формат переменных, которые преобразуются из одного типа данных в другой. Эта форма вывода данных быстрая, простая.
Форматированный ввод-вывод I/o
Оператор FORMAT может быть использован для чтения или записи данных в форме, отличной от формы по умолчанию.Оператор FORMAT это помеченный оператор, указываемый с помощью числовой метки операторами WRITE или READ в том же программном модуле:
READ(*,100) i, j
WRITE(*,100) i, j
READ(*,FMT=200) x, y
WRITE(*,200) x, y
...
100 FORMAT (2I8) ! 2I8 дескриптор редактора
200 FORMAT (2F10.6) ! 2F10.6 дескриптор редактора
Форматирование - это знание о том, как надо редактировать ввод-вывод. Ввод-вывод это управляемое использование дескрипторов редактора. Общая форма оператора FORMAT такова:
метка FORMAT (список_форматов)
где метка - это идентифицирующее число (уникальное в данной части программы), список_форматов - это список дескрипторов редактора, который включает одно или несколько:
I, F, E, ES, EN, D, G, L, A, H, T, TL, TR,
X, P, BN, BZ, SP, SS, S, /, :, ', и ,(запятая)
В данных заметках только следующие дескрипторы будут рассмотрены:
I, F, E, ES, EN, A, X, /, :, ', и ,(запятая)
поскольку многие дескрипторы редактора включают особые средства, такие как вывод бинарных чисел, и т.п и. имеют ограниченное применение.
Помеченный оператор FORMAT может быть заменен указывающим формат списком дескрипторов в виде символьной строки прямо в операторах WRITE или READ, как например:
INTEGER :: i, j
REAL :: x, y, z
...
READ (*,'(2I8)') i, j
WRITE (*,'(3F12.6)') x, y, z
Это имеет преимущество в лучшей ясности для читателя, которому не нужно смотреть два оператора.