
- •Часть 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
Правило:
Ввод и вывод текстовой информации только форматный.
Ввод-вывод текстовой информации осуществляется по спецификации А:
Aw
где w– количество позиций, из которых считывается текстовая информация или куда выводится текстовая информация.
Мини задача:
Написать программу, в которой исходные данные читаются из файла, имя которого нужно вводить с клавиатуры.
CHARACTER*8 IMFILE
WRITE (6,*)’Введите имя файла исходных данных’
READ (5,10) IMFILE
10 Format (a8)
OPEN (UNITE=4, FILE=IMFILE) Обратите внимание, что переменная IMFILE записывается без кавычек
READ (4,*) A,B,C
…
С экрана будет вводиться форматно имя файла (например, DAN.DAT) и присваивается текстовой переменнойIMFILE(имя открываемого файла). Текстовая информацияDAN.DATвводится без кавычек и считывается по форматуA8.
Допускается использовать спецификацию А без количества позиций w, например:
10 Format (a)
Тогда ширина считываемого поля принимается равной длине, указанной в операторе CHARACTER.
Можно использовать форматизированный ввод без оператора FORMAT. Например:
READ (5,’(A)’)IMFILE
Процесс ввода текстовой информации и размещения ее в памяти ЭВМ протекает следующим образом. Считанная по формату А информация в количестве символов Awсначала помещается в буфер ЭВМ, а затем записывается в отведенное поле памяти.
Если
имя файла меньше 8 символов и набрано
без пробела впереди (в конце можно) –
например,DAN.DAT
, то информация прочитается правильно.
Но если впереди поставить пробел (
-DAN.DAT),
то файл DAN.DAT
на диске никогда не найдём.
Это происходит из-за того, что для ЭВМ
имя DAN.DAT
совершенно отличается от имени этого
же файла, но с пробелом впереди.
Если ввод имени файла осуществляется по формату А8, но:
1) Вводится меньше 8 символов, то они помещаются в переменную imfile, а недостающие до 8 позиции дополняются пробелами.
2) Вводится имя большего размера, чем 8 позиций, то будут восприняты только первые 8 символов и они будут записаны в переменную imfile;
Задача:
Файл с именем TEX.DAT содержит две записи: фамилию и адрес.
Сёмин А.В.
ул. Могилёвская д.37 кв.6
Задача: Прочитать первую строку как переменную, вторую строку как текстовый массив. Вывести считанную информацию форматно.
Разобьём строки на переменные, в которые мы и будем производить считывание.
Сёмин
А.В.
АT
ул.
Могилёвская д.37 кв.6
В1 В2 В3 В4 В5
CHARACTER*10 AT,B(5)*5
С Пример 1: w=len
Количество позиций ширины поля w оператора Format совпадает с длиной переменной, описанной в CHARACTER*10 AT,B(5)*5
OPEN (4, FILE=’TEX.DAT’)
READ (4,8) AT,(B(J),J=1,5)
Открываем TEX.DAT, читаем из него переменную АT и массив В.
8 Format (a10/5a5)
WRITE (6,8) AT,B
При таком выводе первый символ каждой строки пропадает потому, что служит для управления печатью. Поэтому в каждой новой выводимой строке необходимо отступать как минимум одну позицию. Для этого нужно использовать другой формат для вывода.
При вводе ширина полей считывания спецификации оператора FORMATравна длине описания текстовых переменных в оператореCHARACTER.
Правильный вывод:
WRITE (6,9) AT,B