Лаборатория No4
Лабораторна работа No4.
Предикати. Част 2.
Обективен: Получете представа за предикатите на Visual Prolog.
Задачата: Внедрете нова версия на програмата за рисуване на карти.
4.1. Започнете с логическите свързвания на Visual Prolog.
4.2. Научете за значението на Visual Prolog.
4.3. Определение на клауза за клаксон.
4.4. Деклариране на типове потоци и шаблон.
4.5. Декларации за режим на детерминизъм.
4.6. Рисуване на предикати
4.7. GDI обект. Създайте нов проект drawMap.
4.1. Логически съединители.
Ако P1 и P2 са предикати, P1 И P2 е равно вярно ако и двете P1 и P2 са равни вярно. Поредица от предикати, свързани чрез логически И се нарича конюнкция. В Prolog предикатите за съвпад са разделени със запетаи:
Изводът е куп, представен от символа :-, което означава ако. Поради това,
drawThem (Win): - връзки (Win), drawCities (Win).
означава, че вие нарисувай ги На Печеля, ако рисувате връзки На Печеля и drawCities На Печеля.
4.3. Изреченията на Хорн.
Клаузата на Хорн може да бъде единичен предикат. Например, следващият списък съдържа четири клаузи с един предикат Horn.
град ("Солено езеро", pnt (30, 40)).
град ("Йелоустоун", pnt (200, 100)).
Изреченията с един предикат на Хорн се наричат факти. В този пример фактите установяват връзка между един град и неговите координати. Домейнът на тези предикати е набор от двойки, състоящ се от името на града и неговите координати. Изречението на Хорн също може да приеме формата
където Ti и H са предикати. Така,
е пример за предложението на Хорн. В изречението на Хорн, частта, разположена преди знака :-, Наречен глава - глава (заглавие). Частта след знака :- Наречен опашка - опашка. В примера главата е drawThem (Win), и опашката - връзки (Win), drawCities (Win).
Набор от клаузи Horn със същото заглавие определя предикат. Например четирите градски клаузи на Хорн определят сказуемото град/2, и
drawThem (Win): - връзки (Win), drawCities (Win).
drawThem: (windowHandle) процедура (i).
Декларацията на типа казва, че аргументът Печеля предикат drawThem (Win) е от тип windowHandle. Декларацията за режим посочва, че аргументът drawThem/1 трябва да бъде въведена, тоест това е константа, а не свободна променлива. В този случай предикатът взема данни чрез своя аргумент.
Ако се предполага, че предикатът се използва само вътре в своя клас, той се декларира като клас предикат Е предикат на класа. Примери: