Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ИИС laba5

.docx
Скачиваний:
25
Добавлен:
06.03.2016
Размер:
287.96 Кб
Скачать

Федеральное агентство по образованию

Государственное образовательное учреждение

высшего профессионально образования

Уфимский государственный авиационный технический университет

Кафедра автоматизированных систем управления

Отчет по лабораторной работе №5

по теме: «УПРАВЛЕНИЕ ПОИСКОМ С ВОЗВРАТОМ: ПРЕДИКАТ FAIL.»

по дисциплине «Интеллектуальные информационные системы»

Выполнили: Сынгизов Г.З.,

Исламгареев И.И.

Группа: ПИ-404

Проверила: Ишмухаметова Л.К.

Уфа 2015

Цель работы

Целью работы является изучение поиска с возвратом – предиката fail, применяемого при разработке приложений в программе Visual Prolog.

Ход работы

Задание 1.

  1. Условие задачи.

База данных содержит факты вида: отдыхает(имя, город), украина(город), россия(город), женщина (имя), мужчина(имя ).

а) вывести список женщин, отдыхающих в России;

б) вывести список мужчин, отдыхающих на Украине.

  1. Листинг программы

а)

PREDICATES

nondeterm otdyhaet(symbol,symbol,symbol,symbol)

spisok

CLAUSES

otdyhaet(anja,female,limansk,ukr).

otdyhaet(vova,male,kiev,ukr).

otdyhaet(jura,male,pripjat,ukr).

otdyhaet(serega,male,ufa,rus).

otdyhaet(ramzes,male,sochi,rus).

otdyhaet(dasha,female,samara,rus).

otdyhaet(masha,female,moskva,rus).

otdyhaet(maja,female,piter,rus).

spisok:-otdyhaet(X,female,Z,rus),write(X),nl,fail.

GOAL

write("Spisok jenshin iz Rossii"),nl,spisok.

б)

PREDICATES

nondeterm otdyhaet(symbol,symbol,symbol,symbol)

spisok

CLAUSES

otdyhaet(anja,female,limansk,ukr).

otdyhaet(vova,male,kiev,ukr).

otdyhaet(jura,male,pripjat,ukr).

otdyhaet(serega,male,ufa,rus).

otdyhaet(ramzes,male,sochi,rus).

otdyhaet(dasha,female,samara,rus).

otdyhaet(masha,female,moskva,rus).

otdyhaet(maja,female,piter,rus).

spisok:-otdyhaet(X,male,Z,ukr),write(X),nl,fail.

GOAL

write("Spisok mujchin iz Ukrainy"),nl,spisok.

  1. Результат работы программы

а)

б)

Задание 2.

  1. Условие задачи.

База данных содержит факты вида: книга(автор, название, издательство, год_издания), украина(город).

а) вывести весь список книг;

б) вывести список книг авторов Пушкина и Чехова;

в) вывести список книг, изданных в издательстве «Питер» не ранее 2000 года.

  1. Листинг программы

а)

PREDICATES

nondeterm kniga(symbol,symbol,symbol,integer)

spisok

CLAUSES

kniga(pushkin,evgeny_onegin,moskva,2001).

kniga(pushkin,kapitanskaja_dochka,moskva,1994).

kniga(chehov,rasskazy,moskva,1993).

kniga(chehov,chaika,piter,2006).

kniga(tolstoy,voina_i_mir,piter,2001).

kniga(tolstoy,anna_karenina,piter,2008).

kniga(dostoevsky,prestuplenie_i_nakazanie,moskva,2001).

kniga(dostoevsky,bratja_karamazovy,piter,2011).

spisok:-kniga(X,Y,Z,W),write(X," ",Y," ",Z," ",W),nl,fail.

GOAL

write("Spisok knig:"),nl,

write("Avtor Nazvanie Izdatelstvo God"),nl,spisok.

б)

PREDICATES

nondeterm kniga(symbol,symbol,symbol,integer)

spisok1

spisok2

CLAUSES

kniga(pushkin,evgeny_onegin,moskva,2001).

kniga(pushkin,kapitanskaja_dochka,moskva,1994).

kniga(chehov,rasskazy,moskva,1993).

kniga(chehov,chaika,piter,2006).

kniga(tolstoy,voina_i_mir,piter,2001).

kniga(tolstoy,anna_karenina,piter,2008).

kniga(dostoevsky,prestuplenie_i_nakazanie,moskva,2001).

kniga(dostoevsky,bratja_karamazovy,piter,2011).

spisok1:-kniga(pushkin,Y,Z,W),write("pushkin"," ",Y," ",Z," ",W),nl,fail.

spisok2:-kniga(chehov,Y,Z,W),write("chehov"," ",Y," ",Z," ",W),nl,fail.

GOAL

write("Spisok knig pushkina i chehova:"),nl,

write("Avtor Nazvanie Izdatelstvo God"),nl,spisok1;spisok2.

в)

PREDICATES

nondeterm kniga(symbol,symbol,symbol,integer)

spisok

CLAUSES

kniga(pushkin,evgeny_onegin,moskva,2001).

kniga(pushkin,kapitanskaja_dochka,moskva,1994).

kniga(chehov,rasskazy,moskva,1993).

kniga(chehov,chaika,piter,2006).

kniga(tolstoy,voina_i_mir,piter,2001).

kniga(tolstoy,anna_karenina,piter,1999).

kniga(dostoevsky,prestuplenie_i_nakazanie,moskva,2001).

kniga(dostoevsky,bratja_karamazovy,piter,2011).

spisok:-kniga(X,Y,piter,W),W>=2000,write(X," ",Y," ","piter"," ",W),nl,fail.

GOAL

write("Spisok knig iz Pitera ne ranee 2000 goda:"),nl,

write("Avtor Nazvanie Izdatelstvo God"),nl,spisok.

  1. Результат работы программы

а)

б)

в)

Задание 3.

  1. Условие задачи.

Составить программу, реализующую авиасправочник. В справочнике содержится следующая информация о каждом рейсе: номер рейса, пункт назначения, время вылета, дни (ежедн., чет, нечет). Вывести:

а) всю информацию из справочника;

б) информацию о самолетах, вылетающих в заданный пункт по четным дням;

в) информацию о самолетах, вылетающих ежедневно не позже указанного времени.

  1. Листинг программы

а)

PREDICATES

nondeterm reis(integer,symbol,symbol,symbol)

spisok

CLAUSES

reis(153,paris,"12:40","ejedn.").

reis(145,london,"10:10","chet.").

reis(025,london,"20:30","nechet.").

reis(058,london,"02:30","nechet.").

reis(458,london,"05:50","chet.").

reis(666,paris,"07:20","chet.").

reis(777,paris,"09:00","ejedn.").

reis(012,paris,"13:50","ejedn.").

spisok:-reis(X,Y,Z,W),write(X," ",Y," ",Z," ",W),nl,fail.

GOAL

write("Informatsia o reisah"),nl,

write("Reis Punkt Naznachenija Vremja Dni"),nl,spisok.

б)

PREDICATES

nondeterm reis(integer,symbol,symbol,symbol)

CLAUSES

reis(153,paris,"12:40","ejedn.").

reis(145,london,"10:10","chet.").

reis(025,london,"20:30","nechet.").

reis(058,london,"02:30","nechet.").

reis(458,london,"05:50","chet.").

reis(666,paris,"07:20","chet.").

reis(777,paris,"09:00","ejedn.").

reis(012,paris,"13:50","ejedn.").

GOAL

write("Informatsia o reisah"),nl,

write("Vvedite Punkt Naznachenija: "), Readln(Y1), nl,

write("Reis Punkt Naznachenija Vremja Dni"),nl,reis(X,Y,Z,W),Y=Y1,W="chet.",

write(X," ",Y," ",Z," ",W),nl,fail.

в)

PREDICATES

nondeterm reis(integer,symbol,symbol,symbol)

CLAUSES

reis(153,paris,"12:40","ejedn.").

reis(145,london,"10:10","chet.").

reis(025,london,"20:30","nechet.").

reis(058,london,"02:30","nechet.").

reis(458,london,"05:50","chet.").

reis(666,paris,"07:20","chet.").

reis(777,paris,"09:00","ejedn.").

reis(012,paris,"13:50","ejedn.").

GOAL

write("Informatsia o reisah"),nl,

write("Vvedite Vremja vyleta: "), Readln(Z1), nl,

write("Reis Punkt Naznachenija Vremja Dni"),nl,reis(X,Y,Z,W),Z<Z1,W="ejedn.",

write(X," ",Y," ",Z," ",W),nl,fail.

  1. Результат работы программы

а)

б)

в)

Задание 4.

  1. Условие задачи.

Составить программу, реализующую географический справочник. В справочнике содержится следующая информация о каждой стране: название страны, название столицы, численность населения, географическое положение (Европа или Азия ). Вывести:

а) всю информацию из справочника;

б) информацию о странах, численность населения которых превышает заданное значение;

в) информацию о европейских странах, численность населения которых не превышает заданное значение.

  1. Листинг программы

а)

PREDICATES

nondeterm strana(symbol,symbol,integer,symbol)

spisok

CLAUSES

strana(russia,moskva,120000000,evropa).

strana(kitai,pekin,1300000000,azia).

strana(francia,paris,30000000,evropa).

strana(japan,tokio,50000000,azia).

strana(germania,berlin,70000000,evropa).

strana(india,deli,90000000,azia).

strana(italia,rim,75000000,evropa).

strana(mongolia,ulan_bator,40000000,azia).

spisok:-strana(X,Y,Z,W),write(X," ",Y," ",Z," ",W),nl,fail.

GOAL

write("Informatsia o stranah"),nl,

write("Strana Stolitsa Naselenie Geogr_pologhenie"),nl,spisok.

б)

PREDICATES

nondeterm strana(symbol,symbol,string,symbol)

CLAUSES

strana(russia,moskva,"200",evropa).

strana(kitai,pekin,"900",azia).

strana(francia,paris,"150",evropa).

strana(japan,tokio,"190",azia).

strana(germania,berlin,"105",evropa).

strana(india,deli,"700",azia).

strana(italia,rim,"130",evropa).

strana(mongolia,ulan_bator,"110",azia).

GOAL

write("Informatsia o stranah"),nl,

write("Vvedite chislennost naselenija: "), Readln(Z1), nl,

write("Strana Stolitsa Naselenie Geogr_pologhenie"),nl,strana(X,Y,Z,W),Z>Z1,

write(X," ",Y," ",Z," ",W),nl,fail.

в)

PREDICATES

nondeterm strana(symbol,symbol,string,symbol)

CLAUSES

strana(russia,moskva,"200",evropa).

strana(kitai,pekin,"900",azia).

strana(francia,paris,"150",evropa).

strana(japan,tokio,"190",azia).

strana(germania,berlin,"105",evropa).

strana(india,deli,"700",azia).

strana(italia,rim,"130",evropa).

strana(mongolia,ulan_bator,"110",azia).

GOAL

write("Informatsia o stranah"),nl,

write("Vvedite chislennost naselenija: "), Readln(Z1), nl,

write("Strana Stolitsa Naselenie Geogr_pologhenie"),nl,strana(X,Y,Z,W),Z<=Z1,W=evropa,

write(X," ",Y," ",Z," ",W),nl,fail.

  1. Результат работы программы

а)

б)

в)

Вывод

В процессе выполнения работы был изучен поиск с возвратом – предикат fail, применяемый при разработке приложений в программе Visual Prolog.