
- •Базовий курс програмування у середовищі 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 Етапи розробки модуля
Модуль – це допоміжний об'єкт, тому його не можна запустити на виконання командою Run (Ctrl+F9). Він може тільки брати участь у побудові програм, підпрограм або інших модулів.
Процес розробки модулів має два етапи. На першому етапі необхідно в окремому файлі набрати текст модуля. Ім'я цього файлу повинне збігатися з першими вісьма символами імені модуля й мати розширення .pas. Файли з модулем і програмою повинні перебувати в одній директорії.
Кожний модуль необхідно помістити в спеціальну бібліотеку, вона називається TPU (Turbo Pascal Unit). Для розміщення модуля в бібліотеці TPU програму необхідно відкомпілювати командою make (F9) або запустити її на виконання командою run (Ctrl+F9). Після цього в поточній директорії буде створений файл (модуль) з колишньою назвою, але з розширенням .tpu. Файл (модуль) з розширенням .pas після цього, у принципі, можна знищити, для роботи програми він не потрібний, але цей файл може ще знадобитися для наступної модернізації модуля, а також для уточнення його вмісту. Справа в тому, що вміст файлу модуля з розширенням .tpu представлено не в символах ASCII, як вміст файлів з розширенням .pas, а в машинному коді, тому його неможливо вивчати й редагувати.
Якщо файл модуля з розширенням .tpu розміщено не в поточній, а в заданій директорії, то для цього необхідно виконати наступні команди: F10/Option/Directories/Unit directories {вказати шлях до директорії в прямокутнику з таким заголовком}.
Ще один спосіб створення файлу модуля з розширенням .tpu (або об'єктного модуля). Для параметра compile/destination за допомогою клавіші Enter варто встановити значення disk і запустити модуль на виконання командою Ctl+F9 (Run). При цьому здійсниться компіляція модуля. Компілятор розпізнає на початку тексту модуля службове слово unit і автоматично створить файл із розширенням .tpu замість файлу з розширенням .ехе (як для звичайних програм). Повідомлення, яке з'явиться при цьому на екрані дисплея «Can not run unit», просто інформує вас про те, що модуль самостійно не виконується.
Приклад 1:
Програма у двовимірному масиві Matr(n,m) міняє місцями максимальний і мінімальний елементи. Вихідні дані матриці Matr(n,m) знаходяться у файлі Isx_Dan.pas, результати – у файлі Rez_Dan.pas. Процедури вводу та виводу даних, ініціалізації файлів, глобальні константи, типи й змінні знаходяться в об'єктному модулі Mod_Matr.tpu.
В програмі в процедурі Zamina при пошуку мінімального й максимального значень матриці використана тільки змінна для зберігання мінімального значення, а змінна для запам'ятовування максимального значення не застосовується.
program Prjk_Mod;
uses
Mod_Matr;
procedure Zamina; {міняє місцями мінімальний і максимальний
елементи вихідної матриці Matr(n.m)}
var
i_Max, i_Min, i:int_st; {номери рядків}
j_Max, j_Min, j:int_cl; {номери стовпців}
Min:rеа1; {для зберігання мінімального значення}
begin
i_Max:=1;
i_Min:=1;
j_Max:=1;
j_Min:=1;
for i:=1 to n_st do
for j:=1 to n_cl do
begin
if Matr[i,j]<Min
then
begin
i_Min:=i;
j_Min:=j;
Min:=Matr[i,j];
end; {then_1}
if Matr[i,j]>Matr[i_Max,j_Max]
then
begin
i_Max:=i;
j_Max:=j;
end; {then_2}
end; {for_j}
Matr[i_Min,j_Min]:=Matr[i_Max,j_Max];
Matr[i_Max,j_Max]:=Min;
end; {Zamina}
begin
Vvedennya_Matr(Matr);
rewrite(F_Rez);
writeln(F_Rez,'Матриця вихідних даних з ',n_cl, ' стовпців і ',n_st,' рядків');
Druk_Matr(Matr);
Zamina;
writeln(F_Rez,'Матриця після обробки:');
Druk _Matr(Matr);
close(F_Rez);
end. {Prjk_Mod}
unit Mod_Matr; {заголовок модуля}
interface {інтерфейс або розділ оголошень}
const
n_st=5; {число рядків Matr}
n_cl=8; {число стовпців (колонок) Matr}
Isx='Isx_Dan.pas';
Rez='Rez_Dan.pas';
type
Int_st=1..n_st;
Int_cl=1..n_cl;
Matrix=array[Int_st,Int_cl] of real;
var
Matr:Matrix;
F_Isx,F_Rez:text;
procedure Vvod_Matr(var M:Matrix);
procedure Pechat_Matr(M:Matrix);
implementation {виконавча частина модуля}
procedure Vvedennya_Matr; {скорочений заголовок}
var
i:Int_st;
j:Int_cl;
begin
reset(F_Isx);
for i:=1 to n_st do
begin
for j:=1 to n_cl do
read(F_Isx,M[i,j]);
readln(F_Isx);
end; {for_i}
close(F_Isx);
end; {Vvedennya_Matr}
procedure Druk_Matr; {скорочений заголовок}
var
i:Int_st;
j:In t_cl;
begin
for i:=1 to n_st do
begin
for j:=1 to n_cl do
write(F_Rez,M[i,j]:5:1);
writeln(F_Rez);
end; {for_i}
end; {Druk_Matr}
begin {розділ ініціалізації}
assign(F_Isx,Isx);
assign(F_Rez,Rez);
end. {Unit Mod_Matr}