Приклад 3
Нехай є текстовий файл з компонентами, в яких вказано відомості про підприємства галузі: код підприємства, назва підприємства. Компоненти відсортовані по коду підприємства. Написати програму, яка читає компоненти файлу за кодом підприємства, і їх вміст виводить на екран.
Утворимо текстовим редактором файл “ F.d”, з компоненти які мають фіксовану довжину 9 байт:
01АвтоЗАЗ
02АвтоУАЗ
...
Після кожної компоненти такого файлу знаходиться символ <ПС> (1 байт).
Domains
file = f
Predicates
do
Goal
openmodify(f,”F.d”), do, closefile(f).
Clauses
do:-write(“Код підприємства ? ”),
readdevice(keyboard),
readint(N),
N1=(N-1)*11+2,
readdevice(f),
filepos(f, N1, 0),
readln(K),
write(K), nl, do.
do.
Файл відкривається для прямого доступу. Програма вводить код підприємства з клавіатури, а дані з файлу. Тому вхідний потік назначається то на клавіатуру, то на файл.
Для читання компоненти файлу покажчик встановлюється на компоненту за формулою.
Вихід з програми за клавішею ESC.
4.2.2 Виконайте завдання свого варіанту за № в журналі.
Використовуйте в програмі типові схеми роботи з файлами, які подано у прикладах читання та запису файлів.
Пам’ятайте, що для вводу даних з різних файлів або пристроїв, треба перемикати логічний пристрій. Виконуйте аналогічні дії при виводі у файл.
Увід-вивід з пристроїв, виконується тими ж предикатами, як і увід-вивід з файлів.
Утворюйте за допомогою текстового редактору файли необхідні для роботи вашої програми, якщо такі потрібні. Налагодьте вашу програму, використовуючи утворені файли.
4.3 Завдання на лабораторну роботу
1. Підготувати програмно файли f та g компонентами яких будуть дійсні числа. Створити текстовий файл m, компоненти якого будуть подані як сума відповідних компонент файлів f та g.
2. Підготувати текстовим редактором файли f та g компонентами яких будуть дійсні числа. Компоненти треба відсортувати за збільшенням. Створити новий текстовий відсортований файл m, компонентами якого будуть компоненти файлів f і g.
3. Підготувати програмно файл f компонентами якого будуть дійсні числа. Записати в текстовий файл g компоненти файла f в зворотному порядку.
4. Підготувати текстовим редактором файл f компонентами якого будуть дійсні числа. Отримати текстовий файл g, утворений з файлу f виключенням повторних входжень чисел.
5. Підготувати текстовим редактором файл f компонентами якого будуть дійсні числа. Кількість від’ємних і додатних чисел в файлі f однакова. Переписати файл f в текстовий файл g так, щоб у файлі g не було двох сусідніх чисел з одним знаком.
6. Підготувати текстовим редактором файл f компонентами якого будуть дійсні числа. Переписати файл f в текстовий файл g так, щоб у файлі g йшли спочатку додатні а потім від'ємні числа.
7. Підготувати текстовим редактором файл f компонентами якого будуть дійсні числа. Переписати файл f в текстовий файл g так, щоб у файлі g числа йшли у наступному порядку: два додатних, два від'ємних, тощо. Кількість компонентів файлу f кратна 4.
8. Підготувати текстовим редактором файл компоненти якого однакової довжини і мають відомості про співробітників підприємства: табельний номер, прізвище, ім'я. Переписати ці компоненти у інший файл згідно табельному номеру прямим методом доступу.
9. Написати програму, яка вводить ім'я текстового файлу та шлях до каталогу в якому знаходиться цей файл. Відкриває вказаний файл та виводить його вміст на екран. Програма повинна повторювати вказані дії для будь-якого текстового файлу.
10. Написати програму, яка вводить з клавіатури відомості про співробітників підприємства: прізвище, ім'я, ім'я по батькові, посада, оклад і формує з них компоненту файлу. Після чого доповнює вже існуючий файл сформованою компонентою. Програма повинна вміти повторювати вказані дії.
11. Підготувати програмно файл, компоненти якого мають однакову довжину і містять відомості про деталі: шифр, назву деталі та її вагу. Написати програму, яка читає компоненти методом прямого доступу, за шифром деталі. Отримані структури треба вивести на екран.
12. Написати програму, яка стискує текстовий файл наступним чином: символи, що не повторюються, переписує, а послідовність однакових символів, що йдуть підряд, замінює на один керуючий символ з вказівкою степеню тиску і символ. Наприклад: рядок “fcv*****kl” замінює на “fcv$5*kl”.
13. Написати програму, яка шифрує текст файлу за алгоритмом: кожну букву замінити на наступну букву алфавіту. Результат записати в інший файл.
14. Написати програму, яка порівнює два будь-які файли за вмістом і за розміром. Якщо файли різної довжини, то видати про це повідомлення. Якщо файли відрізняються вмістом, то вказати номер байту в якому вони відрізняються, та видати вміст цих байтів на екран.
15. Написати програму, що вилучає з текстового файлу вказаний фрагмент тексту. Фрагмент тексту вводити з клавіатури.
16. Написати програму, що замінює вказаний текст з файлу на новий текст. Результат занести в той же файл.
17. Написати програму, яка сортує файл цілих чисел. Сортування виконувати за допомогою перезапису чисел вхідного файлу прямим методом доступу в інший файл.
18. Написати програму, яка вводить факти з текстового файлу і записує їх у інший файл за принципом однакових функторів та кількості і типів аргументів.
19. Написати програму, яка організує і поповнює тлумачний словник. Програма розташовує слова в алфавітному порядку.
20. Написати програму, що організує доступ до тлумачення слова тлумачного словника. Одержані дані вивести на екран. Програма повинна повторювати вказані дії для будь-яких слів.
21. Дан текстовий файл, який є програмою на мові PROLOG. Перевірити цю програму на наявність секцій Predicates, Clauses, Goal, а також на синтаксис запису фактів в секції Clauses.
22. Скорегувати текстовий файл таким чином, щоб після заголовку, який помічено * з обох сторін, при виводі на екран пропускався 1 рядок, а сам заголовок знаходився у центрі. Якщо рядок тексту починається з великої літери, а перед нею стоїть крапка, то зробити абзац.
23. Підготувати програмно файли f та g компонентами яких будуть дійсні числа. Створити текстовий файл m, компоненти якого будуть подані як різниця компонент файлу f та g. Компоненти файлу f брати в прямому порядку, а компоненти файлу g в зворотному порядку.
24. Написати програму, яка розгортає текстовий файл, який стиснуто наступним чином: символи, що не повторюються, переписує, а послідовність однакових символів, що йдуть підряд, замінює на один керуючий символ з вказівкою степеню тиску і символ. Наприклад: рядок “fcv*****kl” замінює на “fcv$5*kl”.
25. Підготувати програмно файл f компонентами якого будуть дійсні числа. Відсортувати за зростанням компоненти файлу методом вибору і записати у текстовий файл g.
4.4 Зміст звіту
Звіт повинен мати наступні пункти:
4.4.1 Тему, мету роботи
4.4.2 Завдання
4.4.3 Текст програми
4.4.4 Вхідний дані і результат роботи програми
При захисті лабораторних робіт враховується:
- якість програми;
- знання роботи програми;
- знання матеріалу лекцій за темою.
4.5 Контрольні запитання
4.5.1 Скільки вхідних і вихідних файлів можуть бути активними у програмі на Пролозі одночасно?
4.5.2 Скільки файлів можуть бути відкритими на Пролозі одночасно?
4.5.3 Які пристрої по замовчанню приймається задля вхідних та вихідних логічних пристроїв?
4.5.4 Що таке символічне ім'я файлу? Як воно використовується? Для чого воно введено у програмі?
4.5.5 Як організувати роботу програми з файлом прямим методом доступу?
4.5.6 Якими стандартними предикатами можна читати дані з файлу або писати у файл?
4.5.7 Чи існує на Пролозі вивід за форматом?
4.5.8 Як записати у файл керуючі символи <ВК>,<ПС>?
ДОДАТОК А