ИИС laba5
.docxФедеральное агентство по образованию
Государственное образовательное учреждение
высшего профессионально образования
Уфимский государственный авиационный технический университет
Кафедра автоматизированных систем управления
Отчет по лабораторной работе №5
по теме: «УПРАВЛЕНИЕ ПОИСКОМ С ВОЗВРАТОМ: ПРЕДИКАТ FAIL.»
по дисциплине «Интеллектуальные информационные системы»
Выполнили: Сынгизов Г.З.,
Исламгареев И.И.
Группа: ПИ-404
Проверила: Ишмухаметова Л.К.
Уфа 2015
Цель работы
Целью работы является изучение поиска с возвратом – предиката fail, применяемого при разработке приложений в программе Visual Prolog.
Ход работы
Задание 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.
-
Результат работы программы
а)
б)
Задание 2.
-
Условие задачи.
База данных содержит факты вида: книга(автор, название, издательство, год_издания), украина(город).
а) вывести весь список книг;
б) вывести список книг авторов Пушкина и Чехова;
в) вывести список книг, изданных в издательстве «Питер» не ранее 2000 года.
-
Листинг программы
а)
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.
-
Результат работы программы
а)
б)
в)
Задание 3.
-
Условие задачи.
Составить программу, реализующую авиасправочник. В справочнике содержится следующая информация о каждом рейсе: номер рейса, пункт назначения, время вылета, дни (ежедн., чет, нечет). Вывести:
а) всю информацию из справочника;
б) информацию о самолетах, вылетающих в заданный пункт по четным дням;
в) информацию о самолетах, вылетающих ежедневно не позже указанного времени.
-
Листинг программы
а)
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.
-
Результат работы программы
а)
б)
в)
Задание 4.
-
Условие задачи.
Составить программу, реализующую географический справочник. В справочнике содержится следующая информация о каждой стране: название страны, название столицы, численность населения, географическое положение (Европа или Азия ). Вывести:
а) всю информацию из справочника;
б) информацию о странах, численность населения которых превышает заданное значение;
в) информацию о европейских странах, численность населения которых не превышает заданное значение.
-
Листинг программы
а)
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.
-
Результат работы программы
а)
б)
в)
Вывод
В процессе выполнения работы был изучен поиск с возвратом – предикат fail, применяемый при разработке приложений в программе Visual Prolog.