- •Історична довідка
- •Характеристика й особливості мови
- •Алфавіт мови
- •Службові (зарезервовані) слова.
- •Структура програми мови Turbo Pascal
- •Розділ оголошень і угод
- •Розділ текстів процедур і функцій
- •Розділ основного блоку програми
- •Процедури введення-виведення. Деякі вбудовані функції Турбо-Паскаля.
- •Функції числових параметрів.
- •Базові управляючі конструкції Турбо-Паскаля Оператори умовного переходу.
- •1. Оператор if.
- •2. Оператор вибору (case)
- •Оператори циклів у Паскалі
- •1. Цикл із післяумовою (Repeat)
- •2. Цикл із предумовою (While)
- •3. Цикл із лічильником або параметром (For)
- •Концепція типів даних. Типи даних в мові Pascal
- •Дійсні типи
- •Бульовий (логічний) тип
- •Символьні і рядкові змінні
- •1. Символьний тип
- •2. Рядковий тип
- •Перерахований та обмежений типи
- •1. Перерахований тип
- •2. Обмежений тип
- •1. Поняття масиву. Одномірні масиви
- •2. Багатомірні масиви
- •3. Сортування і пошук
- •Множинний тип
- •Тип запис
- •Процедури і функції
- •Формальні і фактичні параметри. Механізм параметрів
- •Параметри - значення
- •Параметри-змінні
- •Безтипові параметри
- •Приведення типів.
- •Процедурні типи
- •Рекурсія Рекурсивні визначення
- •Рекурсивні підпрограми
- •Алгоритми з поверненням. Розв’язок задачі про рух коня
- •Алгоритми з поверненням. Розв’язок задачі про вісьмох ферзів
- •If підходить тнеn
- •Модулі в Турбо Паскалі
- •Модуль crt
- •1. Керування екраном
- •2. Робота з клавіатурою
- •3. Інші можливості
- •Графіка в Турбо Паскалі
- •1. Включення і вимикання графічного режиму.
- •2. Побудова елементарних зображень
- •3. Виведення текстової інформації.
- •Файли в мові програмування Pascal
- •Установчі і завершальні операції
- •Операції введення-виведення
- •Обробка помилок введення-виведення
- •Переміщення по файлу
- •Спеціальні операції
- •Текстові файли
- •1. Оголошення файлової змінної і прив'язка до файлу на диску
- •2. Читання даних з файлу
- •3. Запис даних у файл
- •Двійкові файли
- •1. Типізовані файли
- •2. Нетипізовані файли
- •Статичні і динамічні змінні
- •Покажчики
- •Стан покажчика
- •Установка розмірів динамічної пам'яті
- •Сумісність і перетворення посилкових типів
- •Динамічні структури даних
- •Динамічні змінні: інші види списків, стек і черга.
- •1. Інші види списків
- •2. Стек і черга
- •Дерева і пошук у деревах
- •1. Визначення й описи структур даних
- •1. Масив
- •2. Список
- •3. Дерево
- •2. Алгоритми
- •1. Лінійний пошук у масиві
- •2. Двійковий пошук
- •3. Лінійний пошук у списку
- •Змішані таблиці
- •Об’єктно-орієнтоване програмування. Що таке об’єктно-орієнтоване програмування
- •Інкапсуляція
- •Спадкування
- •Віртуальні методи і поліморфізм
- •Конструктори, динамічні об'єкти і деструктори
- •Поля і методи: сховані і загальнодоступні
- •Системно- залежні розширення
- •Налагодження змінних
- •Оверлеї
- •Переривання і системні виклики
- •Доступ до пам'яті і портів
- •Перевизначення переривань
2. Рядковий тип
Для збереження рядків (тобто послідовностей із символів) у Турбо-Паскалі мається тип string. Значеннями рядкових змінних можуть бути послідовності різної довжини (від нуля і більше, довжині 0 відповідає порожній рядок). Оголосити рядкову змінну можна двома способами: або var s: string; (максимальна довжина рядка — 255 символів), або var s: string[n]; (максимальна довжина — n символів, n — константа чи конкретне число).
Для того щоб записати значення в рядкову змінну використовуються ті ж прийоми, що і при роботі із символами. У випадку присвоювання конкретного рядка, це рядок повинний записуватися в апострофах (s:='Hello, world!'). Приведемо найпростіший приклад з рядками: програма запитує ім'я в користувача, а потім вітає його:
program Hello;
var s: string;
begin
write('Як Вас кличуть: ');
readln(s);
write('Привіт, ',s,'!');
readln;
end.
Збереження рядків. У пам'яті комп'ютера рядок зберігається у виді послідовності із символьних змінних, у них немає індивідуальних імен, але є номера, що починаються з 1). Перед першим символом рядка мається ще і нульовий, у якому зберігається символ з кодом, рівним довжині рядка. Нам абсолютно байдуже, які символи зберігаються в байтах, що знаходяться за межами кінця рядка. Розглянемо приклад. Нехай рядок s оголошений як string[9], тоді після присвоювання s:=’Привіт’; вона буде зберігається в наступному виді:
Номер байта |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
Уміст |
#6 |
‘П’ |
‘р' |
‘и' |
‘в' |
‘е' |
‘т' |
‘ю' |
‘s’ |
‘%’ |
Для того щоб у програмі одержати доступ до n-го символу рядка використовується запис s[n]. Якщо поміняти значення s[0] то це відіб'ється на довжині рядка. У наступному прикладі з рядка 'Привіт' ми зробимо 'Привіт!': s[0]:=#7; s[7]:='!';.
Порівняння рядків. Рядки порівнюються послідовно, по символах. Порівнюються перші символи рядків, якщо вони рівні — то другі, і т.д. Якщо на якомусь етапі з'явилося розходження в символах, то меншим буде той рядок, у якого менший символ. Якщо рядки не розрізнялися, а потім один з них закінчився, то він і вважається меншим. Приклади: 'ананас'<'кокос', 'свиня'>'свинина', ''<'A', 'hell'<'hello'.
Склеювання (конкатенація) рядків. До рядків можна застосовувати операцію «+», при цьому результатом буде рядок, що складається з послідовно записаних «складових». Приклад: після дії s:= 'abc'+'def'+'ghi'; перемінна s буде містити ‘abcdefghi’.
Процедури і функції для роботи з рядками. Найбільше часто уживається функція length(s: string): integer (після двокрапки записаний тип значення, що повертається функцією, у нашому випадку — ціле число). Ця функція повертає довжину рядка s.
Інші процедури і функції приведені в таблиці:
Чи процедура функція |
Призначення |
Приклад |
функція Copy(s: string; start: integer; len: integer): string |
Повертає вирізку зі строкової змінної s, починаючи із символу з номером start, довжина якої len |
s:=’Безглуздий’; s1:=Copy(s,4,4); {у s1 стане ‘користь’} |
функція Pos(s1: string; s: string): byte |
Шукає підрядок s1 у рядку s. Якщо знаходить, то повертає номер символу, з якого починається перше входження s1 у s; якщо s1 не входить у s, то функція повертає 0 |
n:=pos(‘міністр’, ‘адміністратор’); {=3} n:=pos(‘abc’, ‘stuvwxyz’);{=0} |
процедура Insert(s1: string; s: string; start: integer) |
Вставляє рядок s1 у рядкову змінну s починаючи із символу з номером start. |
S:=‘кот’; insert(‘мпо’,s,3); {у s стане ‘компот’} |
процедура Delete(s: string; start: integer; len: integer) |
Видаляє зі рядкової змінної s фрагмент, що починається із символу з номером start і довжиною len |
s:= ‘трикутник’; delete(s,4,6); {у s залишиться ‘три’} |