- •Часть 3
- •Содержание
- •30. Работа с файлами
- •Примечание:
- •31. Открытие файлов
- •File not found
- •32. Непосредственная работа с файлом
- •33. Форматный вывод информации
- •34. Форматное чтение информации из файла
- •35. Обработка сбойных ситуаций и ситуаций “конец файла” при вводе-выводе информации
- •Обработка сбойной ситуации:
- •7 Write (6,*) ’Введите a,I,b’
- •Обработка ситуации “конец файла”:
- •36. Операторы для работы с записями в файле
- •37. Дополнение файла информацией
- •Первый способ дополнения файла информацией:
- •10 Write (6,*)’Всего записей в файле’,kzap
- •Второй способ дополнения файла информацией
- •4 Write (6,*)’в файле было записей’,kz
- •38. Работа с текстом
- •39. Текстовые константы
- •Правило:
- •10 Format (a8)
- •10 Format (a)
- •1) Вводится меньше 8 символов, то они помещаются в переменную imfile, а недостающие до 8 позиции дополняются пробелами.
- •2) Вводится имя большего размера, чем 8 позиций, то будут восприняты только первые 8 символов и они будут записаны в переменную imfile;
- •8 Format (a10/5a5)
- •9 Format (1x,a10/1x,5a5)
- •9 Format (1x,a10/1x,5a5)
- •Семин а.В.
- •Правила ввода-вывода текстовой информации:
- •1). Ввод информации
- •Примечание:
- •40. Текстовые подцепочки
- •41. Вывод графиков
- •42. Эквивалентирование текстовых переменных
- •If(fam1.Eq.Fam2) write(6,9) fam2,k1,k2,k3,k4
- •7 Format (a40,i5,a15,i5,a7)
- •If (ngod.Ne.1962) goto 4
- •9 Format (1x,a40,i5,a15,i5,a7)
- •10 Write(4,*)’Конец просмотра базы данных’
- •43. Создание библиотек
- •44. Решение дифференциальных уравнений
- •45. Работа с комплексными данными
- •Правило:
- •46. Ввод-вывод переменных комплексного типа
- •Примечание:
- •47. Встроенные функции комплексного типа
- •48. Оператор equivalence
- •Правило:
- •49. Результаты арифметических операций в выражениях с данными разного типа
- •50. Файлы прямого доступа
- •51. Способы передачи форматных записей
- •52. Модификации оператора цикла do
- •6 Continue
- •If (y.Lt.0.05) cycle
- •55. Командные файлы
- •If errorlevel 1 go to exit
- •If errorlevel 1 go to done
36. Операторы для работы с записями в файле
К операторам для работы с записями в файле относят:
BACKSPACE n – позволяет вернуться на одну запись назад в файле, открытому по каналуn.
Пример:
BACKSPACE 3 или BACKSPACE (UNIT=3)
Оператор BACKSPACEможет повторяться несколько раз или находиться внутри циклаDO.
DO 2 I=1,4
2 BACKSPACE 3
Если при многократном повторном выполнении BACKAPACE3 метка считывания записи переместится в самое начало файла, то операция остановится. Указатель считывания записи будет установлен на первую запись.
2) REWIND n –устанавливает указатель считывания записи в самое начало файла на первую запись. Файл открыт по каналуn;
ENDFILE n – записывает физический признак конца файла на том месте, где находится указатель считывания записи. После момента установки её в любом месте файла, информация после этого оператора обрезается.
37. Дополнение файла информацией
При дополнении файла информацией не происходит удаления информации, содержащейся в файле, а происходит дополнение новых записей в файл и файл при этом увеличивается.
Задача:
В файле NAGR.DATхранятся записи, содержащие значенияU,I,cosφ,t. Нужно:
1) открыть файл, читать его до конца, затем дополнить его аналогичной информацией. Закончить дополнение файла по сбойной ситуации;
2) подсчитать и выдать количество записей в старом файле и в изменённом.
Первый способ дополнения файла информацией:
OPEN (3,FILE=’NAGR.DAT’,STATUS=’OLD’)
В файле неизвестное количество записей. Неизвестно: форматная запись или нет.
KZAP=0
READ (3,*, END=8) U,TOK,CF,T
KZAP=KZAP+1
GOTO 7
WRITE (6,*)’В файле было ’,KZAP,’ записей’
Считываем первую запись и счётчик зафиксирует эту запись (KZAP=KZAP+1). По GO TO 7 повторяется чтение новой записи. Когда чтение дойдёт до конца файла, управление передаётся на метку 8. НО ФАЙЛ НЕ ЗАКРЫВАЕТСЯ. Сейчас нам необходимо в цикле вводить информацию: U, I … с клавиатуры дисплея и записывать эту информацию в файл. Процесс ввода и записи можно повторять бесконечное число раз до возникновения сбойной ситуации.
BACKSPACE 3
WRITE (3,*) U,TOK,CF,T
С помощью последних 2-х строк происходит возвращение назад на одну запись в файле и восстановление последней записи. Без перезаписи последней строки невозможно осуществить дальнейшую запись информации в файл.
WRITE (6,*)’Введите U,I,cos f,T’
READ (5,*, ERR=10)U,TOK,CF,T
WRITE(3,*)U,TOK,CF,T
Процесс ввода информации с клавиатуры дисплея и записи в файл может повторяться бесконечное количество раз по GO TO 11. При наступлении сбойной ситуации управление будет передано на метку 10.
KZAP=KZAP+1
GOTO 11
10 Write (6,*)’Всего записей в файле’,kzap
CLOSE (3)
Желательно закрыть файл.
STOP
END
Без перезаписи последней строки исходного файла эта программа будет работать на СМ, ЕС технике, кроме персональных ЭВМ. На персональных ЭВМ после попытки чтения информации из записи, содержащей конец файла и после наступления ситуации “конец файла”, запись информации в этот файл невозможна (мало кто об этом знает).
Чтобы можно было записать информацию в этот файл, необходимо:
вернуться на одну запись назад – BACKSPAСE 3
повторить последнюю запись в файл. На место последней записи записать последнюю информацию, считанную из старого файла;
потом свободно записывать дополнительную информацию в файл.