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

23. Ответы на вопросы "Что", "Куда-откуда" в операторах обмена данными

Оператор обмена данными     обмен ( КУДА, КАК ) ЧТО    дает ответы на 3 вопроса

КУДА / ОтКУДА

 

КАК

 

ЧТО

Из текстового файла

=> read =>

по типам объектов

=> read=>

<=write<=

Список объектов в RAM

В текстовый файл

<=write <=

Ответы на вопросы “КУДА”, “КАК”, “ЧТО” оформляются в виде операторов

  • read (отКУДА,КАК) ЧТО

  • write (КУДА , КАК) ЧТО

В целом ответы на эти вопросы должны прояснить следующее

  • ЧТО за список объектов, подлежащих обмену с внешней памятью

  • ОТКУДА/КУДА – каков номер устройства – ответы см КУДА

  • “КАК” – задает способ оформления вводимых-выводимых объектов в виде текста, способы  для ввода (данные в файле готовит пользователь) и вывода (результаты в файл пишет компьютер) похожи; см. возможные ответы КАК

Ответы на вопрос "ЧТО" в операторе обмен( КУДА, КАК ) ЧТО 

ЧТО - это список объектов, подлежащих обмену с внешней памятью. В него могут входить

  • в список “ЧТО” для Read - переменные через запятую

  • в список “ЧТО” для write – переменные, константы и формулы через запятую

  • переменные могут быть как скалярными, так и векторными (массивами и сечениями массивов)

  • формулы в Фортране-90 также могут быть векторными

Ответ на вопрос “ КУДА / ОтКУДА?”

Ответ на этот вопрос характеризует носитель информации и направление ввода-вывода текстового файла. Основополагающим является принцип независимости от носителя информации и физической природы устройств. В программе имеют дело с условными устройствами, которым различными способами сопоставляются конкретные физические устройства, например, консоль, экран, принтер, магнитная лента, файл на жестком диске, файл на дискете, файл на магнитной ленте..

Предопределенные номера устройств и имена файлов

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

Для консоли в Фортране исторически сложились следующие обозначения

  • * - универсальный знак консоли для ввода read(*,.. и вывода write(*,..

  • 0 – то же в виде номера для ввода read(0,.. и вывода write(0,..

  • 5 – только для ввода с клавиатуры read(5..

  • 6 - только для вывода на экран write(6..

Номера 5 и 6 по усмотрению программиста можно переназначить в операторе open.

Имеется ряд имен файлов, фиксированных по назначению в ОС

  • con – консоль

  • prn – принтер

  • line – линия связи

  • nul – пустышка, вывод в никуда

При открытии файлов у программиста есть ряд возможностей

  • устройства 0,5,6 и “*” ориентируют без открытия файла на работу с консолью 

  • open(u,file=’имя.txt’) связывает условный номер устройства с конкретным файлом

  • имена файлов “con”, “prn”, “line”, “nul” организуют обмен с конкретным физическим устройством

  • можно отнести открытие файла к компетенции пользователя, отложив его до выполнения программы  если, скажем для устройства 3, нет оператора open или open есть но  file=’ ’, то на первой команде обмена последует сообщение

Unit 3 – file name missing or blank

имя файла пустое или не задано

Please enter file name

пожалуйста введите имя файла

в ответ пользователь введёт имя файла, с которым далее и пойдет обмен

  • использовав строковую переменную вместо номера устройства будем иметь дело с так называемым внутренним файлом, не требующим открытия, например, для   Real :: R=2.0, pi=3.14; Character*80 stroka; Write(stroka,*) ‘c:’,2*pi*R    ! получим stroka = “ c:6.2800000      “  отметим, что строка должна быть достаточно вместительной, многострочный вывод направляют в массив часто так готовят тексты для графического вывода

  • имеются и описаны в помощи дополнительные параметры, повышающие функциональность оператора open

Ответы на вопрос "куда/откуда" в операторе обмен( КУДА, КАК ) ЧТО  сведены в таблицу

Возможные ответы

Направление обмена данными

Открытие файла

или 0 или 5 или 6

с консолью

не требуется

Номер устройства

с открытым файлом

выполняется до обмена в open

Номер устройства

когда файл не открыт

выполняется пользователем при первом обмене

Строка

со строкой  (внутренним файлом)

не требуется

24. Ответы на вопрос “ КАК?” в операторе обмен( КУДА, КАК ) ЧТО

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

  • он предпочитает минимум забот по оформлению, когда он должен готовить данные

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

  • правила оформления одни и те же, что при вводе, что при выводе, поэтому надо программировать разные способы в read и write

Ответы на вопрос “ КАК?” в операторе обмен( КУДА, КАК ) ЧТО сведены в таблицу

 

Ответ КАК

Способ преобразования данных

Где ответ на вопрос КАК?

1

*

ввод-вывод под управлением списка

по типам данных из списка  "ЧТО"

2

имя

Вместо ЧТО поименный обмен посписку переменных из Namelist

по типам данных из списка Namelist

3

метка

Форматный ввод-вывод cо ссылкой на  m format ФС

в ФС в виде строковой константы  в операторе  m format ФС

4

строка

Форматный ввод-вывод по  ФС, прописанной внутри write

в ФС в виде константы, переменной или  выражения типа character

5

опущен

обмен с бинарным файлом без всяких преобразований

не нужен ответ

КАК оформляется текст при вводе и выводе разными способами

  1. ввод-вывод под управлением списка read (отКУДА,* ) ЧТО и  write (КУДА , * ) ЧТО  этот способ оформления текста особенно удобен при вводе - все делается по усмотрению пользователя: перенос, пробелы и пустые строки; он сам выбирает разделитель между числами и строками ( “запятая”, “пробел” или “Enter-конец строки”), строки обрамляются апострофами; в то же время это довольно небрежный, скорее черновой вывод в виде стандартизованного текста с фиксированной шириной листа и полей чисел; вывод идет по списку “ЧТО” с автоматическим переносом

  2. поименный ввод-вывод по списку переменных из Namelist, совмещающему ответ на вопросы “КАК” и “ЧТО”, списка “ЧТО” нет - в примере переменным   x,R дано групповое имя в Namelist /listXR/ x,R;  Read (*,listXR ); write (*,listXR) - текст стандартизован, но в отличие от п.2, в нем есть имя списка и отдельных переменных -  вывод скорее всего черновой - идёт с автоматическим переносом по списку из Namelist с фиксированной шириной полей чисел и листа

ввод в любом порядке

даже и не все

& listXR

 

& listXR

 

& listXR

x=3.2, R=2.5

 

R=2.5,x=3.2

 

x=3.2

/

 

/

 

/

3. Форматный ввод-вывод дает наиболее гибкий исчерпывающий ответ на вопрос “КАК” в виде форматной строки (ФС) в отдельном операторе    m FORMAT ФС , здесь ФС- строковая константа без апострофов; на ФС можно сослаться из многих операторов вывода по метке m

4. Форматный ввод-вывод с уникальной ФС прямо внутри операторов Read (отКУДА, ФС ) ЧТО и write (КУДА , ФС ) ЧТО       здесь ФС- константа, переменная или выражение строкового типа (character)

5. Ввод-вывод, отображающий память - ответ на вопрос “Как?” не нужен и он опущен       Read (отКУДА) ЧТО и write (КУДА) ЧТО  ведут обмен данными с бинарным файлом

Резюме по способам ввода-вывода  - данные при вводе оформляются аналогично тому как они оформляются при выводе, разве что не пишут незначащие цифры - форматный вывод дает наибольшие возможности по оформлению текстов - вывод под управлением списка и поименный вывод удобны при черновом выводе - ввод под управлением списка устроит "ленивого" пользователя, не связывая его ограничениями - поименный ввод может оказаться удобным, когда при повторном вводе из многих данных мало что меняется  - форматный ввод имеет ограниченное применение, например, для компьютерных форм; данные размещаются позиционно, без разделителей, строковые данные выделять апострофами не надо.

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