Използването на вградените предикати, последователността от цели или уточняването на цел в системната подкана би имало малка стойност само по себе си. За да напише програма Prolog, първо, потребителят трябва да напише програма, която е написана на езика Prolog, да зареди тази програма и след това да посочи последователност от една или повече цели при подканата.
За да създадете програма в Prolog, лесният начин е да я въведете в текстовия редактор и след това да я запишете като текстов файл като prolog1.pl .
Следващият пример показва проста програма на Prolog. Програмата съдържа три компонента, които са известни като клаузи. Всяка клауза завършва с точка.
dog(rottweiler). cat(munchkin). animal(A) :- cat(A).
Използване на вградения предикат ' консултирам се , горната програма може да бъде заредена в системата Prolog.
?-consult('prolog1.pl').
Това показва, че файлът prolog1.pl съществува и програмата prolog е системно правилна, което означава, че има валидни клаузи, целта ще успее и за да потвърди, че програмата е прочетена правилно, тя произвежда един или повече реда изход. напр.
?-
# 0,00 секунди за справка с prolog1.pl
?-
кръгла математическа java
Алтернативата на 'consult' е 'Load', която ще съществува в опцията от менюто, ако системата Prolog има графичен потребителски интерфейс.
Когато програмата се зареди, клаузата ще бъде поставена в област за съхранение и тази област за съхранение е известна като база данни Prolog. В отговор на подканата на системата, укажете последователност от цели и това ще накара Prolog да търси и използва клаузите, необходими за оценка на целите.
Терминология
В следващата програма три реда показват клаузите.
dog(rottweiler). cat(munchkin). animal(A) :- cat(A).
Използвайки точката, всяка клауза ще бъде прекратена. Пролог програмите имат последователност от клаузи. Фактите или правилата са описани в тези клаузи.
Пример за факти е куче (ротвайлер) и котка (манчкин) . Те означават, че ротвайлер е куче' и ' манчкин е котка'.
Куче се нарича предикат. Кучето съдържа един аргумент. дума ' ротвайлер оградено в скоби ( ). Ротвайлер се нарича атом.
Примерът за правило е последният ред на програмата.
animal(A) :- dog(A).
Знакът двоеточие (:-) ще се чете като „ако“. Тук A е променлива и представлява произволна стойност. По естествен начин правилото може да се чете като „Ако А е животно, то А е куче“.
Горната клауза показва, че ротвайлер е животно. Такова приспадане може да се направи и от Prolog:
?- животно (ротвайлер).
да
Да намекне това манчкин е животно, няма доказателства за това.
?- животно (манчкин).
Не
Още терминология
Оценяването на дадена цел определя дали тя е изпълнена или не. Това също означава, че целта се оценява на вярно или невярно.
Обърнете внимание, че когато потребител въведе цел, понякога това може да се интерпретира като команда. Например,
?- спиране. „Използва се за излизане от системата Prolog.“
Понякога може да се разглежда като въпрос като,
?- животно (ротвайлер). & „Ротвайлер животно ли е?“
Следващата програма показва друг пример за животни. Състои се от осем клаузи. Коментарът се показва от целия текст между /* и */.
/* Another Program of Animal */ Dog(rottweiler). cat(sphynx). dog(poodle). dog(bulldog). cat(bengal). dog(dobermann). cat(himalayan). cat(singapura). /* This Prolog program consists of various clauses. It is always terminated using the full stop.*/
Сказуемото куче и сказуемото котка имат по четири клаузи. Да приемем, че в текстов файл „animal.pl“ програмата е била запазена и изходът е генериран чрез зареждане на програмата и в системния ред ние въвеждаме последователност от цели, както следва:
?- консултирайте се ('animals1.pl'). Системна подкана
# 0,01 секунди за консултация с animals.pl animals.pl, зареден с помощта на консултацията
?- куче (ротвайлер).
да
?- куче (боксер).
Не
?- куче(A).
A = ротвайлер пауза - клавишът за връщане е натиснат от потребителя
?- куче (B).
B = ротвайлер; паузи? потребителски преси;
B = пудел; паузи? потребителски преси;
B = булдог; паузи? потребителски преси;
B = доберман Без пауза? Ще премине на следващия ред
?- котка (A). A = сфинкс; пауза? потребителски преси;
A = Бенгалски паузи? потребителят натиска връщане
?- слушане (куче). Той ще изброи всички клаузи, които определят предикат dog
/* куче/1 */
куче (ротвайлер).
куче (пудел).
куче (булдог).
куче (доберман).
да
?-
В този пример се въвеждат различни нови характеристики на Prolog. Запитването е както следва:
?- куче(A).
Това означава, че намерете стойността на А и това ще бъде името на кучето. Отговорът на Prolog е следният:
А = ротвайлер
Други възможни отговори на А са, както следва, пудел, булдог, доберман. Това ще доведе до пауза на Prolog и поради това трябва да изчакаме потребителят да натисне клавиша 'return', преди да изведе системния ред ?-.
Можем да въведем следващата заявка, както следва:
?- куче (B).
Тази заявка е същата като преди. Горната заявка означава, че „намерете стойността на B и тя ще бъде името на куче“. Отговорът на Prolog е следният:
B = ротвайлер
алгоритъм за RSA
Prolog отново ще спре. Този път клавишът точка и запетая (;) е натиснат от потребителя. Сега Prolog ще намери алтернативна стойност на B, която удовлетворява целта dog(B). Той ще отговори, както следва:
B = пудел
Prolog отново ще спре. Клавишът точка и запетая (;) се натиска отново от потребителя. Prolog произвежда допълнително решение, както следва:
B = булдог
как да върна масив java
Prolog отново ще спре. Клавишът точка и запетая (;) се натиска отново от потребителя. Prolog произвежда допълнително решение, както следва:
B = доберман
Prolog разпознава, че няма повече налично решение, като не прави пауза, а системната подкана ?- като незабавно преминава към изхода.
В този пример е въведен нов вграден предикат. Уточняване на целта
?- списък (куче)
В горната цел Prolog ще изброи всичките четири клаузи, които дефинират предиката dog. Те ще дефинират в същия ред, в който са заредени в базата данни.
Използването на променливи в заявката е показано в следния пример. Последователността на целта е следната:
?-котка(A),куче(B).
Това ще ни даде всички възможни комбинации от котка и куче.
?-котка(A),куче(B).
A = сфинкс,
B = ротвайлер;
A = сфинкс,
B = пудел;
A = сфинкс,
B = булдог;
A = сфинкс,
B = доберман;
и т.н.
За разлика от това, последователността на целта е следната:
?-котка(A), куче(A).
Това ще даде всички животни, които са едновременно котка и куче (в базата данни няма такова животно). Тук A е „всяка стойност“ както в cat(A), така и в dog(A), но и двете трябва да имат една и съща стойност.
?-котка(A),куче(A).
Не