Раздел предложений
Фактом называют предложение Пролога следующего вида: <имя факта>(<список констант или переменных через запятую>). Факт считается всегда истинным. Например: Хобби(Анна,марки). Хобби(Петя,фантики). Данное([1,2,3,4]). Предикатом называют предложение Пролога вида <имя предиката>(<список имен переменных и констант через запятую>). Предикат может принимать значение «истина» или «ложь» в зависимости от значений переменных. Правилом называют следующее предложение Пролога: <предикат> if <предикат1>, <предикат2>,..., <предикатN>. Раздел предложений имеет вид Clauses <факты>. <правила>. Например: Clauses отец(иван,петр). /*Иван — отец Петра*/ отец(иван,игорь). /*Иван - отец Игоря*/ отец(игорь,семен). отец(игорь,анна). дед(Х,У) if отец(Z,Y), отец(Х,Z). /*Х — дед Y,если отцом Y является Z, а отцом Z является X*/
Организация запросов на языке Пролог
Следующим элементом программы на языке Пролог являются вопросы. Вопросы можно сформулировать в теле программы в разделе Goal, который вводится после раздела Clauses. Например: Goal дед(Х,анна). /*кто дед Анны?*/ Сформулированный так запрос называется внутренней целью. Но можно формулировать вопрос после нажатия Run в открывающемся при этом окне goal goal: дед(Х,анна). В этом случае цель называется внешней. Пример. Построить базу знаний из следующих фактов: Карл у Клары украл кораллы. Клара у Карла украла кларнет. Построить вопросы: Кто украл кларнет? Кто украл кораллы? Что украл Карл? Что было украдено? Решение: Domains X,Y,Z=symbol. Predicates украл(Х,Х,Х). Clauses украл(карл,кораллы,клара). украл(клара,кларнет,карл). /*вопросы могут быть заданы так:*/ Goal: украл(X,кларнет,Y). ответ: Х=клара У=карл Goal: украл(X,кораллы,Y). ответ: Х=карл У=клара Goal: украл(карл,X,Y). ответ: Х=кораллы Y=клара Goal: украл(X,Y,Z). ответ: Х=карл Y=кораллы Z=клара Х=клара Y=кларнет Z=карл Варианты задания 2
1. Построить базу данных своих родственников мужского пола с фактами «отец» и «сын» и правилами «дед», «внук», «брат». 2. Построить базу данных «отец», «сын», «брат», «дядя», «племянник», «дед», «внучатый племянник». 3. Построить базу данных «студент» с полями «фамилия», «балл 1», «балл 2» и правило «стипендия» с полями «фамилия», «сумма». 4. Построить базу данных о родственниках «мать», «дочь», «сестра» и правила «тетя», «племянница», «бабушка», «внучатая племянница». 5. Построить базу данных «телефонная книга» с полями «фамилия», «номер», «адрес». 6. Построить базу данных «родитель» (имя родителя, имя ребенка) и правила «мать», «отец». 7. Построить базу данных фактов «мальчик» (имя), «девочка» (имя), «дружит» (имя, имя) с правилами «приятели»(X, Y), «приятельницы»(X, Y). 8. Построить базу данных из фактов, кто на чем играет (имя, инструмент) и правило «квартет»(Х, Y, Z, Т). 9. Построить базу данных из фактов «мужчина» (имя, возраст), «женщина» (имя, возраст) и правило «подлежит призыву» (имя). 10. Построить базу данных из фактов «ученик» (фамилия, класс, школа) и правило «одноклассники» (X, Y). 11. Построить базу данных «знакомства» из следующих фактов и правил: Мери прелестна; Джон добрый; Джон мужественный; Джон сильный; некто счастлив, если богат и нравится женщинам; мужчина нравится женщине, если женщина нравится мужчине и он добрый, либо мужчина добрый и сильный; мужчине нравится женщина, если она прелестна. 12. Построить базу данных своих родственников мужского пола с фактами «отец» и «сын» и правилами «дед», «внук», «брат». 13. Построить базу данных «отец», «сын», «брат», «дядя», «племянник», «дед», «внучатый племянник». 14. Построить базу данных «студент» с полями «фамилия», «балл 1», «балл 2» и правило «стипендия» с полями «фамилия», «сумма». 15. Построить базу данных о родственниках «мать», «дочь», «сестра» и правила «тетя», «племянница», «бабушка», «внучатая племянница». 16. Построить базу данных «телефонная книга» с полями «фамилия», «номер», «адрес». 17. Построить базу данных «родитель» (имя родителя, имя ребенка) и правила «мать», «отец». 18. Построить базу данных фактов «мальчик» (имя), «девочка» (имя), «дружит» (имя, имя) с правилами «приятели»(X, Y), «приятельницы»(X, Y). 19. Построить базу данных из фактов, кто на чем играет (имя, инструмент) и правило «квартет»(Х, Y, Z, Т). 20. Построить базу данных из фактов «мужчина» (имя, возраст), «женщина» (имя, возраст) и правило «подлежит призыву» (имя).
|