Введення та виведення в Pascal

В мові Pascal відсутні оператори введення-виведення. Їх функцію виконують процедури READ, READLN, WRITE, WRITELN, робота яких базується на пристроях MS DOS або CP-M.

Ввід даних, це передача інформації від зовнішнього носія в оперативну пам'ять для обробки. Вивід – зворотній процес. Зовнішнім носієм є термінал, АЦП, дисковвід та ін.

В мові Pascal стандартними засобами спілкування людини з комп'ютером є задані файли Input та Output, які за замовчуванням є параметрами програми. Програма одержує вхідні дані з файла Input і вміщує результат обробки в файл Output. За замовчуванням стандартний файл Input – клавіатура (з виведенням на дисплей – файл CON:), Output – екран дисплею.

 

2.1.4.1. Процедури введення

Для виконання операцій введення використовуються процедури READ та READLN.

Процедура читання (Read) забезпечує введення стандартних скалярних типів, літерних рядків (стрінгів), елементів масивів та записів. Ця процедура викликається таким чином:

Read(x1,x2,...,xN); або Read(FV,x1,...,xN);

де x1,...,xN - параметри процедури, в ролі яких можуть використовуватися лише змінні величини допустимих типів. Кількість параметрів в процедурі заздалегідь не фіксується. FV – змінна, пов’язана із файлом, з якого проводиться читання. Якщо FV відсутня, це значить, що вона відповідає стандартному файлу Input (за замовчуванням – клавіатура).

Процедура Read призупиняє виконання програми, після чого комп'ютер переходить в режим діалогу, де програміст повинен задати N констант, які бу-дуть присвоєні змінним x1, ... , xN. Значення цих констант висвітлюється на екрані. Роздільником списку констант введення є символ пробілу.

Пiсля набору даних для однієї процедури Read, необхідно натиснути клавiшу Enter. Введенi данi повиннi вiдповiдати списку введення за типами змiнних та за кiлькостю даних. Порушення цих правил викликає помилку введення-виведення. При цьому виконання програми переривається i на екран видається повiдомлення: I/0 error XX, де XX - код помилки.

Приклад:

Var i : Real; j : Integer; k : Char;

BEGIN

Read (i,j,k);

. . . . . . . .

Перший варiант введення 235.98 100 'G' <Enter> - правильний ввiд. Другий варiант введення 'G' 235.98 100 <Enter> є помилковим, що викличе зупинку виконання програми з повiдомленням: I/0 error 10, що означає - для змiнної типу Real задається значення Char.

Якщо в програмi зустрiчаються декiлька процедур Read, данi для них вводяться потоком, тобто без обов'язкового переходу до наступного рядка.

Процедура зчитування Readln аналогiчна Read з тiєю лише рiзницею, що для кожної нової процедури данi зчитуються з нового рядка дисплею.

При введенні величини типу String (літерного рядка) з буфура клавіатури зчитується необхідна кількість символів, але в межах одного логічного рядка (до символа кінець рядка - код13). При цьому, якщо читання здійснюється процедурою Read, ознака кінця рядка не читається і при наступному зчитуванні рядкової інформації у відповідні змінні нічого заноситися не буде до тих пір, поки не буде прочитана ознака кінця рядка (наприклад процедурою Readln).

 

2.1.4.2. Процедури виведення

Процедура запису Write здiйснює вивiд числових даних, символiв, лiтерних рядкiв, булевих значень. Ця процедура має два варiанти виклику:

Write (y1, y2,...,yN); та Write (FV,y1, y2,...,yN);

де FV - iм'я файлу, куди органiзовується вивiд. За замовчуванню використовується стандартний файл Output, який виводить данi на екран дисплею.

Для виведення даних на прiнтер замiсть FV використовується iм'я файла LST.

Параметри процедури Write y1,...,yN - елементи списку виведення. В їх ролі можуть виступати константи, змінні, вирази стандартних скалярних типів, типу String та елементи масивів та записів.

Приклад:

Нехай х=2,5, тоді процедура Write('результати обчислень',х) виведе на екран лише повідомлення: результат обчислень 2,5.

Процедура Write(2,sin(x),cos(x)+3) забезпечує обчислення виразів зі списку виведення з подальшим їх виведенням на екран.

Процедура виведення Writeln аналогічна Write, тільки після виведення останнього елемента списка виведення курсор переводиться на новий рядок.