19

Использование отсечения в пролог-программах. Определение возрастного статуса человека

Лабораторная работа

Информатика, кибернетика и программирование

Определение возрастного статуса человека по известному году рождения в соответствии с таблицей. Разработка двух вариантов программы: без отсечения и с использованием отсечения.

Русский

2012-11-17

34.73 KB

44 чел.

МИНИСТЕРСТВО ОБРАЗОВАНИЯ РЕСПУБЛИКИ БЕЛАРУСЬ

БЕЛОРУССКИЙ НАЦИОНАЛЬНЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

ФАКУЛЬТЕТ ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ И РОБОТОТЕХНИКИ

Кафедра «Программное обеспечение вычислительной техники и

автоматизированных систем»

ОТЧЁТ

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

к дисциплине

«Функциональное и логическое программирование»

Тема: «ИСПОЛЬЗОВАНИЕ ОТСЕЧЕНИЯ В ПРОЛОГ-ПРОГРАММАХ» 

Выполнили:  ст.  гр. 107310 Абросимова С.А., Синькевич Я.А.

Приняла: Ковалькова И.А.

 

2011-2012 учебный год

ЛАБОРАТОРНАЯ РАБОТА

ИСПОЛЬЗОВАНИЕ ОТСЕЧЕНИЯ В ПРОЛОГ-ПРОГРАММАХ

Цель лабораторной работы: приобретение  практических навыков использования отсечения в программах на Турбо-Прологе.

Постановка задачи:

Определить возрастной статус человека по известному году рождения в соответствии с таблицей. Разработать два варианта программы: без отсечения и с использованием отсечения.

Возраст, лет

Статус

< 2

Младенец

2 – 12

Ребенок

12 – 16

Подросток

16 – 25

Юноша

25 – 70

Мужчина

70 – 100

Старик

> 100

долгожитель

Результаты лабораторной работы:

Рисунок 1 – Результат работы программы

Контрольные вопросы:

  1.  Для чего используется отсечение?

Ответ: Они существуют для ограничения или исключения перебора в программе, для программировании взаимоисключающих утверждений, для необходимости неудачного завершения доказательства цели.

  1.  Как обозначается отсечение в программе?

Ответ: !.

  1.  Механизм работы отсечения.

Ответ: Отсечение реализуется следующим образом: после согласования целевого утверждения, стоящего перед отсечением, все предложения с тем же предикатом, расположенные после отсечения, не рассматриваются.

  1.  «Красное» и «зеленое» отсечения.

Ответ: Зелеными называются те из них, при отбрасывании которых программа продолжает выдавать те же решения, что и при наличии отсечения. Если же при устранении отсечений программа начинает выдавать неправильные решения, то такие отсечения называются красными.

  1.  Какое отсечение, «красное» или «зеленое» , в процедуре max2 ?

Ответ: «красное».

  1.  Повлияет ли на результат удаление отсечения в процедуре max2 ?

Ответ: Да, повлияет.

  1.  Что происходит после выполнения комбинации !, fail?

Ответ: когда встретится предикат fail, который всегда вызывает состояние неудачи, то стоящий перед ним предикат отсечения остановит работу механизма возврата и в результате ответом на запрос будет No Solution (Нет решения).

  1.  Могут ли располагаться подцели после предиката fail ?

Ответ: нет.

  1.  Декларативный и процедурный смысл Пролог-программы.

Ответ: так называемый декларативный стиль, в котором программа представляет собой совокупность утверждений, описывающих фрагмент предметной области или сложившуюся ситуацию. Программируя в декларативном стиле, программист должен описать, что нужно решать. Традиционно под программой понимают последовательность операторов (команд, выполняемых компьютером). Этот стиль программирования принято называть процедурным.

  1.  Важен ли порядок следования предложений в процедурах max1 и max2 ?

Ответ: нет, не важен.

Выводы:

Приобрели практические навыки, научились использовать отсечения на языке пролог.


ПРИЛОЖЕНИЕ

Листинг исходного кода программы:

predicates

nondeterm voz( integer, integer, string).

nondeterm result.

clauses

voz(X,Y,"младенец") :- X=2012-Y, X<2, !.

voz(X,Y,"ребёнок") :-X=2012-Y, X<12, !.

voz(X,Y,"подросток") :- X=2012-Y,X<16, !.

voz(X,Y,"юноша") :- X=2012-Y,X<25, !.

voz(X,Y,"мужчина") :-X=2012-Y, X<70, !.

voz(X,Y,"старик") :- X=2012-Y,X<100, !.

voz(X,Y,"долгожитель") :-X=2012-Y, X>100, !.  

result :- write("Введите год рождения: "), nl, readint(Y), voz(_,Y,Z), write("Данный возраст соответствует группе  ", Z), nl.

goal

result.

/*

predicates

nondeterm voz( integer,integer, string).

nondeterm result.

clauses

voz(X,Y,"младенец") :- X=2012-Y, X<2.

voz(X,Y,"ребёнок") :-X=2012-Y, X<12, X>2.

voz(X,Y,"подросток") :- X=2012-Y,X<16, X>12.

voz(X,Y,"юноша") :- X=2012-Y,X<25, X>16.

voz(X,Y,"мужчина") :-X=2012-Y, X<70, X>25.

voz(X,Y,"старик") :- X=2012-Y,X<100, X>70.

voz(X,Y,"долгожитель") :-X=2012-Y, X>100.  

result :- write("Введите год рождения: "), nl, readint(X), voz(X,Y), write("Данный возраст соответствует группе  ", Y), nl.

goal

result. */


 

А также другие работы, которые могут Вас заинтересовать

76775. Тазобедренный сустав 180.98 KB
  Суставная капсула состоящая из фиброзной и синовиальной мембран прикрепляется по краю вертлужной губы а на бедренной кости по шейке: спереди по межвертельной линии сзади внутрь от межвертельного гребня. Внутри сустава располагается связка головки бедренной кости которая в период его формирования удерживает головку во впадине. Они кровоснабжаются следующими артериями: подвздошнопоясничной верхней ягодичной запирательной наружной половой глубокой и латеральной окружающими подвздошную кость нисходящей коленной мышечными ветвями...
76776. Коленный сустав 180.6 KB
  К внутренним связкам относятся крестообразные: передняя и задняя заполняющие межмыщелковую яму бедренной кости и межмыщелковое поле большеберцовой кости. Коленный сустав типичный мыщелковый сложный и комплексный в нем выполняются следующие движения: вокруг фронтальной оси: сгибание и разгибание с размахом в 140150 о; сгибание тормозят крестовидные связки и сухожилие четырехглавой мышцы; мыщелки бедренной кости при этом скользят по менискам; вокруг продольной вертикальной оси объем активного вращения в среднем 15 о пассивного 3035...
76777. Голеностопный сустав 179.01 KB
  По бокам капсула толстая и прочная спереди и сзади тонкая рыхлая складчатая; усилена боковыми связками: медиальной дельтовидной толстой прочной веером расходящейся от медиальной лодыжки к таранной ладьевидной и пяточной костям; в связке выделяют части: большеберцоволадьевидную большеберцовопяточную переднюю и заднюю большеберцовотаранные; латеральной в составе передней таранномалоберцовой задней таранномалоберцовой пяточномалоберцовой связок. Они кровоснабжаются мышечными ветвями задней большеберцовой и малоберцовой...
76778. Кости голени и стопы, их соединения 186.1 KB
  На диафизе большеберцовой кости располагаются: передний край острый кверху переходит в бугристость латеральный край обращенный к малоберцовой кости и медиальный край; поверхности: медиальная латеральная и задняя с линией камбаловидной мышцы. Ядра окостенения в большеберцовой кости появляются в проксимальном эпифизе в конце плодного периода в дистальном на 2м году жизни в диафизе в начале плодного периода. Кости стопы подразделяются на кости предплюсны: 7 коротких губчатых костей и кости плюсны в составе 5 коротких трубчатых...
76779. Общая анатомия мышц 183.23 KB
  Скелетные мышцы связаны с костями и действуют вместе с ними и суставами в единой биомеханической системе рычагов обеспечивая статику и динамику тела. Гладкие мышцы располагаются в коже сосудах стенках полых внутренних органов выделительных протоках желез. Сила мышцы на 1 см 2 ее поперечного сечения называется абсолютной и составляет от 50 до 100 Н что зависит от длины мышечных волокон и площади поперечного сечения.
76780. Вспомогательные аппараты мышц 185.15 KB
  Лесгафта на взаимоотношение между работой и строением мышц и костей; мышцы синергисты и антагонисты. Фасция соединительнотканная оболочка в виде футляра вокруг мышцы создающая опору для мышечного брюшка и отграничивающая мускул чем устраняется трение между мышцами. Фасции подразделяются на: поверхностные которые служат мягкой опорой для подкожной клетчатки и отделяют ее от глубже расположенных фасций и мышц; собственные которые окружают отдельные мышцы и мышечные группы и часто называются по области где располагаются: плечевая...
76781. Мышцы и фасции груди 183.63 KB
  Кроме того на груди поверхностные мышцы распределяют на передние боковые и задние соответственно делению грудной стенки на переднюю боковую и заднюю области. Внутренние межреберные мышцы 11 имеют направление волокон перпендикулярное наружным и заполняют промежуток от грудины до угла ребра где переходят в заднюю мембрану. Подреберные мышцы начинаются от углов XXII ребер и перекидываясь через одно два ребра прикрепляются к внутренней поверхности вышележащих ребер.
76782. Мышцы живота 183.58 KB
  Мышцы передней брюшной стенки прямые: правая и левая начинаются узкими длинными пучками от лобковых гребней и лобкового симфиза прикрепляются к наружной поверхности хрящей YYII ребер широкими лентовидными полосами; по своему ходу мышечные пучки прерываются 34 сухожильными поперечными перемычками которые срастаются с влагалищем прямых мышц; влагалище прямой мышцы образуется из апоневрозов косых и поперечных мышц живота так что передняя и задняя стенки его имеют неодинаковое строение: над межостистой линией обе стенки влагалища...
76783. Паховый канал 180.59 KB
  Его четыре стенки образуются: верхняя нижними краями внутренней косой и поперечной мышц живота; нижняя паховой связкой важным клиникоанатомическим ориентиром особенно при отличии паховой грыжи от бедренной и наоборот; передняя апоневрозом наружной косой мышцы; задняя поперечной фасцией рыхло прилежащей к париетальной брюшине. Медиальнонижняя оконечность кольца образована загнутой связкой из латеральной ножки апоневроза и паховой связки; латеральноверхняя округлость состоит из межножковых фиброзных волокон собственной...