- •Часть 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
9 Format (1x,a10/1x,5a5)
В результате такого вывода получим:
Сёмин А.В.
ул. Могилёвская д.37 кв. 6
Это наиболее благоприятный вывод текстовой информации, когда w=len.
w – ширина поля вывода.
len – длина текстовой переменной.
Рассмотрим случай, когда wменьше длины записи (w<len).
С Пример 2: w<len. При чтении информации.
Возвратимся в начало файла и прочитаем информацию с другим оператором FORMAT.
REWIND 4
READ (4,9) AT,B
FORMAT (A8/5A4)
w
Переменной АTприсвоится значение аt=Сёмин А.В..
len=10 позиций
Так как w=8, аlen=10, то при чтении сначала будут восприняты первые 8 символов из первой строки и при размещении этой информации в память ЭВМ в переменную АTсправа произойдёт дополнение двумя пробелами до 10 позиций.
При чтении второй строки по формату 6A4 будет прочитано шесть раз по 4 символа текста и при заполнении памяти массива В каждый элемент будет дополнен пробелом.
ул. Могилёвская д.37 кв.6
В(1) В(2) В(3) В(4) В(5) не прочитает
Переменным массива В присвоятся значения:B(1)= ул. (дополнило одним пробелом); В(2)=Моги (w=4, аlen=5, поэтому считаетМогии недостающую позицию до 5 дополнит пробелом); В(3)=лёвс (дополнило пробелом); В(4)= ….
Если прочитанную и помещенную в память ЭВМ информацию вывести при помощи ранее используемых операторов
WRITE(6,10)AT,B
FORMAT(1X,A10/1X,5A5)
То получим :
Семин А
ул._ _Моги_левс_кая_ _д.37_ _кв. _ _
Рассмотрим случай, когда w>len:
С Пример3: w>len. При чтении информации.
REWIND 4
READ (4,11) AT,B
FORMAT (A12/5A6)
w=12
Прочитает первую строку:w=Сёмин А.В.
лen =10
Из первой строки по формату А12 будет прочитано 12 символов, включая два дополнительных пробела. При занесении в память ЭВМ
запишется только правая часть воспринятой информации: АT=мин А.В.
Две буквы слева будут утеряны.
Аналогично при чтении второй строки по формату 6А6 в буфер будет восприниматься по 6 символов текста
ул. Могилёвская д.37 кв.6
В(1) В(2) В(3) В(4) В(5)
А при занесении в память ЭВМ в каждом элементе массива В будет утеряно по одной букве слева.
Переменным массива В присвоятся значения:B(1)=л. Мо; В(2)=илёвс; В(3)=ая д.;
В(4)= ….
Если вывести эту информацию при помощи операторов
WRITE (6,9) AT,B
9 Format (1x,a10/1x,5a5)
то получим:
мин А.В.
л. Моилёвсая д.7 кв.
Мы рассмотрели особенности ввода текстовой информации и размещения ее в памяти ЭВМ. При форматном выводе по спецификации Awпринимали, что ширина выводаwравна длине переменнойCHARACTER.
Предположим, в выше приведенном примере мы правильно прочитали переменную АTдлиной 10 символов и в памяти ЭВМ она содержит текст:
Семин а.В.
Выведем эту переменную с различной шириной поля оператора FORMAT .
C Пример 4. : w>len , При вводе текстовой переменной.
WRITE(6,9)AT
FORMAT (1X,A12)
В результате получим:
len= 10
Семин А.В.
w= 12
Так же, как и при выводе информации целого и вещественного типа, если ширина поля больше, чем занимает место выводимая информация, то она прижимается к правому краю поля.
C Пример 5. :w < len. При выводе текста.
WRITE(6,10)AT
FORMAT(1X,A8)
Выводимая информация не помещается в отведенное поле. При выводе цифровой информации во всех восьми позициях отпечатались бы символы “*”. При выводе текста отпечатается только левая часть текстовой переменной, которая помещается в отведенное поле. Поэтому получим :
Семин А.