19

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

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

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

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

Русский

2012-11-17

34.73 KB

42 чел.

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

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

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

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

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

ОТЧЁТ

по лабораторной работе №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. */


 

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

76409. Амплитудно-фазовая частотная характеристика (АФЧХ) 54.81 KB
  Для практических целей удобнее пользоваться десятичными логарифмами и строить отдельно логарифмическую амплитудную частотную характеристику (ЛАХ) и логарифмическую фазовую частотную характеристику (ЛФХ).
76410. Построение переходной функции по ВЧХ замкнутой системы 297.32 KB
  Характеристику построенную в натуральном масштабе по оси частот аппроксимируем стандартными характеристиками :тогда очевидно чтогде616В настоящее время чаще всего используют в качестве стандартных характеристик трапеции рис. 68 при этом интеграл 616 может быть вычислен в видеРис 68617где параметр трапеции характеризующий ее форму см. рис. Рассмотрим построение переходной функции САР если ее ВЧХ имеет вид показанный на рис.
76411. Определение величины перерегулирования по ВЧХ 17.81 KB
  Приближенное значение величины перерегулирования можно определить по виду графиков ВЧХ -если ВЧХ монотонно убывающая, то = О, -если ВЧХ не возрастающая, то максимальное значение перерегулирования если ВЧХ возрастающая, то максимальное значение перерегулирования ...
76412. Алгоритм построения логарифмической амплитудной характеристики последовательного соединения типовых звеньев 59.87 KB
  Построение асимптотической ЛАХ последовательного соединения типовых звеньев сводится к суммированию на графике отрезков прямых линий с наклонами кратными 20 дБ дек. Используем более эффективный способ построения ЛАХ последовательного соединения звеньев который не требует построения ЛАХ отдельно каждого звена и последующего суммирования этих ЛАХ. Очевидно что результирующая ЛАХ от такого перераспределения параметров должна остаться без изменений. Построим ЛАХ звеньевсомножителей из 4.
76413. Признаки переходного и установившегося режимов работы САР 49.49 KB
  Признаки переходного и установившегося режимов работы САР Можно ли изучая выходной сигнал САР определить работает она на данном отрезке времени в переходном или установившемся режиме Для этого нужно более точно сформулировать что такое переходный и что такое установившийся режимы с практической точки зрения. Красная кривая переходный процесс при идеальном ступенчатом воздействии. Нарастание воздействия со скоростью примерно 8 ед сек сопровождается заметным переходным процессом голубая линия при скорости 4 ед сек переходный процесс...
76415. Преобразование Лапласа и его свойства 89.59 KB
  Различают прямое и обратное преобразование Лапласа. Прямое преобразование Лапласа определяется уравнением. Обратное преобразование Лапласа определяют из решения.
76416. Частотные характеристики САУ 83.42 KB
  Если на вход подавать синусоидальные колебания 1 то на выходе после затухания переходных процессов этим заниматься не будем также возникают синусоидальные гармонические колебания с той же частотой но с другой амплитудой и сдвинутые по фазе относительно входных колебаний: где φ – сдвиг по фазе выходных колебаний относительно входных.угол – φ Зависимость модуля АФЧХ от частоты колебаний ω называется амплитудно-частотной характеристикой. Зависимость сдвига фаз входных и выходных колебаний φ от частоты ω называется фазочастотной...