
- •Базовий курс програмування у середовищі 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 Спадкування
- •Індивідуальні завдання
- •Контрольні питання
- •Список літератури
- •Зразок оформлення результатів виконання практичного завдання
Контрольні питання
У чому полягає основна відмінність між даними статичної та динамічної структури?
Які дані належать даним динамічної структури?
Які існують різновиди зв’язаних динамічних даних?
У чому особливість оголошення даних динамічної структури?
За допомогою яких процедур відбувається розподіл пам’яті під динамічні змінні?
Який стан може приймати вказівник?
Яку дію виконують процедури New та Dispose?
Що так черга як структура даних?
Що таке стек як структура даних?
Скільки вказівників необхідно задля роботи з чергою?
Які дії необхідно виконати для створення черги?
Скільки вказівників необхідно задля роботи із стеком?
Які дії необхідно виконати для створення стеку?
Як додати або видалити елемент стеку?
Практична робота №12
Об’єктно-орієнтоване програмування
Мета роботи: засвоїти матеріал щодо можливостей TurboPascal при створенні об’єктів.
Теоретичні відомості
Виділення з програми процедур і функцій має не тільки оптимізуюче значення (частини програми, що повторюються, оформлюються в підпрограми), але і дає можливість спростити програмування. Добре написані процедура або функція повинні бути «чорною скринею» для програміста (при використанні підпрограм). Йому важливо знати що робить дана функція, як передати в неї параметри і як одержати результат. Те, як побудована функція йому знати зовсім не обов'язково.
Пояснимо термін «чорна скриня». Припустимо, що ви маєте пристрій з прозорим корпусом, біля якого є кнопки і екран, на якому відображається результат. В цьому випадку, ви можете дізнатися як відбувається отримання результату при натисненні кнопок. Якщо ж закрасити корпус чорною фарбою, вийде «чорна скриня», якою можна користуватися, але не можна дізнатися принцип її роботи.
Досить часто зустрічаються ситуації, коли створюються декілька функцій і процедур, що працюють з однаковим набором даних. Наприклад, в Windows для кожного вікна, що ми бачимо на екрані, існує набір змінних, які зберігають стан цього вікна: координати лівого верхнього кута, розмір вікна і інші параметри. Крім того в Windows є процедури і функції для роботи з вікнами: відобразити вікно, перемістити вікно тощо. Виникає ідея об’єднати разом і функції, і дані, з якими вони працюють. Це дозволяє, зокрема, не передавати інформацію про конкретне вікно через параметри.
Можна навести ілюстрований приклад. Кожен з нас вміє користуватись телевізором. По суті ми маємо «чорну скриню» (у зазначеному вище сенсі), у якої ми маємо можливість зчитувати поточний стан (наприклад, номер каналу), задані параметри (наприклад, колір телевізора), а також впливати на поточний стан (перемикати канали, міняти гучність). Програма, яка написана в об’єктно-орієнтованому стилі відповідає наступному набору вказівок:
Телевізор! Увімкнись!
Телевізор! Перемикнись на 1 канал!
Телевізор! Вимкни звук!
....
1 Поняття «об'єкт»
Об'єкт – тип даних, аналогічний запису (record), з яким пов'язаний деякий набір процедур і функцій (званих методами). Для кожного об'єкту можна створювати будь-яку кількість екземплярів об'єкту.
В результаті: в кожному екземплярі об'єкту є деякий набір змінних (вони можуть мати різні типи), а всім екземплярам об'єкту відповідає набір методів, за допомогою яких відбувається робота з об'єктом. Добре реалізований об'єкт буде «чорною скринею», робота з ним здійснюватиметься тільки за допомогою методів.
Для опису об'єкту використовується синтаксис, аналогічний опису запису:
type<ім’я об’єкту>=object
<список імен полів>:<тип полів>;
....
<список імен полів>:<тип полів>;
<оголошення метода>
...
<оголошення метода>
end;
Опис методу аналогічний попередньому опису функції (службове слово forward не використовується).
Після опису об'єкту описуються методи:
procedure <ім’я об’єкту>.<ім’я метода> <параметри>
<опис процедури>
Аналогічно можна описати і метод-функцію. Методи (також як і звичайні підпрограми) можуть не мати параметрів. Оскільки методи призначені для роботи з екземплярами об'єктів в них визначена службова змінна self, що є псевдонімом для поточного екземпляра (фактично self – це прихований параметр). Наприклад, звернення до поля x з методу проводиться так: self.x. Якщо в методі немає однойменної локальної змінної, до полів можна звертатися за назвою, опускаючи self і крапку.
Приклад 1:
Приведемо реалізацію об'єкту «вікно» (для реалізації інтерфейсу за допомогою модуля crt). Можна вважати, що вікно задається координатами лівого верхнього кута і розмірами по горизонталі і вертикалі (з урахуванням рамки вікна), а також мати прапорець видимості (true означає, що вікно на екран виведено).
type СWindow=object
x,y:integer; {координати вікна}
lenx,leny:integer; {розміри вікна}
visible:boolean; {прапорець видимості}
procedure Init(x,y,lenx,leny: integer);
procedure Show;
function isVisible:boolean;
end;
procedure СWindow.Init(x,y,lenx,leny:integer);
{задає початкові параметри вікна}
begin
Self.x:=x;
Self.y:=y;
Self.lenx:=lenx;
Self.leny:=leny;
visible:=true;
end;
procedure СWindow.show;
{рисує вікно}
var i,j:integer;
begin
textbackground(blue);
gotoxy(x,y);
write(╔); {ALT+201}
for i:=1 to lenx-2 do write('='); {ALT+205}
write('╗') {ALT+187}
for j:=y+1 to y+leny-2 do
begin
gotoxy(x,j);
write('║'); {ALT+186}
for i:=1 to lenx-2 do write(' '); {ALT+205}
write('║'); {ALT+186}
end;
gotoxy(x,y+leny-1);
write('╚'); {ALT+200}
for i:=1 to lenx-2 do write('='); {ALT+205}
write('╝'); {ALT+188}
visible:=true;
end;
function CWindow.isVisible:boolean;
begin
isVisible:=visible;
end;
Для створення екземпляра даного об'єкту можна використовувати стандартні способи оголошення змінних і створення динамічних змінних.
var Window:CWindow;
begin
Window.Init(20,5,40,10);
Window.Show;
end.