- •Історична довідка
- •Характеристика й особливості мови
- •Алфавіт мови
- •Службові (зарезервовані) слова.
- •Структура програми мови Turbo Pascal
- •Процедури введення-виведення. Деякі вбудовані функції Турбо-Паскаля.
- •Функції числових параметрів.
- •Базові управляючі конструкції Турбо-Паскаля Оператори умовного переходу.
- •Оператори циклів у Паскалі
- •Концепція типів даних. Типи даних в мові Pascal
- •Дійсні типи
- •Бульовий (логічний) тип
- •Символьні і рядкові змінні
- •1. Символьний тип
- •2. Рядковий тип
- •Перерахований та обмежений типи
- •1. Перерахований тип
- •2. Обмежений тип
- •1. Поняття масиву. Одномірні масиви
- •2. Багатомірні масиви
- •3. Сортування і пошук
- •Множинний тип
- •Тип запис
- •Процедури і функції
- •Формальні і фактичні параметри. Механізм параметрів
- •Параметри - значення
- •Параметри-змінні
- •Безтипові параметри
- •Приведення типів.
- •Процедурні типи
- •Рекурсія Рекурсивні визначення
- •Рекурсивні підпрограми
- •Алгоритми з поверненням. Розв’язок задачі про рух коня
- •Алгоритми з поверненням. Розв’язок задачі про вісьмох ферзів
- •Модулі в Турбо Паскалі
- •Модуль crt
- •1. Керування екраном
- •2. Робота з клавіатурою
- •3. Інші можливості
- •Графіка в Турбо Паскалі
- •1. Включення і вимикання графічного режиму.
- •2. Побудова елементарних зображень
- •3. Виведення текстової інформації.
- •Файли в мові програмування Pascal
- •Установчі і завершальні операції
- •Операції введення-виведення
- •Обробка помилок введення-виведення
- •Переміщення по файлу
- •Спеціальні операції
- •Текстові файли
- •Двійкові файли
- •Статичні і динамічні змінні
- •Покажчики
- •Стан покажчика
- •Установка розмірів динамічної пам'яті
- •Сумісність і перетворення посилкових типів
- •Динамічні структури даних
- •Динамічні змінні: інші види списків, стек і черга.
- •1. Інші види списків
- •2. Стек і черга
- •Дерева і пошук у деревах
- •1. Визначення й описи структур даних
- •2. Алгоритми
- •Змішані таблиці
- •Об’єктно-орієнтоване програмування. Що таке об’єктно-орієнтоване програмування
- •Інкапсуляція
- •Спадкування
- •Віртуальні методи і поліморфізм
- •Конструктори, динамічні об'єкти і деструктори
- •Поля і методи: сховані і загальнодоступні
- •Системно- залежні розширення
- •Налагодження змінних
- •Оверлеї
- •Переривання і системні виклики
- •Доступ до пам'яті і портів
- •Перевизначення переривань
Символьні і рядкові змінні
У математиці під змінної звичайно розуміють деяку величину, значення якої можуть бути тільки числами. У мовах програмування майже всі дані, з якими працюють програми, зберігаються у виді змінних. Зокрема, бувають змінні для збереження текстових даних: пропозицій, слів і окремих символів.
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 може використовувати як лічильник змінні будь-якого типу, значення яких зберігаються у виді цілих чисел.
З використанням кодів працюють ще дві функції, значення яких символьні:
-
succ (від succeedent — наступний), вона видає символ з наступним кодом.
-
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, у циклах і т.п.