
- •Базовий курс програмування у середовищі 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 Спадкування
- •Індивідуальні завдання
- •Контрольні питання
- •Список літератури
- •Зразок оформлення результатів виконання практичного завдання
Практична робота №7
Записи. Записи з варіантами
Мета роботи: навчитись створювати прості бази даних за допомогою записів та записів з варіантами.
Теоретичні відомості
1 Записи
Запис (record) – це структурований тип даних, призначений для обробки даних, що складаються з полів даних різних типів, та збереження їх в оперативній пам'яті. У мові Turbo Pascal розрізняють фіксовані (звичайні) та варіантні записи. Запис описується в розділі типів (можна і в розділі змінних) за допомогою наступної конструкції:
type <ім'я запису>=record
<список імен полів 1> <тип полів 1>;
<список імен полів n> <тип полів 1>;
end;
Доступ до певного поля запису здійснюється за допомогою кваліфікуємих (уточнених) ідентифікаторів (складені імена), в яких вказується весь ланцюг імен від ідентифікатора змінного типу «запис» до ідентифікатора потрібного поля. Імена полів кваліфікує мого ідентифікатора розділяють точками:
<ім'я запису>.<ім'я поля>
Складені імена при великих обробках полів одного запису використовувати незручно.
Це приводить до громіздкого виду програми. У таких випадках використовують оператор приєднання with. Він дозволяє використовувати у відповідному місці програми тільки імена полів запису.
Загальний вид оператора наступний:
with <ім'я змінної типу запис> do <команда>
У цьому операторі після слова with визначається ім'я змінної типу запис, а в командах використовуються тільки його імена полів. Оператор також може бути вкладеним, тобто містити в собі інші оператори приєднання.
2 Записи з варіантами.
Pascal дозволяє використання записів з так званими варіантними полями, тобто в записах можна задавати тип утримуючого визначення декількох варіантів структури.
Розходження може стосуватися як числа компонентів, так і їхніх типів. Запис може містити лише одну варіантну частину. Використання варіантів полів запису веде до мінімізації пам'яті.
Загальний вид запису з варіантами наступний:
type <ім'я запису> record
case <поле вибору> <ім'я типу> of
<список констант вибору 1> (<поле...:тип>:... );
end;
Пропозиція case ... of, яка відкриває варіантну частину, зовні схожа на відповідний оператор вибору, але в дійсності відіграє роль службового слова, що позначає початок варіантної частини. Тому наприкінці варіантної частини не слід писати слово end як пари до case of.
Тип поля вибору повинен бути впорядкованим, причому сам тип ніяк не впливає ні на кількість подальших варіантних нулів, ні, навіть, на характер констант вибору.
Об'єднання всіх списків констант вибору повинне збігатися з кількістю констант в описі поля вибору.
Варіантна частина може бути вкладеною тобто вона може сама містити варіанти.
Доступ до елементів варіантної частини запису можливий тільки за умови визначення значення поля вибору. Відповідно до цього значення вибирається відповідний варіант запису, що визначається відповідною константою вибору в структурі case. Поле вибору є елементом запису, що визначає варіантну частину, тому після введення значень елементів змінити значення поля вибору не можна без порушення варіантної структури.
Приклад:
Ввести масив записів кожен з яких містить інформацію про прізвище, адресу й номер телефону. Скласти програму, що сортує ці дані за алфавітом по прізвищах та знаходить у масиві введений з клавіатури запис.
program zapisi;
uses crt;
type anketa=record {тип запису}
FIO:string;
Adress:string;
Phone:string;
end;
var
Mas:array[1..10] of anketa {масив запису}
I,j,k,:integer; {параметри циклів}
S:char; {змінна для закінчення введення даних}
Rec:anketa; {запис для пошуку}
procedure vvod;
begin
i:=0; {лічильник кількості записів}
reapit {цикл введення записів у масив запису}
inc[i];
with mas[1] do
begin
write('FIO'); readln(FIO);
write('adress'); readln(adress);
write('tel'); readln(phone);
end;
writeln('continue? (Y/N)');
s:=readkey; {введення із клавіатури відповіді (Y/N)}
until upcase(s)='N'; {при виконанні умови виходить із циклу}
end;
{виведення масиву записів}
procedure vyvod;
begin
writeln(' ---і- --telephone ---і ---і-');
for j:=1 to do {для кожного запису вводяться прізвище, адреса й телефон}
begin
with mas[j] do
begin
write(' ',FIO);
write(' ',adress);
write(' ',phone);
end;
writeln;
end;
end;
{сортування масиву за прізвищем}
procedure sort;
vartmp:anketa; {тимчасова змінна для переборів елементів масиву}
begin
for j:=1 to i-1 do {фіксація елементу масиву}
for k:=j+1 to i do {перегляд інших елементів масиву}
begin
if mas[j].fio>mas[k].fio then {якщо елементи не впорядковані}
begin
tmp:=mas[j]; {перестановка елементів масива}
mas[j]:=mas[k];
mas[k]:=tmp;
end;
end;
end;
{введення запису для пошуку в масиві}
procedure search;
var flag:boolean; {змінна для визначення факту відсутності даних}
begin
writeln('Input record for serch:fio,Adress,tel');
readln(rec fio);
readln(rec adress);
readln(rec phone);
for j:=to i do {пошук запису за введеним значенням}
with mas[j] do
begin
if (fio=rec.fio) and (adress=rec.adress) and (phone=rec.phone)
{якщо запису збігаються}
then begin
flag:=true; {флаг позначення знайденого запису}
writeln (record found:'rec.fio,' 'rec.adress,' 'rec.phone,');
break; {переривання циклу коли знайдений запис}
end;
else flag:=false; {флаг позначає відсутність запису}
end;
if not flag then writeln ('record not found');
end;
{основна програма}
begin
clrscr;
writeln('rezults of program');
vvod; {введення масиву запису}
writeln('array of input”s records '); {виведення масиву записів}
sort; {сортування}
writeln('array of records after sort');
vyvod; {виведення відсортованого масиву}
search; {пошук необхідного запису}
readkey;
end.