
- •Базовий курс програмування у середовищі 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 Спадкування
- •Індивідуальні завдання
- •Контрольні питання
- •Список літератури
- •Зразок оформлення результатів виконання практичного завдання
3 Нетипізовані файли
Нетипізовані файли ще називаються двійковими, оскільки їх елементами є двійкові числа. У таких файлах тип компонентів не вказується (він може бути будь-яким): їх файлова змінна оголошується лише зарезервованим словом file. Нетипізовані файли дозволяють обробляти дані, не замислюючись про їх тип, з їх допомогою можна записати на диск довільну ділянку використовуваної пам'яті комп'ютера і зчитати її в пам'ять диска, при цьому здійснити доступ до кожного байта пам'яті. Але, перш за все, нетипізовані файли призначені для реалізації запису і зчитування з максимально можливою швидкістю.
При використанні цих файлів процедури reset(«ФЗ»[,rozmir]) і rewrite(«ФЗ»[,rozmir]) мають необов'язковий параметр rozmir, який задає розмір (буфера) порції інформації, що пересилається (копіюється), в байтах.
За замовчуванням цей розмір дорівнює 128 байтам.
Приклад 2:
Опис і відкриття нетипізованого файлу:
const
...
rozmir:word=512; {типізована константа}
...
var
f:file;
...
begin
...
assign(f,'D:\N_T_File.Dat');
reset(f,rozmir); {розмір порції (буфера)}
...
Всі стандартні підпрограми для обробки типізованих файлів використовуються і для нетипізованих файлів, за винятком процедур read і write, які для нетипізованих файлів замінюються високошвидкісними процедурами blockread і blockwrite.
Процедура blockread(«ФЗ»,Bufer_Bl,N[,rezultat]) читає з файлу ФЗ N порцій (через буфер) інформації і розміщує їх в спеціальному буфері блоку. У якості такого буферу використовується змінна Bufer_Bl – це масив елементів (типа byte) файлу із загальним об'ємом rozmir*N (тобто N об'ємів звичайного буфера). Необов'язковий параметр rezultat повертає фактичну кількість прочитаних порцій. Цей параметр корисно використовувати у тому випадку, коли вже досягнутий кінець файлу, а практичне число прочитаних порцій ще не стало рівним заданому значенню, проте для подальшої обробки даних потрібна загальна кількість фактично прочитаних порцій. Якщо в процедурі blockread вказана змінна Bufer_Вl недостатнього об'єму або якщо в процесі запису на диск не виявиться необхідного вільного місця, то виникне помилка вводу-виводу (при цьому відбудеться зупинка роботи програми), яку можна заблокувати, вказавши необов'язковий параметр rezultat.
Максимальний об'єм інформації, яка переноситься через буфер блоку (rozmir*N) не може перевищувати об'єм 65520 байт. Це зумовлено тією обставиною, що змінна Bufer_Bl є масивом, об'єм якого не може перевищувати вказане значення.
Приклад 3:
Текстові файли. Приклад програми, яка вирішує наступні задачі:
Створити файл початкових даних – масив з n цілих чисел.
Ввести в програму інформацію з файлу початкових даних, вивести її у файл з результатами.
Відсортувати масив за зростанням елементів.
Вивести відсортований масив у файл з результатами.
Приклад файлу початкових даних Isx_Dan.pas
5 4 3 2 1
Приклад файлу з результатами Rez_Dan.pas
Вихідний масив R
5 4 3 2 1
Масив R після сортування
1 2 3 4 5
Слід зазначити, що розширення .pas в назвах вказаних файлів може бути відсутнім взагалі або бути будь-яким іншим, наприклад, .dan.
program TextFile;
uses crt;
const
n=5; {довжина масиву}
k_isx='D:\Isx_Dan.Pas'; {ім'я зовнішнього файлу з вихідними даними}
k_rez='D:\Rez_Dan.Pas'; {ім'я зовнішнього файлу з результатами}
tурe
Int_n=1..n;
Mas=array[Int_n] of integer;
var
i:Int_n; R:Mas;
F_Isx, F_Rez:Text; {файлові змінні}
procedure Chtenie; {зчитує із зовнішнього файлу в масив R}
begin
assign(F_Isx,k_Isx); {здійснює зв'язок ФЗ F_Isx із зовнішнім файлом}
reset(F_Isx); {відкриває файл F_Isx для читання}
for 1:=1 to n do
read(F_Isx,R[i]);
close(F_Isx); {закриває файл з вихідними даними}
end; {Chtenie}
procedure Pechat(M:Mas); {друк даних}
var
j:Int_n;
begin
for j:=1 to n do
write(F_Rez,M[j]:4);
writeln(F_Rez);
end;{Pechat}
procedure Sort(var M:Mas);
var
i, Candidat:Int_n;
x:integer;
begin
for i:=1 to n-1 do
for Candidate i+1 to n do
if M[i]>M[Candidat]
then
begin
x:=M[i];
M[i]:=M[Candidat];
M[Candidat]:=x;
end; {then}
end; {Sort}
begin
clrscr;
Chtenie;
assign(F_Rez,k_rez); {зв'язок ФЗ F_Rez із зовнішнім файлом}
rewrite(F_Rez); {відкриває зовнішній файл для запису}
writeln(F_Rez,'Вихідний масив R:');
Pechat(R);
close(F_Rez); {закриває файл F_Rez}
Sort(R);
append(F_Rez); {відкриває файл для його розширення або дозапису}
writeln(F_Rez,' Масив R після сортування');
Pechat(R);
close(F_Rez); {закриває файл F_Rez}
end. {Text_File}