Приклад 4. Дан набір фактів з відомостями про студентів: прізвище, середній бал

Дан набір фактів з відомостями про студентів: прізвище, середній бал. Вивести на екран всі прізвища студентів, середній бал яких більше 4.0 або менше3.5.

 

Predicates

nondeterm Stud(string, real)

nondeterm Do(real,real)

Goal

Do(4.0, 3.5).

Clauses

Stud(“Петренко”,4.5).

Stud(“Антонов”,4.0).

Stud(“Балаян”,3.2).

Do(Bal1,Bal2):-stud(Pr,B), B>Bal1,write(Pr),nl,fail;

stud(Pr, B), B<Bal2,write(Pr),nl,fail.

Do(_,_).

Зверніть увагу, змінні, що подані в умовному твердженні зберігають свої значення при переході на нову гілку правила. Змінні, що подані в умовах загублюють свої значення для наступної гілки.

1.2.6Напишіть завдання свого варіанту за № в журналі.

При написанні програми обов’язково використовуйте вказаний нижче порядок дій. Приклади, що наведені в пунктах подаються для завдання з прикладу 3.

Порядок дій при написанні програми:

1) З’ясуйте, які об’єкти є у завданні, які властивості мають ці об’єкти, або з’ясуйте відношення між об’єктами. Наприклад: об’єкт студент, його властивості прізвище, середній бал. Об’єкт кількість, властивість його значення.

2) Зробіть функтором предикату назву об’єкту, а аргументами предикату властивості об’єкту. Або оберіть функтором предикату відношення, а аргументами предикату об’єкти. Наприклад, Stud(“Петренко”,4.5) і count(0).

3) Сформулюйте на основі цих відношень безумовні твердження у предикатній формі – факти. З’ясуйте чи будуть змінюватись аргументи фактів. Наприклад: факт Stud(“Петренко”,4.5). змінюватися не буде. Факт count(0). буде змінюватися count(1), тощо.

4) Визначте предикати, які ви використовуєте для запису фактів що не змінюються, в секції Predicates. Визначте предикати для фактів, що будуть змінюватися, в секції Facts.

 

Наприклад: Facts

Count(integer)

Predicates

Stud(string, real)

5) Сформулюйте питання до завдання як кон'юнкцію або диз’юнкцію цілей(декілька цілей об’єднаних логічним „AND” або “OR”) і розташуйте її в секції Goal;

6) Опишіть в тілі правила послідовність дій, які треба виконати, щоб одержати необхідний результат .

Для завдання прикладу 3 треба виконати наступні дії:

- встановити кількість студентів в 0;

- одержати відомості про середній бал студента з першого факту;

- перевірити чи середній бал більше 4.0;

- якщо умова вірна, то замістити факт з кількістю студентів 0 фактом з кількістю студентів 1;

- дії повторити поки факти не закінчаться;

- по закінченню фактів вивести на екран одержану кількість студентів.

7) Розташуйте факти і правила в секції Clauses в необхідному порядку згідно умовам задачі;

8) Зверніть увагу на змінні у вашій програмі. Переконайтесь, що ви вірно використовуєте в своїй програмі механізм передачі значень змінних від твердження до твердження, а також механізм звороту.

9) Збережіть програму на диск в каталог свого проекту;

10) При налагодженні програм лабораторної роботи треба буде завантажувати вже існуючий проект. Завантаження проекту виконуйте за інструкцією „Завантаження Test Goal проекту, що існує” з додатку А - „Робота в середовищі Visual Prolog V 5.2”.

11) Налагодьте вашу програму. Під час налагодження вашої програми використовуйте стандартний предикат виводу значень змінних WRITE, щоб слідкувати за значеннями змінних під час виконання програми.

12) При налагодженні програми можна також використовувати налагоджувач Visual Prolog - Debugger.

 

1.3 Завдання на лабораторну роботу

Варіант 1

1. Дан набір фактів, який має інформацію про багаж декількох пасажирів. Інформація про багаж кожного окремого пасажира – це № місця пасажира, кількість його речей і загальна вага його речей. Знайти багаж, в якому середня вага однієї речі певного пасажира, відрізняється не більше чим на 3 кг від загальної середньої ваги речей всіх пасажирів.

2. Дан файл с фактами, які мають відомості про пошукові сервери: назву сервера, адресу, мови. Написати програму, яка запитує у користувача параметри вибору серверів, и виводить на екран відомості про ці сервери.