Точки на равнината

Можете да изпълнявате всички примери и задачи в този урок в новото конзолно приложение или можете да използвате конзолното приложение, което стартирахме в първия ни урок.

Нека има набор от точки с известни координати на равнината в декартовата координатна система. Необходимо е да се опишат тези точки в Prolog и да се търсят точки по различни критерии.

Нека опишем точки под формата на point/2 предикати от два аргумента - координати. За да направим това, в секцията с факти за класа декларираме недетерминиран предикат:

точка : (цяло число X, цяло число Y).

Задайте набора от точки в раздела на клаузите. Нека този набор съдържа девет точки:

точка (1,1). точка (1,2). точка (1,4).

точка(2,1). точка (2,2). точка (2,4).

точка (3,2). точка (4,1). точка (4,3).

И така, изходният код във файла main.pro след тези модификации трябва да бъде така:

отворена основна конзола

точка :(цяло число X, цяло число Y).

стр

точка (1,1). точка (1,2). точка (1,4).

точка(2,1). точка (2,2). точка (2,4).

точка (3,2). точка (4,1). точка (4,3).

Тялото на целта е предикатът run().

крайно изпълнение основно

Листинг 2. Описване на точки в равнината

Пример4.Нека потърсим точка с координати, например X=1 и Y=2. За да направим това, вмъкваме извикване на предиката point(1,2) в тялото на предиката run() и показваме съобщение за намерената точка. В случай, че необходимата точка липсва, не забравяйте да предоставите второто изречение с резултата от съответното съобщение:

write("Намерена е точка с определени координати"),

write("Точка с посочени координати НЕ е намерена"),

Пример 5.Нека потърсим точка с въведени от клавиатурата координати. За целта използваме следната цел:

write("Точка отнамерени на определени координати"),

write("Точка с посочени координати НЕ е намерена"),

Пример 6.Нека потърсим точка с дадена координата X и в случай на успешно намиране да определим координатата Y:

writef("Намерена точка с координати %,%",X,Y),

write("Точка НЕ ​​е намерена"),

Моля, обърнете внимание, че в програмата има няколко точки с координата, например X=1. Как да намерите всички тези точки? Това е много лесно да се направи в Prolog. В изречението, където се извършва търсенето, трябва да премахнете изрязването и да принудите връщане назад, като използвате предиката fail ().

Пример 7.Нека потърсим всички точки с дадена координата X и в случай на успешно намиране да определим координатата Y на всяка от тях:

writef("Намерена точка с координати %,% \n",X,Y),

Предикатът writef извежда форматиран низ. Вместо знаци за процент, той последователно замества стойностите на променливите, разделени със запетаи вдясно от форматирания низ. Символът \n е символ за нов ред. Ако този знак не е посочен, тогава целият изход ще бъде извършен в един ред.

Пример 8.Нека потърсим всички точки над хоризонталната линия Y=2:

writef("Намерена точка с координати %,% \n",X,Y),

Пример9.Нека потърсим всички точки, разположени на правата y=x:

writef("Намерена точка с координати %,% \n",X, X),

Обърнете внимание, че в този пример вместо целевата точка (X, Y), X=Y, сме използвали цел с вътрешна аргументна точка за обединяване (X, X), която сама ще извърши теста за равенство: X=Y.

Задача 3.Покажете X,Y координатите на всички точки.

Задача 4.Отпечатайте всички точки, чиято сума от координати X и Y е равна на 5.