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

Символьні і рядкові змінні

У математиці під змінної звичайно розуміють деяку величину, значення якої можуть бути тільки числами. У мовах програмування майже всі дані, з якими працюють програми, зберігаються у виді змінних. Зокрема, бувають змінні для збереження текстових даних: пропозицій, слів і окремих символів.

1. Символьний тип

Тип даних, змінні якого зберігають рівно один символ (букву, цифру, розділовий знак і т.п.) називається символьним, а в Паскалі — char. Оголосити змінну такого типу можна так: var ch: char;. Для того щоб записати в цю змінну символ, потрібно використовувати оператор присвоювання, а символ записувати в апострофах, наприклад: ch:='R';. Для символьних змінних можливо також використання процедури readln, наприклад:

write(‘Вийти з гри? (Так/Ні)’); readln(ch);

if ch=’Т’ then ...{виходити}...

else ...{продовжувати}...;

Символьні змінні в пам'яті комп'ютера зберігаються у виді числових кодів, інакше кажучи, у кожного символу є порядковий номер. Наприклад, код пробілу дорівнює 32, код ‘A’ — 65, ‘B’ — 66, ‘C’ — 67, код символу ‘1’ — 48, ‘2’ — 49, ‘.’ — 46 і т.п. Деякі символи (з кодами, меншими 32) є керуючими, при виведенні таких символів на екран відбувається якась дія, наприклад, символ з кодом 10 переносить курсор на новий рядок, з кодом 7 — викликає звуковий сигнал, з кодом 8 — зміщує курсор на одну позицію вліво. Під збереження символу виділяється 1 байт (байт складається з 8 біт, а біт може приймати значення 0 чи 1), тому усього можна закодувати 28=256 різних символів. Кодування символів, що використовується Турбо-Паскалі, називається ASCII (American Standard Code for Information Interchange — американський стандартний код для обміну інформацією).

Для того щоб одержати в програмі код символу потрібно використовувати функцію chr, наприклад:

var i: byte; {число, що займає 1 байт, значення — від 0 до 255}

ch: char;

...

readln(i); writeln('символ з кодом ',i,' — це ',chr(i));

Якщо як код використовується конкретне число, а не вираз і не змінну, то можна використовувати символ «#», скажемо так: ch:=#7;. Для переходу від коду до символу використовується функція ord (від слова ordinal — порядковий). Наявні знання дозволяють нам написати програму, що видає на екран таблицю з кодами символів:

program ASCII;

var ch: char;

begin

for ch:=#32 to #255 do write(ord(ch),'—>',ch,' ');

readln;

end.

У цій програмі як лічильник циклу була використана символьна змінна, це дозволяється, оскільки цикл for може використовувати як лічильник змінні будь-якого типу, значення яких зберігаються у виді цілих чисел.

З використанням кодів працюють ще дві функції, значення яких символьні:

  1. succ (від succeedent — наступний), вона видає символ з наступним кодом.

  2. pred (від predecessor — попередник), видає символ з попереднім кодом.

Якщо спробувати в програмі одержати succ(#255) чи pred(#0), то виникне помилка. Користаючись цими функціями можна переписати попередню програму і по-іншому:

...

ch:=#32;

while ch<>#255 do begin

write(ord(ch),'—>',ch,' ');

ch:=succ(ch);

end;

...

Порівняння символів. Також як і числа, символи можна порівнювати на =, <>, <, >, <=, >=. У цьому випадку Паскаль порівнює не самі символи, а їхні коди. Таблиця ASCII складена таким чином, що коди букв (латинських і більшості національних) зростають при русі за алфавітом, а коди цифр розташовані один за одним: ord(‘0’)=48, ord(‘1’)=49, ... ord(‘9’)=57. Порівняння символів можна використовувати скрізь, де вимагаються логічні вирази: в операторі if, у циклах і т.п.