Процедури введення даних

Вопрос

N

например:

write (' ':10, 'resultat')

напечатает впереди слово resultat десять пробелов.

 

Что напечатает оператор

write ('а':10)

 

 

Введення даних – це процеспередачі їх із зовнішніх носіїв інформації або пристроїв введення до комірок оперативної пам’яті для подальшої обробки.

 

Введення даних із зовнішніх пристроїв до оголошених у програмі змінних здійснюється за допомогою вбудованих процедур введення або читання (від англ. read – читати).

 

Процедура введення read має синтаксис

read (ім’я1, ім’я2, ..., ім’яN);

де read – ім’я процедури, стандартний ідентифіка-

тор;

ім’я1, ім’я2, …, ім’яN – список введення.

Важливо:

До списку введення можуть входити змінні цілого, дійсного, символьного або рядкового типу.

Змінні, ідентифікатори яких є параметрами процедури читання, не можуть бути булевого типу.

Дія процедури: програма призупиняє свою роботу і чекає, поки на клавіатурі будуть набрані потрібні дані. Введення символів супроводжується відображенням їх на екрані. Набрані символи запам'ятовуються у буфері та передаються процедурі введення тільки після натиснення клавіші Enter. Після натиснення клавіші Enter введені значення присвоюються змінним, імена яких наведені в списку параметрів процедури read.

Важливо:

Буфер – це область пам'яті для тимчасового зберігання даних. Завдяки наявності буфера можливе редагування даних під час їх введення.

Данні, які вводяться с клавіатури, подані як символьні рядки, незалежно від того вміщують вони числа або символи. Під час виконання процедури read ці рядкові значення автоматично перетворюються до типу змінних, яким вони призначені.

Якщо список змінних налічує декілька змінних, то користувач набирає значення через пробіл або натискає після кожного даного клавішу Enter.

Наприклад, фрагмент програми:

var x0 : byte;

x, z : real;

y : integer;

begin

read (x0);

read (x, y, z);

...

end.

На екрані повинно бути, наприклад:

5.25 –10 0.05

або,

5.25

–10

0.05.

Для виконання першої команди read (x0) ми вводимо число відповідно типу byte – 32 – і натискаємо клавішу Enter. Далі для виконання команди read (x, y, z) є два шляхи. Перший – ввести всі дані через пробіл і натиснути клавішу Enter, другий – після кожного значення натискати клавішу Enter.

Якщо в рядку екрану після запуску програми набрано більше чисел, ніж задано елементів в списку вводу процедури read, то решта рядка буде проігнорована або оброблена наступною процедурою read, якщо така є. Наприклад, якщо I, K, L – цілого типу, то в результаті виконання процедур:

read (I, K);

read (L);

і вводу з клавіатури рядка

5 10 15

змінні отримають наступні значення:

I = 5, K = 10, L = 15.

Якщо команда read (L) була б відсутня, то число 15 було б проігноровано програмою.

На відміну від процедури read процедура readln (від read line – читати рядок) після введення всіх вказаних в процедурі елементів списку здійснює перехід до наступного рядка дисплею. Це трапляється тому, що процедуру readln зчитує всі символи рядка, включаючи символ завершення рядка. Символ завершення рядка формується під час натиснення клавіші Enter. В протилежність процедурі readln, процедура read зчитує всі символи рядка, крім символу його завершення.

Процедура readln має синтаксис:

readln (ім’я1, ім’я2, ..., ім’яN);

де readln– ім’я процедури;

ім’я1, ім’я2, ..., ім’яN – список введення.

Попередній приклад з процедурою readln (I, K, L – цілого типу) після виконання процедур:

readln (I, K);

read (L);

і вводу з клавіатури рядка

5 10 15

забезпечить значення змінних

I = 5, K = 10.

Після цього програма буде чекати натиснення клавіші Enter і вводу нового числа з нового рядка, щоб присвоїти його змінній L. Також можливо після кожного значення натискати клавішу Enter.

А якщо при потоковому введенні буде введено даних менше, ніж задано змінних у відповідному списку введення, процедура читання чекатиме продовження введення.

Розглянемо розв’язання наступної задачі. Необхідно ввести дані:

a = 3,7; b = –1,6×10–6; k= 101; L = –25; c = ‘*’; d = ‘?’; p= true

і відтворити рядки даних на екрані дисплею.

Необхідно враховувати, що дані цілого та дійсного типу відокремлюються одне від іншого пробілами в рядку вводу. Це значення змінних a, b, k та m. Ціла частина від дробової відокремлюється крапкою. Дані символьного типу (значення змінних c і d) записуються в рядку вводу підряд, без використання пробілу в якості роздільника. Дані логічного типу (змінна р) не можна вводити з клавіатури, тобто з використанням процедури вводу. Одним з варіантів рішення задачі може бути наступний:

Program Ex_2;

const p=true;

var a, b : real;

k, m : integer;

c, d : char;

begin

readln (a, b, k, m);

readln(c, d);

end.

Рядок вводу даних:

3.7 –1.6e–6 101 –25

*? // без лапок

Якщо викликати процедуру readln без параметрів, програма чекатиме натиснення клавіші Enter для продовження своєї роботи.