3. ВВЕДЕННЯ І ВИВЕДЕННЯ ІНФОРМАЦІЇ
3. 1. Оператори відкривання і закривання файлів
Оператори введення і виведення служать для обміну інформацією між оперативною пам’яттю і зовнішніми пристроями. Інформація, яка вводиться чи виводиться, організовується у файли.
Увага! Для файлу, де міститься інформація, рекомендованими є імена з розширенням DAT. Наприклад, DANI.DAT, REZULTAT.DAT.
Для обміну інформацією із файлом необхідно відкрити до нього доступ. До цього використовується оператор відкривання файлу OPEN. У загальному вигляді цей виконуваний оператор записується наступним чином:
OPEN (n, FILE = ‘filename’, STATUS = ‘status’)
Доступ до файлу відкривається через канал, якому в операторі OPEN присвоюється номер n. В цьому операторі, крім імені filename використовуваного файлу, зазначається його статус. Файл може отримати статус OLD вже існуючого, статус NEW нового чи статус UNKNOWN невідомого. Статус OLD застосовується до файлу із заданим іменем filename, створеного раніше. З цього файлу можна вводити інформацію і, при необхідності, виводити до нього отриману інформацію. Статуси NEW і UNKNOWN застосовуються для створення нового файлу із заданим іменем filename, у який планується виводити отриману інформацію. Так, статус NEW передбачає створення не існуючого в момент виконання оператора OPEN файлу. Статус UNKNOWN передбачає створення нового файлу не залежно від того чи існував файл з такою назвою, чи не існував.
Приклади операторів відкривання файлу:
OPEN (7, FILE = ‘DAN.DAT’, STATUS = ‘OLD’)
OPEN (1, FILE = ‘REZ.DAT’, STATUS = ‘NEW’)
OPEN (12, FILE = ‘PR.DAT’, STATUS = ‘UNKNOWN’)
Перший оператор відкриває файл з іменем DAN.DAT за каналом 7. Цей файл мусить бути створений до виконання даного оператора. Другий оператор за каналом 1 відкриває новий файл REZ.DAT за умови, що у момент виконання цього оператора файлу з таким іменем не існувало. Останній оператор відкриває новий файл PR.DAT (якщо файл PR.DAT вже існував, то він буде знищений) за каналом 12.
Оператор закривання файлу CLOSE використовується до закривання каналу, за яким був відкритий файл. Цей виконуваний оператор записується наступним чином:
CLOSE (n)
Тут n – номер каналу. Наприклад, CLOSE (7) – закривається канал за номером 7.
3. 2. Оператори введення і виведення
Оператори введення і виведення є виконуваними операторами.
Оператор введення має вигляд:
READ (n, m) l
а оператор виведення вигляд:
WRITE (n, m) l
Тут n – номер каналу, за яким відкритий файл; m – мітка оператора FORMAT, який задає формат введення чи виведення інформації (цей оператор описаний у наступному параграфі); l – список величин для введення чи виведення.
Якщо в операторі введення на місці n номера каналу записаний символ “*”:
READ (*, m) l
то введення інформації здійснюватиметься з клавіатури (при наборі з клавіатури інформація висвітлюється на екрані дисплея, а вводиться натисканням клавіші Enter). Якщо в операторі виведення на місці номера каналу записаний символ “*”:
WRITE (*, m) l
то виведення інформації здійснюватиметься на екран дисплея.
Якщо в цих операторах на місці мітки m записаний символ “*”:
READ (n, *) l
WRITE (*, *) l
то введення чи виведення інформації здійснюватиметься безформатно (про це мова буде йти нижче).
Список величин для введення чи виведення складається із елементів списку, які відокремлені один від одного комами. Можлива відсутність елементів списку. Елементами списку можуть бути: змінна, елементи масиву, ім’я масиву та список із неявним циклом.
Приклади операторів введення і виведення, що містять списки, які складаються лише із змінних (в останньому прикладі список відсутній):
READ (7, 5) I, KL,ABC, Z
READ (1, 1) A, F3, ALPHA
WRITE (*, *) P1L, SS, ATAR, L
WRITE (*, 3)
Більш детальна інформація про введення і виведення інформації, формування елементів списку і т. п. подана нижче.
Для пояснення роботи операторів введення і виведення використовують поняття одиниця запису. Одиниця запису – це послідовність значень, які записані в одному рядку чи в одній частині файлу.
У процесі виконання оператора форматного введення з файлу чи клавіатури у пам’ять вводяться всі значення, які містяться в одиниці запису чи у декількох одиницях запису. Введені значення присвоюються змінним і елементам масивів у відповідності до послідовності, яка визначається списком. Введення починається з першого рядка. При введенні інформація зчитується послідовно з першої, другої, третьої і т. д. позицій. Оператор формату керує введенням і встановлює одиниці запису.
У процесі виконання оператора форматного виведення усі числа, які входять в одиницю запису чи у декілька одиниць запису, записуються у файлі чи виводяться на екран дисплея. Послідовність виведення встановлюється списком величин. Виведення виконується порядкове. Оператор формату керує виведенням і встановлює одиниці запису.
Увага! Символ, який припадає на першу позицію рядка друку, не реєструється, а використовується для керування друком. Вплив першого символу при друці наступний:
Перший символ
Дія першого символу


Пропуск

Пересування на один рядок.


0

Пересування на два рядки.


1

Перехід на наступну сторінку.


+

Пересування не відбувається
(рядок накладається на попередній)


Оператор безформатного введення чи виведення вводить чи виводить лише одну одиницю запису.
3. 3. Оператор формату
Формат використовується при роботі операторів форматного введення і форматного виведення. Формат задається невиконуваним оператором FORMAT, який розміщується у будь-якому місці програми. Зв’язок оператора введення (чи виведення) з форматом здійснюється за допомогою мітки m, записаної як в операторі введення (чи виведення), так і перед оператором формату.
Оператор формату має вигляд:
m FORMAT (список специфікацій перетворення)
Для оператора введення список специфікацій перетворення вказує на спосіб кодування вхідної інформації, а для оператора виведення – на спосіб представлення вихідної інформації. Розділовими знаками у списку специфікацій перетворення є кома, похила риска чи декілька похилих рисок. Їхній вплив на введення і виведення інформації показаний нижче.
Існує п’ять видів специфікацій перетворення:
цифрові специфікації;
логічна специфікація;
алфавітно-цифрова специфікація;
холеритівська специфікація;
специфікація пропуску.
Кожна специфікація визначає довжину поля – кількість позицій, які відводяться під число чи сукупність символів.
3. 4. Цифрові специфікації перетворення
Існує п’ять цифрових специфікацій перетворення. Вони позначаються буквами I, F, E, G і D.
Цифрова специфікація містить інформацію про те, як повинні бути закодовані до введення чи представлені виведені цілі, дійсні, комплексні числа і числа з подвійною точністю.
Цифрові специфікації записуються у вигляді:
Iw
Fw.d
Ew.d
Gw.d
Dw.d
Тут w – довжина поля, у якому розміщується число; d – кількість знаків дробової частини числа чи мантиси числа (за винятком специфікації Gw.d). Значеннями w і d можуть бути лише цілі константи без знаку.
Специфікація Iw служить для описання форми представлення цілих чисел, специфікації Fw.d, Ew.d, Gw.d – для описання дійсних чисел, специфікація Dw.d – для описання чисел з подвійною точністю. Комплексне число представляється парою дійсних чисел, тому для його описання використовуються дві специфікації типу Fw.d, Ew.d чи Gw.d. Перша з цієї пари служить для описання дійсної частини числа, друга – для описання його уявної частини.
Пропуски інтерпретуються при введенні як нулі. Числа при виведенні зображаються у правій частині поля; нулі перед першою значущою цифрою цілої частини числа замінюються пропусками, знак “–” зміщується до першої цифри, а знак “+” не друкується.
3.4.1. Введення і виведення цілих чисел
Для введення і виведення цілих чисел використовується специфікація Iw. При введенні за цією специфікацією у полі повинно знаходитися ціле число. Знак додатного числа можна не вказувати. Кількість розрядів числа з врахуванням знакового не повинна перевищувати довжину поля w. Нижче наведені приклади дії специфікації Iw.
Дія специфікації I6 при введенні:
Вводжувані символи
Введене число
Примітки

1
2
3
4
5
6









9
–9






2
5
7
257





4



4000






3
0
8
–308




+

0


0






1
.
0

Помилка – присутня крапка.




7
Е

2

Помилка – присутній символ Е.


Дія специфікації I5 при виведенні:
Виводжуване число

Виводжувані символи
Примітки


1
2
3
4
5



7




7



–513


5
1
3



50628
5
0
6
2
8



0




0



–4792

4
7
9
2



709571
*
*
*
*
*
Помилка – завелике число.


12,3





Помилка – дійсне число.


3.4.2. Введення і виведення дійсних чисел
Специфікація Fw.d використовується для введення і виведення дійсних чисел.
При виведенні числа за цією специфікацією перед від’ємними числами фіксується знак “–” (перед додатними числами знак “+” не фіксується), дальше записується ціла частина числа, десяткова крапка і d розрядів дробової частини числа. Загальна кількість позицій не може перевищувати довжину поля w, яка вказана у специфікації перетворення. Число, призна