
Книга_мат_3_1
.pdfЯкщо показчик поточноїпозиції файла знаходиться за останнім елементом , тобто в кінці файла (Eof(f)=True), то виконання процедури Read приводить до помилки часу виконання.
Write (f,a) - Виконуючи запис у файл слід пам‟ятати, що при записуванні кожноїї змінної a показчик поточної позиції в файлі , також при читанні, переміщується на наступний елемент. Якщо покозчик поточної позиції файла знаходиться за останнім елементом, тобто в кінці файла (Eof(f)=True), то при виконані команди Write файл розшириться.
Assign (f,road) - З допомогою процедури Assign ви зв‟язуєте змінну f з деяким іменем файла, яке зберігається у змнній road. В якості параметра імені файла в процедурі Assign текстова константа, тобто безпосередньо може бути вказано ім'я файла , наприклад, таким чином:
Assign(f,’A:\TEST.DAT’);
Reset (road) - Ввідкриває існуючий файл даних, імя якого перед тим було пов‟язано за допомогою прцедури Assign з деякою файловою змінною, вказаною в рпоцедурі Reset як параметр. Наприклад пара операторів
Assign(f, ’A:\TEST.DAT’); Reset (’A:\TEST.DAT’);
Відриває файл A:\TEST.DAT, якщо він існує і доступний.
Rewrite(f) - Створює новий файл і відриває йог для запису і читання якщо файл з таким ім'ям вжі існує, його вміст стирається, а сам файл відкривається заново.
Close(f) - Закриваєт відкритий раніше файл, пов‟язанний з вказанною змінною в якості параметра файлової змінної. Зверніть увагу на те, що при спробі закрити з допомогою процедури Close файл, який небув до цього відкритий або вже закритий, виникає помилкова ситуація.
Прямий доступ до вмісту файлів надають процедури і функції:
FilePos(f) – повертає номер поточної позиції показчика в файлі (позиції нумеруються від нуля !)
FileSize(f) – повертає поточний розмір файла (число елементів прирахунку
від одиниці! ).
Seek(f) – переміщує показчик поточної позиції в файлі на елемент з заданим номером (при рахунку від нуля !).
Особливості роботи з типізовами файлами
Приклад 16. Створити файл записів з полями: прізвище та дата нар о- дження. Надрукувати всіх тих хто народився зі мною в одному році 1979.
USES crt;
TYPE a=record
81
fio,rik:string; end;
VAR q:a;
f:file of a;
qq:integer; |
|
{=================================} |
|
procedure create(path:string); |
|
begin |
{Процедура ініціалізації файла} |
clrscr;
writeln('Вы создаете файл записей');
writeln('Файл состоит из 2 компонент: фамилии и года рождения'); writeln('После каждой компоненты нажимаеться ENTER в конце ввода
CTRL+Z');
writeln;
assign(f,path);rewrite(f);
checkeof:=true; while not eof do begin readln(q.fio); readln(q.rik); write(f,q); writeln;
end;
close(f);
writeln;
end;
{=================================}
procedure print_f(path:string); |
{Процедура друкування файла} |
var f:file of a; |
|
begin clrscr;
writeln('Созданный Файл выглядит так:');writeln; assign(f,path);reset(f);
while not eof(f) do |
|
begin |
|
read(f,q); |
|
writeln(q.fio,' ',q.rik); |
|
end; |
|
close(f); |
|
writeln; |
|
end; |
|
{=================================} |
|
procedure poisk(path:string); |
{Прцедура обробки данних} |
begin |
|
assign(f,path); |
|
reset(f); |
|
while not eof(f) do |
|
82
begin read(f,q);
if q.rik='1978' then begin
qq:=1;
writeln(q.fio)
end;
end;
writeln;
if qq=0 then writeln('Таких дюдей нет')
else writeln('Эти люди родились вместе сомной'); end;
BEGIN |
{Основна програма} |
clrscr; |
|
qq:=0; |
|
create('hh'); |
{Ви створюэте файл пiд іменем hh} |
print_f('hh'); |
|
writeln; |
|
poisk('hh'); |
|
END. |
|
Завдання
1.Створити файл записів, який містить про учнів: прізвище, клас, номер школи і додатково оцінки за останню четверть (середній бал). Вияснити скільки учнів мають оцінку не нижчу за 4.
2.Створити файл записів, який містить дані про книги. Дані про кожну книгу-це прізвище автора, назва книги та рік видання. Вивести на екран всі книги вказаного автора та їх роки видання.
3.Створити файл записів, який містить дані про автомобілі, що складаються з його марки, номера та прізвища господаря. Знайти прізвища господарів та номер автомобіля певної марки.
4.Створити файл записів з полями: прізвище учня, число та місяць народження. Надрукувати список учнів, які народилися влітку.
5.Створити файл записів, який містить різні дати. Кожна з цих дат складається з числа, місяця та року. Знайти дату з найменшим номером року.
6.Створити файл записів, який містить дані про книги. Дані про кожну книгу – це прізвище автора, назва книги та рік видання. Визначити чи є книга з назвою”Інформатика”, якщо є, то повідомити прізвище авто-
ра та рік видання.
7.Створити файл записів, який містить дані про куби: розмір кожного куба (довжину ребра), його колір та матеріал. Знайти кількість деревяних кубів.
83
8.Створити файл записів, який містить дані про учнів школи. Поля запису: прізвище, ім‟я, клас та номер школи. Надрукувати дані про учня, прізвище якого найкоротше.
9.У типізованому файлі міститься інформація про учнів даної школи у такому вигляді: прізвище, ім‟я, клас (рік навчання та літера). Визнач и- ти кількість учнів у даному класі.
10.Створити файл записів, який містить про учнів: прізвище, клас, номер школи і гурток, в роботі якого учень приймає участь. Вияснити скільки учнів і хто саме відвідують вказаний гурток.
11.Створити файл записів, який містить дані про куби: розмір кожного куба (довжину ребра), його колір та матеріал. Знайти кількість кубів з ребром рівним 5.
12.Створити файл записів з полями: назва книги, автор та рік видання. Надрукувати дані про книги, які видані з 1960 року.
13.На Олімпійських Іграх в Сіднеї приймали участь гімнасти з різних країн. Відомості про кожного складаються з імені, прізвища, країни та кількості балів. Створити файл записів, який містить відомості про спортсменів. Вивести на екран дані про представників України.
14.В змаганнях зі спортивної гімнастики приймають участь декілька спортсменів. Вони виконують вправи на 4 снарядах. Створити файл записів, що містить відомості про кожного спортсмена: прізвище та оцінки на кожному снаряді. Вивести прізвища тих спортсменів, які в сумі отримали найбільще балів.
15.Створити файл записів, що зберігає координати точки xi, yi . Знайти всі точки, які найменше віддалені від даної точки М.
Контрольні запитання
1.Що називається типізованим файлом?
2.В чому полягає подібність і розбіжність між масивом та файлом?
3.По яким ознакам класифікуються файли в Turbo Pascal?
4.Для чого призначена прцедура Close?
5.Яких типів допускає ться описання типізованих файлів?
6.Як нумеруються елементи типізованних файлів?
7.По яким правилам виконується читання із типізованних файлів?
8.Який формат має процедура Write для типізованних файлів?
9.Які процедури та функції призначенні для прямого доступа до елем е- нтів типізованних файлів?
84

Завдання до теми «Багатовимірні масиви. Матриці»
1 |
а) Отримати квадратну |
б) У заштрихованій об- |
|
|||||
|
матрицю порядку N: |
ласті матриці, заповне- |
|
|||||
|
1 |
0 |
|
|
ної |
випадковими числа- |
|
|
|
1 |
|
|
|
ми |
знайти |
мінімальний |
|
|
|
|
|
елемент. |
|
|
||
|
|
|
|
|
|
|
||
|
0 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|||
2 |
а) |
Отримати |
квадратну |
б) У заштрихованій об- |
|
|||
|
матрицю порядку N: |
ласті матриці, заповне- |
|
|||||
|
|
1 |
|
|
ної |
випадковими числа- |
|
|
|
0 2 |
|
|
ми |
знайти |
максималь- |
|
|
|
|
|
ний елемент. |
|
||||
|
|
|
|
|
|
|||
|
|
0 |
|
|
|
|
|
|
|
n |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
3 |
а) |
Отримати |
квадратну |
б) У заштрихованій об- |
|
|||
|
матрицю порядку N: |
ласті матриці, заповне- |
|
|||||
|
n |
0 |
|
|
ної |
випадковими числа- |
|
|
|
|
|
ми обчислити суму еле- |
|
||||
|
n |
1 |
|
|
|
|||
|
|
|
ментів. |
|
|
|||
|
|
|
|
|
|
|
||
|
0 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|||
4 |
а) |
Отримати |
квадратну |
б) У заштрихованій об- |
|
|||
|
матрицю порядку N: |
ласті матриці, заповне- |
|
|||||
|
1 2 |
|
|
ної |
випадковими числа- |
|
||
|
2 3 |
0 |
|
ми |
підрахувати кіль- |
|
||
|
|
|
|
|
кість парних чисел. |
|
||
|
0 |
|
|
|
|
|
|
|
|
|
n |
(n |
1) |
|
|
|
|
|
|
|
|
|
|
|
|
|
85

5 |
а) |
Отримати |
квадратну |
б) |
У |
заштрихованій об- |
|
||
|
матрицю порядку N: |
ласті |
матриці, |
заповне- |
|
||||
|
2 1 |
|
|
ної |
випадковими числа- |
|
|||
|
|
|
ми |
|
замінити |
непарні |
|
||
|
1 |
0 |
|
|
|
|
|||
|
|
|
числа |
протилежними за |
|
||||
|
|
|
|
|
|
||||
|
|
|
|
|
значенням. |
|
|
||
|
0 |
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
1 2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
6 |
а) |
Отримати |
квадратну |
б) |
У |
заштрихованій об- |
|
||
|
матрицю порядку N: |
ласті |
матриці, |
заповне- |
|
||||
|
1 1 |
1 1 |
|
ної |
випадковими числа- |
|
|||
|
|
ми |
обчислити |
добуток |
|
||||
|
1 |
|
1 |
|
|
||||
|
|
|
елементів. |
|
|
||||
|
|
|
|
|
|
|
|||
|
|
0 |
|
|
|
|
|
|
|
|
1 |
|
1 |
|
|
|
|
|
|
|
11 |
1 1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
7 |
а) |
Отримати |
квадратну |
б) |
У |
заштрихованій об- |
|
||
|
матрицю порядку N: |
ласті |
матриці, |
заповне- |
|
||||
|
1 1 1 1 |
1 |
ної |
випадковими числа- |
|
||||
|
ми |
|
Підрахувати кіль- |
|
|||||
|
2 2 2 |
2 |
|
|
|
||||
|
|
кість простих чисел. |
|
||||||
|
3 3 |
3 |
|
|
|||||
|
|
|
|
|
|
|
|||
|
|
|
0 |
|
|
|
|
|
|
|
n |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||
8 |
а) |
Отримати |
квадратну |
б) |
Заповнити |
матрицю |
|
||
|
матрицю порядку N: |
7х7 елементами від 1 до |
|
||||||
|
1 1 |
1 1 |
|
49 по спіралі. Поміняти |
|
||||
|
|
місцями стовпці з міні- |
|
||||||
|
|
1 |
1 |
|
|
||||
|
|
|
мальною та максималь- |
|
|||||
|
|
|
|
|
|
||||
|
0 |
|
0 |
|
ною сумою елементів. |
|
|||
|
|
|
|
|
|
|
|
||
|
|
1 |
1 |
|
|
|
|
|
|
|
1 1 |
1 1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
86

9 |
а) |
|
Отримати |
квадратну |
б) Заповнити |
матрицю |
|
||||||
|
матрицю порядку N: |
|
8х8 елементами з ліній- |
|
|||||||||
|
1 |
0 |
1 |
|
|
|
|
ного |
масиву |
А[1..64]. |
|
||
|
|
|
|
|
Поміняти місцями пер- |
|
|||||||
|
1 1 |
1 1 |
|
|
|
|
|
||||||
|
|
|
|
|
ший та останній рядки. |
|
|||||||
|
|
|
|
|
|
|
|
|
|
||||
|
1 1 |
1 1 |
|
|
|
|
|
|
|
|
|||
|
1 |
0 |
1 |
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
||||||
10 |
а) |
|
Отримати |
квадратну |
б) Заповнити |
матрицю |
|
||||||
|
матрицю порядку N |
|
8х8 елементами з ліній- |
|
|||||||||
|
|
n |
|
|
0 |
|
ного |
масиву |
А[1..64]. |
|
|||
|
|
|
|
|
Визначити, |
стовбець з |
|
||||||
|
|
n |
1 |
n |
|
|
|
|
|
||||
|
|
|
|
|
|
максимальною сумою |
|
||||||
|
: |
n |
2 n |
1 n |
|
|
|
||||||
|
|
|
елементів. |
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
||
|
|
1 |
|
2 |
|
3 |
n |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
11 |
а) |
|
Отримати |
квадратну |
б) Заповнити |
матрицю |
|
||||||
|
матрицю порядку N: |
|
8х8 елементами з ліній- |
|
|||||||||
|
|
1 |
2 |
|
3 |
n |
|
ного |
масиву |
А[1..64]. |
|
||
|
|
|
|
Визначити рядок з міні- |
|
||||||||
|
|
|
|
|
|
|
|
|
|
||||
|
n |
2 n |
1 n |
|
|
мальною сумою елемен- |
|
||||||
|
|
|
тів. |
|
|
|
|
||||||
|
n |
1 |
n |
|
|
0 |
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|||||
|
|
n |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
12 |
а) |
|
Отримати |
квадратну |
б) Заповнити |
матрицю |
|
||||||
|
матрицю порядку N: |
|
8х8 елементами з ліній- |
|
|||||||||
|
|
1 |
|
2 |
|
3 |
n |
1 n |
ного масиву А[1..64]. |
|
|||
|
|
|
|
Визначити |
рядок, який |
|
|||||||
|
|
2 |
1 |
|
2 |
n |
2 n 1 |
містить |
|
|
найбільше |
|
|
|
n |
1 n |
2 n |
3 1 |
2 |
від’ємних чисел. |
|
||||||
|
|
|
|
|
|
|
|||||||
|
|
n |
n |
1 n |
2 2 |
1 |
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
87

13 |
а) |
|
Отримати |
квадратну |
б) У заштрихованій об- |
|
||||||||||||
|
матрицю |
|
|
порядку N: |
ласті матриці, заповне- |
|
||||||||||||
|
|
|
1 |
|
|
1 |
|
|
|
|
1 |
|
|
ної випадковими числа- |
|
|||
|
|
1! |
2! |
|
|
|
n! |
ми замінити парні числа |
|
|||||||||
|
|
|
|
|
нулями, а непарні оди- |
|
||||||||||||
|
|
1 |
|
|
|
1 |
|
|
|
1 |
|
|
|
|||||
|
|
|
|
|
|
|
ницями. |
|
||||||||||
|
|
1!2 |
2!2 |
|
|
n!2 |
|
|
||||||||||
|
|
1 |
|
|
|
1 |
|
|
|
1 |
|
|
|
|
||||
|
|
1!n |
|
|
2!n |
|
n!n |
|
|
|||||||||
14 |
а) |
|
Отримати |
квадратну |
б) У заштрихованій об- |
|
||||||||||||
|
матрицю порядку N: |
ласті матриці, заповне- |
|
|||||||||||||||
|
|
1 |
|
0 |
|
|
n |
|
|
|
|
|
ної випадковими числа- |
|
||||
|
|
|
|
|
|
|
|
|
|
ми замінити прості чис- |
|
|||||||
|
|
2 |
|
|
n |
1 |
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
ла їхніми квадратами. |
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
|
|
|
|
|
0 |
|
|
|
|
|
|
|
|||
|
|
2 |
|
|
|
n |
1 |
|
|
|
|
|
|
|
||||
|
|
1 |
|
0 |
|
|
n |
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
88

Лабораторна робота № 17 “Середовище Турбо-Прологу.
Створення простої бази даних”
Мета: опанувати середовище Турбо-Прологу. Навчитися створювати та виконувати прості програми.
Питання для вивчення
1.Призначення команд головного меню інтегрованого середовища: File,
Edit, Run, Compile, Options, Setup
2.Структура програми на Пролозі: розділи описів та правил.
3.Конструювання простих запитів на мові Пролог
4.Збереження, компіляція та редагування запуск програми
Завдання
1.Ознайомитися з командами текстового редактора середовища.
2.Ознайомитися з призначенням вікон та командами для роботи з вікнами.
3.Побудувати в зошиті схему родинних стосунків власної родини (4 рівні).
4.На його основі заповнити базу даних фактами батько_або_мати (один_із_батьків, дитина).
5.Зберегти базу даних у вигляді файлу на дискові.
6.Побудувати до даної бази прості запитання та запитання із змінними. Простежити порядок видачі відповідей. Записати у зошиті запитання та їхню інтерпретацію природною мовою.
7.Доповнити базу даних фактами чоловік (дехто), жінка (дехто) стосовно усіх аргументів бази даних.
8.Сформувати та проінтерпретувати відповідні прості запити.
Приклад розв‘язання задачі на Пролозі
PREDICATES
батько_або_мати(symbol, symbol)
CLAUSES
батько_або_мати (пам, боб). батько_або_мати(том, боб). батько_або_мати(том, ліз).
батько_або_мати(боб, енн). батько_або_мати(боб, пат). батько_або_мати(пат, джім).
Приклади запитів:
пам |
том |
боб |
ліз |
енн |
пат |
джім
Схема родинних стосунків
89
1.Чи є Боб батьком або матір‟ю Пат? Goal: батько_або_мати (боб, пат).
2.Хто діти Боба?
Goal: батько_або_мати (боб, Хто). 3. Хто чий батько або матір? Goal: батько_або_мати (А, Б).
Як запитати:
1.Хто батьки Пат?
2.Чи має Ліз дитину?
3.Хто батьки батьків Пат?
Лабораторна робота № 18 “Середовище Турбо-Прологу.
Факти і правила. Трасування програм”
Мета: сформувати уміння формулювати правила, використовуючи зв‟язки і, не, або, та складні запити. З‟ясувати порядок обчислення цілей, виконуючи трасування програм..
Питання для вивчення
1.Декларативний та процедурний зміст Пролог-програм
2.Механізм уніфікації пролог-програм
3.Трасування програм на Пролозі.
Завдання
1.Для створеної бази даних визначити відношення: мати, батько, син, дочка, а також за варіантами:
1)дід, баба;
2)онук, онучка;
3)брат, сестра;
4)дядько, тітка;
5)чоловік, жінка;
6)тесть, теща;
7)свекор, свекруха;
8)зять, невістка;
9)племінник, племінниця
10)шурин, зовиця;
11)свояк, своячка.
Доповнити відповідними відношеннями схему р одинних стосунків.
2.Сформулювати складні запити для пошуку елементів, що відповідають вищевказаним відношенням.
90