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. */


 

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

70827. Дослідження аналогової інтегральної мікросхеми 597 KB
  Експериментальне визначення параметрів не потребує знання схеми і може бути здійснено як для будь-якого чотириполюсника шляхом вимірювання струмів і напруг вхідного і вихідного сигналів.
70828. Счетчик импульсов 130 KB
  Цель: исследование работы счетчика импульсов. Приборы: модель счетчика импульсов СИ блок питания на 5В БП5 соединительные провода. Подсоединить провода питания 5В к выходу БП5 и к входу модели счетчика импульсов СИ. Однократным нажатием на кнопку Счет прибора СИ подаем импульс на вход счетчика.
70829. Децимация и интерполяция 104 KB
  Выполнение процедуры децимации (уменьшения частоты дискретизации в заданное целое число раз) приводит к уменьшению частоты дискретизации исходной последовательности. В процессе децимации исходная последовательность обрабатывается НЧ фильтром, после чего производится выборка с необходимой частотой.
70830. Функции реализуемые АЛУ 112 KB
  Изучить назначение и состав узла АЛУ на примере ИМС К155ИПЗ и К 561 ИПЗ. В состав различных серий микросхем лежащих в основе МП входят стандартные узлы арифметическо-логических устройств АЛУ например К 155 ИПЗ К 561 ИПЗ. Кроме того имеются вход Р0 и выход Р сигналов переноса...
70831. Изучение видов сигналов с помощью программной среды MatLab 167.5 KB
  Функция у = rectpuls(t) формирует прямоугольный импульс единичной амплитуды для заданной в векторе t последовательности отсчетов времени. Генерируется импульс с шириной 1, центрированный относительно t=0.
70834. Обработка результатов измерений. Оценка погрешностей 494 KB
  Принято различать приборные погрешности обусловленные точностью измерительного прибора и его настройки и погрешности случайные вызванные неконтролируемыми внешними воздействиями может быть даже воздействием самого прибора. Причиной появления погрешности может быть и несовершенство принятой модели.
70835. Дослідження тягових електромагнітів 886 KB
  Електромагніти є основою багатьох електротехнічних пристроїв. Вони дуже різноманітні за призначенням і конструктивним виконанням. Значна частина електромагнітів використовується для здійснення поступального або обертового переміщення, для створення утримуючої сили.