- •Часть 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
Правила ввода-вывода текстовой информации:
1). Ввод информации
Текстовая информация читается форматно по спецификации А. В соответствии со спецификацией оператора FORMAT Аw с экрана дисплея в буфер ЭВМ считывается количество w позиций текстовой информации. Затем информация из буфера переносится в память ЭВМ. Это количество w записывается в текстовую переменную длиной len. Идеальный случай: w=len.
Если w не равно len, то возникают сложности в запоминании правил занесения информации. Поэтому воспользуемся мнемоникой. Представим, что два таких доступных студенту предмета, как стакан и линейка представляют собой соответственно длину текстовой переменной len и ширину считываемого поля w оператора Format.
Стакан - длина текстовой переменной, описанной в операторе CHARACTER.
Линейка – количество текстовых символов, обрабатываемых оператором FORMAT.
При чтении информации:
1. Если w<len
Считанный текст короче, чем длина переменной. Этот текст помещается в текстовую переменную, а справа дополняется пробелами. (Линейка вставляется в стакан слева. Линейка короче стакана). Количество пробелов равно недостающему количеству символов до длины len.
2. Если w>len
В буфер ЭВМ считано больше символов, чем может поместиться в текстовой переменной. В этом случае в длину len помещается правая часть считанного текста, левая часть обрезается. (Линейка вставляется в стакан слева. Линейка длиннее стакана. Обрежутся первых w-len символов слева).
Вывод информации
Вывод информации осуществляется форматно по спецификации Aw. При выводе из ячейки памяти длиной len текст помещается в буфер и выводится на внешнее устройство в соответствии со спецификацией оператора FORMAT Aw.
1. Если w>len
Ширина поля вывода больше, чем количество выводимой информации.
Выводимая информация (len) прижимается к правому краю поля, а слева дополняется пробелами (Линейка вставляется в стакан справа. Линейка короче стакана). Количество пробелов равно w-len.
2. Если w<len
Выводимая информация не помещается в ширину поля вывода. При выводе текста не произойдёт появление символов “ * ” вместо информации как для спецификацийI, F, E. Будет выведена левая часть текстовой переменной (стакан открыт справа, а линейка длинная).
При этом необходимо учесть, что если при выводе мы не отступим хотя бы одну позицию с начала строки, то первый символ заменится пробелом (первая позиция строки используется для управления режимом вывода информации (см. “Спецификация I”)).
Примечание:
Средствами языка ФОРТРАН для персональных ЭВМ при вводе-выводе информации по спецификации Аw можно не указывать ширину поля.
Пример:
CHARACTER*8 A1,B1,T*125
READ (5,7) A1
FORMAT (A)
Здесь ширина А не указана. При этом автоматически считается, что w=len. Поэтому переменную А1 считываем и выводим как по формату А8.
WRITE (6,7) A1
Необходимо учесть, что при таком выводе по формату 7 первый символ выводимого текста будет утерян
Вместо двух строк:
READ (5,7) A1
FORMAT (A8)
можно записать одну форматизованную строку:
READ (5,’(A8)’) A1
Причём это применимо для всех типов переменных. Например:
READ (5,’(F7.2)’) X
строка оператораFORMAT
Строка оператора FORMATможет быть записана внутри оператораREADилиWRITEв виде текстовой константы, взятой в апострофы.
Т*125 – максимальная длинна строки.