Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторный практикум.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
3 Мб
Скачать
☆

Литература

  1. Адаменко А.Н., Кучуков А.М. Логическое программирование и Visual Prolog. - СПб.: БХВ-Петербург, 2003.

  2. Братко И. Программирование на языке Пролог для искусственного интеллекта. - М.: Мир, 1990.

  3. Городняя Л.В. Основы функционального программирования. М.: ИНТУИТ.РУ «Интернет-университет Информационных Технологий», 2004.

  4. Доорс Дж., Рейблейн А.Р., Вадера С. Пролог - язык программирования будущего. - М.: Финансы и статистика, 1990.

  5. Ин Ц., Соломон Д. Использование Турбо-Пролога. М.:Мир,1993.

  6. Клоксин У., Меллиш К. Программирование на языке Пролог. - М.: Мир, 1987.

  7. Ковальков А.Т., Ковалькова И.А. Лабораторный практикум по дисциплине “Функциональное и логическое программирование” для студентов специальностей 1-40 01 01 и 1-40 01 02. – Минск, БГПА, 2005.

  8. Макаллистер Дж. Искусственный интеллект и Пролог на микро-ЭВМ. - М.: Машиностроение, 1990.

  9. Малпас Дж. Реляционный язык Пролог и его применение. - М.: Наука, 1990.

  10. Марселлус Д. Программирование экспертных систем на Турбо-Прологе. - М.: Финансы и статистика, 1994..

  11. Набебин А.А. Логика и Пролог в дискретной математике. - М.: Изд. МЭИ, 1996.

  12. Стерлинг Л., Шапиро З. Искусство программирования на языке Пролог. - М.: Мир, 1990..

  13. Стобо Дж. Язык программирования Пролог. - М.: Радио и связь, 1993.

  14. Хендерсон П. Функциональное программирование. -М.: Мир, 1983.

  15. Хювёнен Э., Сеппянен И. Мир ЛИСПа. Том 1, 2. -М.: Мир, 1990.

  16. Шрайнер П.А. Основы программирования на языке Пролог. – М.: Интернет – Ун-т Инфом. Технологий, 2005.

  17. Янсон А. Турбо-Пролог в сжатом изложении. - М.:Мир, 1991.

Приложение

domains

день,год,оклад=integer

имя,фамилия,месяц,должность=string

дата=дат(день,месяц,год)

работа=раб(должность,оклад)

член_семьи=чл_с(имя,фамилия,дата,работа)

список_детей=член_семьи*

список_имен_детей=string*

predicates

семья(член_семьи,член_семьи,список_детей) %описание всех членов семьи

муж(член_семьи) %муж

жена(член_семьи) %жена

список_детей_семьи(список_детей) %дети

количество_элементов_списка(список_детей,integer) %подсчет количества

%элементов в списке

количество_детей_семьи(string,integer) %количество детей в данной семье

имена_детей(string,список_имен_детей) %список имен детей в данной семье

выбор_имен_детей(список_детей,список_имен_детей) %выбор имен детей

%из списка детей

clauses

семья(чл_с("Иван","Иванов",дат(1,"май",1940),раб("инженер",200)),

чл_с("Анна","Иванова",дат(15,"январь",1945),раб("врач",180)),

[чл_с("Олег","Иванов",дат(22,"март",1970),раб("студент",40)),

чл_с("Инна","Иванова",дат(7,"июль",1975),раб("ученица",0))]).

семья (чл_с("Лев","Сидорик",дат(12,"февраль",1949),раб("хирург",300)),

чл_с("Раиса","Сидорик",дат(5,"ноябрь",1952),раб("домохозяйка",0)),

[чл_с("Борис","Сидорик",дат(2,"май",1973),раб("артист",140))]).

семья (чл_с("Степан","Петров",дат(1,"август",1940),раб("шофер",200)),

чл_с("Мария","Дрозд",дат(15,"июнь",1945),раб("кассир",180)),[]).

семья (чл_с("Леонид","Загорский",дат(1,"май",1960),раб("инженер",200)),

чл_с("Нина","Загорская",дат(5,"апрель",1965),раб("техник",180)),

[чл_с("Елена","Загорская",дат(2,"январь",1983),раб("ученица",0)),

чл_с("Ева","Загорская",дат(15,"февраль",1985),раб("ученица",0)),

чл_с("Софья","Загорская",дат(15,"февраль",1985),раб("ученица",0))]).

семья (чл_с("Николай","Савич",дат(1,"март",1970),раб("плотник",200)),

чл_с("Нина","Савич",дат(15,"январь",1965),раб("маляр",180)),

[чл_с("Игорь","Савич",дат(12,"ноябрь",1990),раб("ученик",0)),

чл_с("Игнат","Савич",дат(7,"декабрь",1994),раб("дошкольник",0))]).

семья (чл_с("Кирилл","Казак",дат(11,"май",1970),раб("аспирант",100)),

чл_с("Жанна","Казак",дат(15,"март",1975),раб("студентка",50)),

[чл_с("Ольга","Казак",дат(17,"июль",1995),раб("дошкольница",0))]).

семья (чл_с("","",дат(0,"",0),раб("",0)),

чл_с("Анна","Лоза",дат(15,"март",1975),раб("студентка",50)),

[чл_с("Ольга","Лоза",дат(17,"июль",1995),раб("дошкольница",0))]).

муж(чл_с(Имя,Фам,Дат,Раб)):-семья(чл_с(Имя,Фам,Дат,Раб),_,_).

жена(чл_с(Имя,Фам,Дат,Раб)):-семья(_,чл_с(Имя,Фам,Дат,Раб),_).

список_детей(Сп_дет):-семья(_,_,Сп_дет).

количество_элементов_списка([],0).

количество_элементов_списка([_|Хвост],Кол):-

количество_элементов_списка(Хвост,Кол1),Кол=Кол1+1.

количество_детей_семьи(Фам_мужа,Кол_дет):-

семья(чл_с(_,Фам_мужа,_,_),_,Сп_дет),

количество_детей_семьи(Сп_дет,Кол_дет).

имена_детей(Фам_мужа,Сп_имен_дет):-

семья(чл_с(_,Фам_мужа,_,_),_,Сп_дет),

выбор_имен_детей(Сп_дет,Сп_имен_дет).

выбор_имен_детей([],[]).

выбор_имен_детей([Ребенок|Хвост_списка_детей],[Имя|Хвост_имен]):-

Ребенок=чл_с(Имя,_,_,_),

выбор_имен_детей(Хвост_списка_детей,Хвост_имен).