Слайд 3ФАЙЛЫ.
Файл – это последовательность записей.
Файлы бывают внешние и внутренние.
Внешний файл
– это либо файл на внешнем устройстве, либо само устройство.
Внутренний
файл – это знаковая переменная служащая источником или целью для какой-либо формальной операции ввода/вывода.
Слайд 4В дальнейшем, внутрение файлы MS-FORTRAN, a так же файлы, доступные
для операционной системы, мы будем именовать просто "файлы".
Оператор OPEN
обеспечивает связь между двумя понятиями файла, в большинстве случаев неопределенность исчезает после открытия файла, когда оба понятия совпадают.
Слайд 5ЗАПИСИ
Основной eдиницeй в файлах MS-FORTRAN является запись.
Запись - это
набор знаков или значений.
Допускаются записи трех видов:
форматные записи
бесформатные записи
записи
конца файла
Слайд 6ЗАПИСИ
ФОРМАТНЫЕ ЗАПИСИ
Форматные записи - это набор знаков, заканчивающихся системным признаком
конца строки.
Форматные записи интерпретируют согласно c тем, как большинство операционых
систем и файлов интерпретируют строку.
Слайд 7ЗАПИСИ
БЕСФОРМАТНЫЕ ЗАПИСИ
Бесформатные записи - это набор значений, не преобразуемых системой.
Бесформатные
файлы хранятся в виде физических записей.
Двоичные файлы содержат только значения
во внутреннем представлении и, исходя из этой информации нельзя, в общем случае, определить структуру записи.
Слайд 8ЗАПИСИ
Запись конца файла
После последней записи в файле MS-FORTRAN инициирует запись
конца файла.
Метод представления конца файла частично зависит от операционной системы.
Слайд 9УСТРОЙСТВА
Устройство является средством обращения к файлам.
Устройство определяется в операторе
ввода/вывода как внешнее или внутреннее.
Слайд 10ВНЕШНИЕ УСТРОЙСТВА
Спецификацией внешнего устройства является целое выражение или символ *
определяет
экран для вывода и клавиатуру для ввода
В большинстве случаев, спецификация
внешнего устройства связана c физическим устройством c помощью имени при использовании оператора OPEN.
При такой связи устройства c именем файла, операторам ввода/вывода достаточно номера устройства для обращения к соответствующему внешнему устройству.
Если файл открыт, номера устройства будет связан c конкретным внешним устройством до тех пор, пока не используют операцию CLOSE, или пока не окончится программа.
Eдинственным исключением из этих правил является то, что нулевое устройство связывается c клавиатурой для чтения и экраном для записи, и не требуется явного оператора OPEN.
Слайд 11Система файлов МС-Фортрана интерпретирует символ *, как нулевое устройство.
Слайд 12ВНУТРЕННИЕ УСТРОЙСТВА
Спецификацией внутреннего устройства является символьная переменная или символьный массив,
непосредственно определяющий внутренний файл.
Слайд 13ХАРАКТЕРИСТИКИ ФАЙЛОВ
Файлы Фортрана имеют следующие атрибуты:
Имя
Положение
Структуру
Метод доступа
Слайд 14ХАРАКТЕРИСТИКИ ФАЙЛОВ
Имя файла
Файл может иметь имя.
Имя, если оно присутствует,
- это последовательность знаков, используемая операционной системой для распознавания файлов.
Правила именования определяются операционной системой.
Слайд 15ХАРАКТЕРИСТИКИ ФАЙЛОВ
Положение файла
Положение файла обычно устанавливается предшествующим положением ввода/вывода.
Файл имеет:
начальную точку,
конечную точку,
текущую запись,
предыдущую запись,
следующую запись.
Слайд 16ХАРАКТЕРИСТИКИ ФАЙЛОВ
При открытии файла устанавливается его начало.
Если следующей операцией ввода/вывода
являются WRITE, все старые данные затираются.
Положение файла после последовательного
выполнения операций WRITE - конец файла, но не за пределом записи конца файла.
Использование оператора ENDFILE помещает файл за записью конца файла
То же делает и оператор READ, выполняемый в концe файла.
Вы можете определить конец файла, используя выражение END= в операторе READ.
Слайд 17ХАРАКТЕРИСТИКИ ФАЙЛОВ
Структура файлов
Внешние файлы могут быть открыты как форматные, бесформатные
или двоичные файлы.
Bсе внутренние файлы являются форматными.
Форматные — файлы,
состоящие только из форматных записей.
Бесформатные — файлы, состоящие только из бесформатных записей.
Двоичные — поледовательность байтов без внутренней структуры.
Слайд 18ХАРАКТЕРИСТИКИ ФАЙЛОВ
Методы доступа
Внешние файлы открываются как файлы последовательного либо прямого
доступа.
Файл последовательного доступа
Файл, содержащий записи, порядок следования которых определен порядком,
в котором они были записаны.
Эти файлы не могут быть прочитаны или записаны c помощью выражения REC=.
Файл прямого доступа
Файл, записи которого могут быть записаны или прочитаны в любом порядке.
В файлах прямого доступа возможно занесение записей в произвольном порядке (например: 9, 5 и 11) без занесения записей между ними.
Слайд 19ХАРАКТЕРИСТИКИ ФАЙЛОВ
В файлах прямого доступа:
Записи имеют одинаковую длину, определяемую
при открытии файла, записи последовательно нумеруются, первая запись имеет номер
1.
Невозможно удаление записанной записи; однако запись можно переписать, новым значением.
Операционная система пытается расширить файл прямого доступа, если предыдущая запись выходит за установленные ранее границы, удача этой операции определяется наличием физического пространства на носителе.
Слайд 20Чтение записей из файлов прямого доступа не имеющих записей приводит
к ошибке.
Слайд 21ОСОБЕННОСТИ ВНУТРЕННИХ ФАЙЛОВ
Внутренний файл - это символьная переменная или элемент
символьного массива.
Слайд 22ОСОБЕННОСТИ ВНУТРЕННИХ ФАЙЛОВ
Внутренний файл содержит только одну запись, совпадающую по
длине c символьной переменной или элементом массива.
если записывается не вся
запись, оставшееся место заполняется пробелами
Положение файла всегда в начале файла, до выполнения операторов ввода/вывода.
Внутренние файлы позволяют использовать только форматный, последовательный ввод/вывод.
внутрений файл могут определять только операторы ввода/вывода READ и WRITE.
Слайд 23ОСОБЕННОСТИ ВНУТРЕННИХ ФАЙЛОВ
Внутренние файлы обеспечивают механизм для использования форматных возможностей
системы ввода/вывода для преобразования значений "в" и "из" представления внешних
символов во внутренние структуры памяти
МС-Фортрана.
Так чтение символьных переменных преобразует символьные значения в числовые, логические или символьные значения, а запись символьных переменных позволяет преобразовать значения в их (внешнее) символьное представление.
Слайд 24Редакционная спецификация обратный слеш (\) не может быть использована во
внутренних файлах.
Слайд 25Наиболее широко используемые структуры файлов
B MC-Фортране возможно множество комбинаций структур
файла.
Однако, для большинства применений достаточно двух:
* - файлы
Именованые, внешние,
последовательные, форматные файлы
Слайд 26ШИРОКО ИСПОЛЬЗУЕМЫЕ СТРУКТУРЫ ФАЙЛОВ
* - файлы
* - представляет клавиатуру или
экран
Это последовательные, форматные файлы, они называются нулевыми устройствами.
Слайд 27Когда происходит чтение c устройства номер ноль, Вы должны ввести
всю строку!
используйте обычные операции для исправления ошибок набора
Слайд 28ШИРОКО ИСПОЛЬЗУЕМЫЕ СТРУКТУРЫ ФАЙЛОВ
Внешние файлы
Внешние файлы могут быть связаны c
системным именем одним из следующих методов:
1
Если файл явно открыт, имя
может быть приведено в операторе OPEN.
2
Если файл явно открыт и имя определено пробелами, имя читается из управляющей строки (если имеется).
Если командная строка отсутствует или не содержит имени, пользователь получит запрос об имени.
3
Если файл открыт неявно (операторами READ и WRITE) имя определяется согласно методу, который будет изложен далее в лекции «Операторы ввода/вывода».
4
Если файл явно открыт и имя отсутствует в операторе OPEN, этот файл считается временным или вспомогательным файлом, принимающим имя, заложенное в компиляторе.
Слайд 29широко используемые структуры файлов
Пример программы, использующей для чтения и записи
*-файлы, a так же именованные, внешние, последовательные форматные файлы.
Скопировать файл
содержащий три колонки целых переменных, каждая по 7 колонок шириной, имя которого введено пользователем, в файл c именем OUT.TXT с перестановкой первой и второй колонок.
Задача:
Слайд 30широко используемые структуры файлов
PROGRAM СОLSWP
CHARACTER*64 FNAME
C Вывод запроса имени файла
на экран
WRITE (*,900)
C Чтение имени файла c клавиатуры
READ(*,910) FNAME
C Используем устройство 3
для ввода;
С подойдет любой номер устройства, кроме 0.
OPEN (3,FILE=FNAME)
C Используем устройство 4 для вывода;
С подойдет любой номер устройства, кроме 0 и 3.
OPEN (4,FILE='OUT.TXT',STATUS='NEW')
C Cчитываем и записываем до конца файла.
100 READ (3,920,END=200) I, J, K
WRITE (4,920) J, I, K
GO TO 100
200 WRITE (*,910) 'DONE'
900 FORMAT ('INPUT FILE NAME'\'имя входного файла'\)
910 FORMAT(A)
920 FORMAT (3I7)
END
Слайд 31Другие структуры файлов
Менее часто используемые структуры файлов предназначены для определенных
специальных применений.
Слайд 32ДРУГИЕ СТРУКТУРЫ ФАЙЛОВ
B обобщенном виде, специальные структуры файлов можно описать
так:
1
Если необходим произвольный доступ ввода/вывода, например, в базе данных, то
требуются файлы c прямым доступом.
Слайд 33ДРУГИЕ СТРУКТУРЫ ФАЙЛОВ
2
Если данные должны быть записаны, a затем снова
считаны, то бесформатные файлы, возможно, будут более эффективны в отношении
скорости, но менее эффективны в отношении пространства на диске.
Слайд 34Комбинация прямого доступа и бесформатных файлов будет идеальной для создания,
эксплуатации и доступа к базе данных
МС-Фортрана!
Слайд 35ДРУГИЕ СТРУКТУРЫ ФАЙЛОВ
3
Если необходимо передать данные без какой-либо интерпретации в
системе, особенно если надо передать все 256 возможных байт, то
требуется бесформатный ввод/вывод.
Бесформатный ввод/вывод используется при управлении устройством c однобайтовым, двоичным интерфейсом.
В данном случае форматный ввод/вывод преобразовывал бы некоторые символы, такие как представление ASCII для RETURN, которые не смогли бы передаться в неизмененном виде.
Количество записываемых байтов для целой константы определено метакомандой $STORAGE
Слайд 36ДРУГИЕ СТРУКТУРЫ ФАЙЛОВ
4
Если требуется передать данные, как описано в пункте
3, но считываться они будут не фортранной программой, то рекомендуется
BINARI формат.
Бесформатные файлы блокированы внутренне и, следовательно, не фортранная программа для правильного восприятия данных быть настроена на такой формат.
Двоичные файлы содержат только записанные в них данные.
Пробелы и неполные записи не могут c них считаться.
Слайд 37Старые и новые файлы
Открытый файл MC-Фортрана является либо OLD (старым),
либо NEW (новым).
Слайд 38СТАРЫЕ И НОВЫЕ ФАЙЛЫ
Файлы "открытые для чтения" не отличаются
от
"открытых для записи".
Следовательно, можно открывать старые (уже существующие) файлы и
записывать в них заново.
Можно попеременно записывать и считывать данные одного и того же файла
Но не за пределами конца файла, и не считывать незаписанные записи в файле прямого доступа
Запись в последовательный файл уничтожает любые записи после вновь записываемых
Слайд 39СТАРЫЕ И НОВЫЕ ФАЙЛЫ
Когда устройство, подобное клавиатуре или принтеру, открыто,
как файл, то обычно не имеет значения, является этот файл
OLD или NEW.
Ho для файлов на диске открытие файла NEW, создает новый файл:
Если у предыдущего файла было такое же имя, то он стирается.
Если новый файл закрыт c помощью STATUS='KEEP', или если программа заканчивается без выполнения над файлом операции CLOSE, то создается постоянный файл c именем, данным, при открытии.
Слайд 40Совмещение файла
Если системы, объединены в одну сеть, то одновременно к
одному файлу может обращаться несколько программ.
Два условия (SHARE и MODE)
в операторе OPEN позволяют управлять доступом к файлу.
Эти условия существуют так же в операторе INQUIRE, поэтому можно определить состояние доступа к файлу.
Слайд 41СОВМЕЩЕНИЕ ФАЙЛА
Значение MODE определяет, как можно использовать файла при его
первом открытии.
Файл можно открыть для чтения, записи или для того
и для другого.
Значение SHARE определяет то, как впоследствии будет производиться доступ к файлу.
(пока файл открыт)
Можно отвести его для чтения, записи, для того и другого, или не разрешить ни чтение, ни запись.
Можно так же запретить любое обращение к нему, включая его открытие (пока файл открыт).
Оператор LOCKING позволяет блокировать и вновь открыть специальные записи в файлах прямого доступа.