Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
22-28(29).docx
Скачиваний:
6
Добавлен:
27.09.2019
Размер:
72.89 Кб
Скачать

22. Операторы ввода-вывода в Фортране, аналогия последовательного обмена с кассетным магнитофоном

Ввод-вывод  в Фортране реализован средствами языка. Структура оформляемого текста должна соответствовать решаемой задаче. Текст появляется в результате выполнения многих операторов write, но каждый начинает вывод с новой строки. Аналогично каждый read начинает вывод с новой строки. В рамках одного write или  read используется только один способ оформления текста, хотя в Фортране их предусмотрено несколько.

Концепции ввода-вывода в Фортране

  • подсистема ввода-вывода, базируется на принципе интерпретации – стоит вам написать один write – и в Ваш исполняемый код добавится несколько десятков килобайт – это и есть сразу весь интерпретатор

  • интерпретация сочетает в себе высокую гибкость с простотой реализации, что оборачивается относительно низким быстродействием, правда, достаточным для медленного ввода-вывода

  • основной способ ввода-вывода – последовательный, как в кассетном магнитофоне - эта аналогия помогает пониманию.

         read откудакакчто преобразует данные, поступающие из текстового источника, во внутреннее представление компьютера, предлагая ответы на 3 вопроса – откуда вводить? как вводить? и что вводить?

         write кудакакчто данные, поступающие из внутреннего представления компьютера, преобразует в текст, предлагая - ответы на 3 вопроса – кудавыводить?  как выводить? и что выводить?

Возможные варианты написания оператора write куда , как ) что  

1.       write(куда,как) что   - 1-ый параметр задаёт куда направить текстовый вывод, а именно:

a)      без предварительного открытия текстового файла write(*,как)что или   write(0,как)что вывод на всегда готовую  консоль (клавиатура+экран)  - можно использовать read(5,как)что для ввода с консоли  - можно использовать write(6,как)что для вывода на консоль  - можно задать другие номера, чтобы отложить открытие файла до выполнении приложения, когда по номеру запросят имя файла

b)      предварительно открыв текстовый файл open(номер_направленияfile=’файл’),  выводим данные из памяти по заданному  направлению  write(номер_направления, как что   - номер_направления задаётся целой константой или переменной  - для физических устройств ввода-вывода используют зарезервированные имена файлов:   prn-принтер, con-консоль, nul-пустышка

c)      направить  вывод write(строка,как)что  в строковую переменную, называемую внутренним файлом

2.       write(куда,как)что - 2-ой параметр задаёт как оформить вывод 4 разными способами

a)      write (куда,*)что  - это простейший бесформатный вывод

b)      write (куда, формат)что  - вывести по электронному бланку, заполняемому данными из “что”

c)      write (куда  как )что - вывести данные во внешнюю память  как есть, без преобразования

d)     предварительно задав, что выводить в операторе  Namelist /имярекСпискаСписокПеременных write (куда, имярекСписка) - вывести данные поимённо, без списка что

3.       что выводить задаётся 2 способами

a)      либо, как в 2d, предварительно задав СписокПеременных в операторе  Namelist тогда write (куда, имярекСписка) пишется без списка что

b)      write(куда,как)что - данные перечисляются после самого оператора write в списке вывода что, состоящем из объектов программы, как-то:

   константа, переменная, переменная с индексами

   массив, секция массива, конструктор массива

   список из многих значений в форме неявного цикла do

   запись производного типа из нескольких полей или массив записей

   выражение как скалярное, так и векторное

Аналогия последовательного обмена с кассетным магнитофоном

Последовательный ввод-вывод легче понять, используя аналогию с кассетным магнитофоном

Кассетный магнитофон

Последовательный обмен данными

может быть несколько дек 1,2

Устройство ввода-вывода -  0,1,2,..  константы или переменные целого типа

Кассета с магнитной лентой

Последовательный файл

Возможно чтение и запись

Операторы read и write

Кассета надписана

Файл назван file=’имя’

Вставить/Извлечь кассету в/из деки

Открыть/Закрыть файл  open(u,file=’имя’ ) / close(u)

Пишут-читают песню за песней там, где магнитная головка

Пишут-читают файл последовательно с текущей позиции

Писать можно только "в хвост" ленты

пишут только в конец файла

Перемотать в начало (Rewind)/конец

Rewind(u)    /   Endfile(u)

Вернуться назад на песню

Вернуться назад на запись Backspace(u)

Узнать имя кассеты или деки

Узнать имя/ номер   Inqure(u..)    Inqure(file=’имя’..)

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