Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ввод_и_вывод_данных.doc
Скачиваний:
2
Добавлен:
17.07.2019
Размер:
60.42 Кб
Скачать

8.45_6.0_3.4 Enter

1_46 Enter

2. Введення символьних даних.

Введення символьних даних має свої особливості. Оскільки пробіл, як і будь-який символ мови Паскаль, відноситься до символьних даних. Символьні дані вводяться суцільним рядком у відповідності з оператором введення. Нагадаємо, що одній змінній можна присвоювати значення тільки одного символу.

Нехай існує фрагмент програми

VAR A,B,C:CHAR;

READ(A,B,C);

Якщо після набору на екрані дисплея усієї програми і запуску її на виконання ввести дані у вигляді:

SNR Enter,

то змінні А,В, С отримають наступні значення: A='S', B='N', C='R'.

При введенні даних у вигляді:

S_N_R Enter, змінні отримають значення: A='S', B='_', C='N'.

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

Наприклад, необхідно задати змінним значення: A=3, B=4, C='W', D='F'.

При виконанні фрагмента програми

VAR

A,B: INTEGER;

C,D: CHAR;

READ(A,B);

READ(C,D);

і введенні даних у вигляді:

3_ _ _4 Enter

WF Enter

змінні отримають значення А=3, В=4, С ='_'(символ Enter – кінець першого рядка, сприймається як пробіл), D='W'.

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

Наприклад:

READ(A,B);

READLN;

READ(C,D) ;

У цьому випадку змінні отримають правильні значення: A=3, B=4, C='W', D='F'.

Якщо навіть оператор введення символьних даних стоїть першим в програмі, все одно необхідно перед ним ставити оператор READLN.

Ще одна особливість введення символьних даних пов’язана з використанням декількох режимів клавіатури (РОС, ЛАТ і ін., дивись додаток 1). При натисканні клавіш російського (РОС) або латинського (ЛАТ) регістрів їх коди (відповідно 16В і 17В, дивись додаток 2) будуть введені в пам'ять ЕОМ як символьні дані, хоча вони на екрані дисплею не відобразяться. Так, при натисканні клавіш під час введення символьних даних у попередньому прикладі

ЛАТ WF

замість символу W вводиться код латинського регістра і саме він буде присвоєний змінній С, а значення 'W' – змінній D. У загальному випадку при введенні символьних даних за рахунок переключення регістрів загальна кількість символів збільшується. Наприклад, рядок з 12 символів (включаючи пробіл):

Ш N S + R_Z Б П N R W

фактично складається з 16 символів:

РОС Ш ЛАТ N S + R _ Z РОС Б П ЛАТ N R W

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16

3.4. Оператор виведення даних

Оператор виведення призначений для виведення даних з пам’яті ЕОМ на екран дисплею. Існують три види оператора виведення:

а) WRITE(a1, a2, …, an) – виводить послідовно значення a1, a2, …, an;

б) WRITELN(a1, a2, …, an) – виводить послідовно значення (a1, a2, …, an) і здійснює перехід на новий рядок (наступний оператор виведення буде виводити дані на новий рядок);

в) WRITELN – здійснює перехід на новий рядок при виведенні даних.

Послідовно розміщені оператори виду а) і в) еквівалентні одному оператору б).

В якості параметрів a1, a2, …, an можуть бути цілі, дійсні, символьні та логічні змінні, а також символьні константи. В деяких версіях мови допускаються вирази.

Допускається виведення даних з форматами і без них. Розглянемо без форматне виведення:

Форма представлення виведених даних залежить від типу даних: значення цілих змінних виводяться як цілі числа, значення дійсних змінних – у вигляді мантиси та десяткового порядку, значення логічних змінних – у вигляді TRUE (істина) або FALSE (хибність), значення символьних змінних – у вигляді окремих символів

Для виведених значень змінних визначають наступні поля (кількість позицій на зображення значень): 13 – для цілого числа, 13 – для дійсного числа, 4 або 5 – для логічних даних TRUE або FALSE, 1 – для символу.

Якщо ціле число займає позицій менше, ніж 13, то відповідне поле перед числом заповнюється пробілами. Наприклад число 450 матиме вигляд:

_ _ _ _ _ _ _ _ _ _450

При виведенні дійсного числа, оскільки на його виведення теж передбачені 13 позицій, невикористані поля дробової частини заповнюються нулями. Так, при виведенні значення А=12,5 у вигляді:

WRITE ('А=' , А)

Число буде представлено на екрані дисплея як:

А=_1.250000Е+01

що означає 1,25·101

Символьна константа (рядок) виводиться явно у тому вигляді, як вона записана, але без апострофів.

Приклад. Нехай у результаті виконання програми змінні отримали наступні значення:

А=-6, В=17.3, С='+', D='R', L=TRUE.

Вивести ці дані на екран дисплея в наступному вигляді: числові дані – в одному рядку, символьні дані – в іншому, відокремлюючи їх один від одного одним пробілом; логічні дані – в наступному рядку:

VAR

A: INTEGER; {ЦІЛЕ ДАНЕ}

B: REAL; {ДІЙСНЕ ДАНЕ}

C,D: CHAR; {СИМВОЛЬНЕ ДАНЕ}

L: BOOLEAN; {ЛОГІЧНЕ ДАНЕДАНЕ}

WRITE('ПРИКЛАД'); {ВИВЕДЕННЯ СИМВОЛЬНОГО РЯДКА}

WRITELN; {ПЕРЕХІД НА НОВИЙ РЯДОК}

WRITELN (A, B); {ВИВЕДЕННЯ І ПЕРЕХІД НА НОВИЙ РЯДОК}

WRITELN(C, ' ', D); {ВИВЕДЕННЯ І ПЕРЕХІД НА НОВИЙ РЯДОК}

WRITE(L); {ВИВЕДЕННЯ ЗНАЧЕННЯ L}

Виведені значення матимуть вигляд:

ПРИКЛАД

_ _ _ _ _ _ _ _ _ _ _-6_1.730000Е+01

+_R

TRUE

Зверніть увагу на пробіл у другому рядку поміж числами. Цей пробіл відноситься до другого циклу і у випадку від’ємного дійсного числа замість пробілу стояв би знак .

Для наочності виведених значень у мові Паскаль передбачені формати. Вони вказуються за змінною через двокрапку.

Для дійсних змінних формат має, у загальному випадку, наступний вигляд:

a:m:n

де а – змінна; m – спільне поле виводимого числа (включаючи знак числа, цілу частину, крапку і дробову частину); n – поле дробової частини.

У якості m і n можуть бути як цілі змінні, вирази, так і цілі константи. Наприклад:

CONST

M=6;

N=3;

VAR SUM,A: REAL;

WRITE (SUM:M:N, A:7:2);

Якщо формат вказаний більший, ніж необхідно позицій для зображення числа, то перед цілою частиною числа представлені надлишкові пробіли, а після дробової частини – нулі.

Так, якщо число А дорівнює 21.6, то воно буде виведене у відповідності з розглянутим форматом у вигляді: _ _21.60, а від’ємне число – у вигляді: _-21.60.

Для інших типів даних формат має вигляд:

a:m

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

Наприклад, змінні приймають в процесі виконання програми наступні значення: К=150, С='*'. Тоді при використанні оператора:

WRITE (К:5, С:4)

Дані, що виводяться, будуть представлені у вигляді

_ _150_ _ _*

Зверніть увагу на виведення значень змінної С: виводяться не чотири зірочки, а тільки одна, перед якою розміщені три пробіли. Те ж саме буде, якщо вказати в операторі виведення '*':4.

Для виведення декількох пробілів символ пробілу вказується з форматом, наприклад: ' ':6 – для виведення шістьох пробілів.

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

WRITE('_':4, А:3, '_':5, В:5);

При виконанні цього оператора на початку рядка, що виводиться, відведено п’ять пробілів, потім виводиться значення А. Після цього відводиться сім пробілів і значення В:

_ _ _ _ _ А _ _ _ _ _ _ _ _ B _ _

4 3 5 5