
- •Базовий курс програмування у середовищі 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 Спадкування
- •Індивідуальні завдання
- •Контрольні питання
- •Список літератури
- •Зразок оформлення результатів виконання практичного завдання
1 Дані динамічної структури
До даних динамічної структури належать файли, незв’язані та зв’язані динамічні списки.
Файли в даній класифікації віднесено саме до динамічних структур даних тому, що хоча видалення та вставка елементів в середину файлу не припустимі, проте довжина файлу в процесі роботи програми може змінюватись – збільшуватись або зменшуватись до нуля, – а це вже динамічна властивість файлу як структури даних. Класифікацію даних динамічної структури показано на рисунку 1.
Рисунок 1
2 Вказівник
Для роботи з динамічними змінними використовується тип даних – вказівник. Якщо ім'я статичної змінної задає адреса даних в оперативній пам'яті, то вказівник на динамічну змінну – тільки тип даних, а не його розміщення в пам'яті. Тип даних вказівник описується за допомогою символу ^ у розділі типів у такий спосіб:
type<назва типу=^<базовий тип>;
Конкретні вказівники на динамічні змінні оголошуються, як звичайно, у розділі змінних:
var<список вказівників на змінні>:<ім'я типу>;
Розглянемо опис типів вказівників і оголошень вказівників на динамічні змінні:
type
UkazNaCel=^integer;
UkazNaMasiv=^array [1..100] of real;
UkazNaZapis=^Zapis;
var
C1, c2:UkazNaCel;
Mas1, mas2:UkazNaMasiv;
Zap1, zap2:UkazNaZapis;
На етапі компіляції пам'ять для масивів n записів відразу не надається (але сам вказівник займає в пам'яті 4 байти). Пам'ять для даних, про які говорить вказівник, надається на етапі виконання програми за допомогою процедури new:
new(<вказівник на змінну>);
Тільки на цьому етапі створилася динамічна змінна, ім'я якої має вигляд:
<вказівник на змінну>^.
Розрізняють операції з вказівником на динамічну змінну й операції з самою динамічною змінною.
З динамічною змінною можна виконувати операції, які характерні для даних відповідного базового типу.
Для вказівників застосовують дві операції переадресації:
1) <вказівник 1>:=<вказівник 2>;
2) <вказівник>:=nil;
а також процедури new і dispose.
В результаті виконання першої команди переадресації вказівник 1 буде містити адресу тієї ж ділянки пам'яті, що і вказівники 2, тобто вони вказують на ті самі дані.
В результаті виконання другої команди присвоєння, вказівник не вказує на конкретні дані (він стає вільним – nil).
Після обробки динамічної змінної пам'ять можна звільнити за допомогою процедури
dispose(<вказівник на динамічну змінну>).
3 Списки
Список – це кінцева сукупність даних одного типу, між якими налагоджено зв'язок. Елемент (односпрямованого) списку складається із двох частин; самих даних і вказівника на наступний елемент списку. Для опису такої структури використовують тип даних запис і тип даних вказівник у такий спосіб:
type
<ім'я елемента списку>=^<запис>;
<запис>=record
<поле даних>:<тип даних>;
<поле вказівник>:<ім'я елемента списку>;
end;
Приклад:
type
Elspiska=^Reka;
Reka=record
Name:string[ll];
Dlina:integer;
P1:longint;
Next:Elspiska;
end;
var
element, first, pred, nov: Elspiska;
Тут element – вказівник на поточний елемент списку, element – динамічна змінна типу запис, element^.dlina – динамічна змінна типу integer, що зберігає довжину ріки, а element^.next – вказівник на наступний елемент списку. Тобто element^.next^.dlina – це довжина наступної ріки, а element^.next^.next – вказівник ще на наступну ріку і так далі.