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