
- •Базовий курс програмування у середовищі Turbo Pascal Методичні вказівки
- •Базовий курс програмування у середовищі Turbo Pascal Методичні вказівки
- •Практична робота №1
- •Організація вводу та виводу даних
- •Мета роботи: ознайомитись з конструкціями мови Turbo Pascal, структурою програм, стандартними типами даних і процедурами вводу та виводу.
- •Теоретичні відомості
- •1 Особливості мови Turbo Pascal
- •1.1 Спеціальні символи
- •1.2 Зарезервовані (ключові) слова
- •1.3 Ідентифікатори
- •1.5 Числа
- •1.6Рядки
- •1.7 Коментарі
- •2 Структура програми
- •Індивідуальні завдання
- •Контрольні питання
- •Практична робота №2
- •Логічні та циклічні структури
- •Теоретичні відомості
- •1 Логічні структури
- •1.1 Команда розгалуження if (умовна команда)
- •1.2 Команда goto
- •1.3 Команда вибору (сase)
- •2 Циклічні структури
- •2.1 Команда циклу з параметром (for)
- •2.2 Команда циклу з передумовою (while)
- •2.3 Команда циклу з постумовою (repeat)
- •2.4 Порівняння роботи команд циклу while, repeat та for
- •Індивідуальні завдання
- •Контрольні питання
- •Практична робота №3
- •Одновимірні масиви. Сортування
- •Мета роботи: ознайомитись з поняттям одновимірних масивів та діями над ними, навчитися застосовувати різні методи сортування для розв’язку математичних і технічних задач.
- •Теоретичні відомості
- •1 Одновимірні масиви
- •1.1 Додавання елементів масиву
- •1.2 Лічильник
- •1.3 Екстремуми
- •2 Методи сортування
- •2.1 Метод лінійного сортування
- •2.2 Сортування методом «бульбашки»
- •Індивідуальні завдання
- •Контрольні питання
- •Практична робота №4
- •Багатовимірні масиви
- •Мета роботи: вивчити технологію роботи з багатовимірними масивами.
- •Теоретичні відомості
- •1 Опис багатовимірних масивів
- •2 Доступ до елементів масивів
- •3 Масиви ідентичного типу
- •4 Головна та побічна діагоналі
- •6 Ввід матриці
- •7 Виведення матриці
- •Індивідуальні завдання
- •Контрольні питання
- •Практична робота №5
- •Підпрограми
- •Мета роботи: ознайомитись з правилами використання підпрограм, вивчити відмінності між процедурами та функціями.
- •Теоретичні відомості
- •1 Процедури та функції
- •1.1 Опис процедури
- •1.2 Опис функції
- •1.3 Формальні та фактичні параметри
- •1.3.1 Передача параметрів у підпрограмах
- •1.3.2 Виклик підпрограм
- •1.4 Глобальні та локальні змінні
- •1.5 Основні відмінності між функціями і процедурами
- •2 Рекурсивні функції
- •Індивідуальні завдання
- •Контрольні питання
- •Практична робота №6
- •Символьні та рядкові змінні
- •Мета роботи: ознайомитись з прийомами роботи із символьними та рядковими змінними.
- •Теоретичні відомості
- •1 Символьні змінні
- •2 Множини
- •3 Рядкові змінні
- •3.1 Оголошення рядкових змінних
- •3.2 Доступ до окремих елементів рядка
- •3.3 Зміна поточної довжини рядка
- •3.4 Злиття рядків
- •3.5 Порівняння рядків
- •3.6 Порожній рядок
- •3.7 Рядки і символи
- •3.8 Масиви символів і рядка
- •3.9 Стандартні підпрограми для обробки рядків.
- •Індивідуальні завдання
- •Контрольні питання
- •Практична робота №7
- •Записи. Записи з варіантами
- •Мета роботи: навчитись створювати прості бази даних за допомогою записів та записів з варіантами.
- •Теоретичні відомості
- •1 Записи
- •2 Записи з варіантами.
- •Індивідуальні завдання
- •Контрольні питання
- •Практична робота №8
- •Файли: текстові, типізовані, нетипізовані
- •Мета роботи: ознайомитись з випадками використання файлів, типами файлів та методами обробки елементів файлів.
- •Теоретичні відомості
- •1 Текстові файли
- •2 Типізовані файли. Мітки
- •3 Нетипізовані файли
- •Приклад 4:
- •Приклад 5:
- •Індивідуальні завдання
- •Контрольні питання
- •Практична робота №9
- •Мета роботи: вивчити структуру та особливості роботи з модулями в Turbo Pascal.
- •Теоретичні відомості
- •1 Структура модуля
- •1.1 Заголовок модуля
- •1.2 Інтерфейс модуля
- •1.3 Виконавча частина модуля
- •1.4 Розділ ініціалізації.
- •2 Етапи розробки модуля
- •Індивідуальні завдання
- •Контрольні питання
- •Практична робота №10
- •Графіка
- •Мета роботи: ознайомитись з принципами побудови графіків функцій та інших графічних об’єктів за допомогою засобів TurboPascal.
- •Теоретичні відомості
- •1 Основні процедури і функції модуля Graph
- •2 Робота із зображеннями.
- •3 Побудова і масштабування графіків
- •Індивідуальні завдання
- •Контрольні питання
- •1 Дані динамічної структури
- •2 Вказівник
- •3 Списки
- •4 Стек. Черга
- •4.1 Алгоритм побудови стека
- •4.2 Алгоритм побудови черги
- •Індивідуальні завдання
- •Контрольні питання
- •Практична робота №12
- •Об’єктно-орієнтоване програмування
- •Мета роботи: засвоїти матеріал щодо можливостей TurboPascal при створенні об’єктів.
- •Теоретичні відомості
- •1 Поняття «об'єкт»
- •2 Спадкування
- •Індивідуальні завдання
- •Контрольні питання
- •Список літератури
- •Зразок оформлення результатів виконання практичного завдання
2 Множини
Часто в задачах з обробки символів дуже ефективно застосовувати так звані множинні константи. В Turbo Pascal є тип змінних з назвою set (множини).
Множини – це набір однотипних елементів порядкового типу, номер якого у відповідному типі не виходить за межі діапазону 0...255. Таким чином, номер будь-якого елементу множини в машинному представленні може займати об'єм лише 1 байт. Всі значення множини можна перерахувати, оскільки число елементів в наборі обмежено – воно не може бути більше 256, причому мінімально можливий номер рівний 0, а максимально можливий – 255. Таким чином, наприклад, від’ємні числа не можуть бути елементами множини.
Всяка множинна змінна (на відміну, наприклад, від масивів) зберігає не самі значення її елементів, а всього лише інформацію про те, чи є конкретний елемент в заданій множині або його там немає. Тому порядок переліку елементів в множині при його визначенні абсолютно неважливий, багатократне повторення будь-якого його елементу ніяк не впливає на склад множини.
Як і у всіх змінних, в множинах є свої константи (множинні константи), вони визначаються шляхом переліку в квадратних дужках через кому або з використанням інтервалу всіх елементів множини. В програмі можна, наприклад, так перевіряти приналежність вибраного елементу даній множині:
if 'Ch' in ['a'..'p','r','s','u','w']
then
...
if x in [9,4..6]
then
...
Тут in — службове слово-оператор.
3 Рядкові змінні
3.1 Оголошення рядкових змінних
Оголошення змінних типу string (рядок):
var
Str_1:string; {Рядок з максимальною довжиною в 255 літер}
Str_2:string[3]; {Створили змінну, в якій може міститися до трьох символів}
Text_Isx:array Str_l; {Початковий текст – масив рядків, кожен з яких може містити до 255 символів}
Після оператора присвоєння
Str_1:= 'Весна!'; {В змінній Str_1 знаходиться слово «Весна!»}
довжина рядка Str_1 автоматично зменшиться з 255 до 6 символів – фактичної довжини рядка. Проте після цього рядку Str_1 можна присвоїти рядок з будь-якою довжиною до 255 символів:
Str_1:='Прийшла весна!' {Прийшла весна!}
В результаті присвоєння
Str_2:='Becнa!' {Весна}
у змінній Str_2 знаходитимуться тільки перші три символи слова Весна, всі символи, номери яких більше за замовлену при оголошенні довжину рядка (в даному випадку вона дорівнює [3], будуть відкинуті.
3.2 Доступ до окремих елементів рядка
Доступ до окремих символів змінних типу string здійснюється так само, як і в масивах:
Str_2[3]:='к';
writeln(Str_2);
До останнього присвоєння в змінній Str_2 знаходилося слово Вес, тому після заміни букви «с» на букву «к» на екран дисплея буде виведено слово Вік.
3.3 Зміна поточної довжини рядка
Довжина рядка визначається функцією Length (довжина). Ця функція підраховує число символів рядка, починаючи з першого символу. Але біля кожного рядка є ще і комірка з номером 0, в ній автоматично оновлюється інформація про довжину рядка при зміні його довжини.
Оскільки в кожній комірці рядка (у тому числі і в нульовій) може зберігатися тільки змінна типу char, то безпосередньо записати в нульову комірку число, яке відповідає довжині рядка (від 0 до 255) неможливо. З цієї причини в нульову комірку рядка записується символ, номер якого в згаданій вище таблиці кодів співпадає з поточною довжиною рядка. Щоб дізнатися про цей номер, слід застосувати функцію Ord. Таким чином, після присвоєння
Str_1:='Привіт!';
очевидна рівність:
Ord(Str_l[0])=Length(Str_1)=7.
В нульову комірку рядка можна (як і в будь-яку іншу) записати (шляхом привласнення) будь-який символ. Його номер в кодовій таблиці може бути як менше, так і більше поточної довжини рядка.
У першому випадку довжина рядка зменшиться. Наприклад, в результаті присвоєння
Str_1[0]:=Str_2[0];
довжина рядка Str_1 буде рівна трьом символам і процедура
writeln(Str_1);
роздрукує «При» – перші три символи початкового рядка. Присвоєння
Str_1:='Холодно';
відновить довжину рядка Str_1 до семи літер.
У другому випадку, коли довжина рядка примусово збільшується до розмірів, що перевищують фактичну довжину рядка, на позиціях після останнього символу початкового рядка можуть з’явитися літери від попередніх записів – це так зване «інформаційне сміття».
Приклад 1:
Str_2:='A';
Str_2[0]:=#3; {еквівалентне «Str_2[0]=Chr(3)»}
writeln(Str_2);
В результаті роботи цього фрагмента програми на екрані після букви «А» можуть з'явитися ще два якісь символи, що є «інформаційним сміттям». Такої ситуації слід завжди уникати.