Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
lek-3 по инфе.doc
Скачиваний:
8
Добавлен:
03.03.2015
Размер:
213.5 Кб
Скачать

1.10.2. Некоторые правила ввода.

Запись файла – это строка символов, завершаемая символом новой строки. Файл состоит из записей и завершается специальной записью «конец файла».

Поле записи файла– это часть записи, содержащая данные, которые могут быть использованы оператором ввода.

Ввод под управлением списка выполняется по следующим правилам:

 поля записи могут разделяться запятой и пробелами;

 если между полями записи присутствует слеш (/), то ввод прекращается;

 каждый оператор ввода (если не задана соответствующая опция) выполняет ввод с начала новой записи;

 если число элементов списка ввода больше числа полей записи, то для ввода недостающих значений оператор ввода перейдет к следующей записи;

 для ввода значения логической переменной достаточно набрать T(в случае.TRUE.) илиF(в случае.FALSE.).

В соответствии с перечисленными правилами, оператору ввода

read *,x,y,z

может соответствовать одна запись

1.1, 2.2, 3.3

Вместе с тем, конструкции ввода вида

read *,x

read *,y

read *,z

соответствует три записи

1.1

2.2

3.3

При создании, например, в первой строке большего числа полей ввода, чем это необходимо

1.1 4.4 5.5 6.6 7.7

2.2

3.3

поля с символами 4.4 5.5 6.6 7.7 будут в последнем примере ввода проигнорированы («лишние» данные прочитаны не будут). По результатам ввода будем соответственно иметь:x=1.1,y=2.2,z=3.3.

Т.е. для каждого оператора READ следует набирать числа с новой строки данных (даже если на предыдущей строке не все числа прочитаны).

Ошибки ввода возникают в следующих ситуациях:

 число элементов списка ввода больше числа доступных для чтения полей записи (то есть выполняется попытка чтения записи «конец файла» или вслед за этой записью);

 размещенные на читаемом поле символы не могут быть преобразованы в тип соответствующего элемента списка ввода.

Так, если, например, имеем оператор ввода

read *,k

то соответствующая ошибка ввода последует при задании, в частности,

k=2

правильный ввод:

2

1.10.3. Ввод и вывод данных из текстового файла.

Пусть необходимо определить вещественные переменные x,y,z, задав им при вводе значения 1.2, 3.4 и 5.6. Создадим файл inpdata.dat, например, на логическом диске D: в папке SAMPLE (заметим, что если файл расположен в том же месте, откуда выполняется запуск программы, то достаточно указать лишь имя файла и расширение (если есть), причем для файла исходных данных часто выбирают расширение dat) и занесем в него строку:

1.2 3.4 5.6

Программа вводаиз файла:

real x,y,z ! ниже всюду 10 - номер устройства ввода-вывода

open(10,file=’d:\sample\inpdata.dat’)

read(10,*)x,y,z ! Ввод из файла inpdata.dat

print *,’x=’,x,’ y=’,y,’ z=’,z ! Вывод на экран

close(10)

end

Оператор OPENсоздает в программе устройство ввода-вывода и соединяет его с файломinpdata.dat. В оператореREADвместо первой звездочки используется номер устройства(файловая переменная), что обеспечивает ввод данных из файла, который с этим устройством связан. Номер устройства может быть константой или переменной целого типа. В последнем случае переменная должна предварительно получить нужное значение (любым допустимым в Фортране способом). Правила ввода из текстового файла и с клавиатуры совпадают.

Пример программы выводаданных в файл имеет вид:

real x,y,z ! ниже всюду 11 - номер устройства ввода-вывода

open(11,file=’d:\sample\results.dat’)

x=1.1; y=2.2; z=3.3

write(11,*)’x=’,x,’ y=’,y,’ z=’,z ! Вывод в файл results.dat

close(11)

end

Количество файлов, которое может быть открыто, определяется настройкой операционной системы. Обычно их оказывается достаточно. Ненужные ранее открытые файлы рекомендуется закрывать, т.е., отключать от программы. Это делается с помощью оператора CLOSEвидаCLOSE(номер устройства), причемномер устройства должен соответствовать одному из открытых файлов. Если понадобится, файл можно открыть снова.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]