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


 

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

50122. НАГРУЗКИ ОТ МОСТОВЫХ И ПОДВЕСНЫХ КРАНОВ 153.5 KB
  Нормативные значения и коэффициенты надежности Нагрузки от мостовых и подвесных кранов определяют в зависимости от групп режимов их работы устанавливаемых ГОСТ 25546 82 от вида привода и от способа подвеса груза.0785 Нагрузки и воздействия . Нормативное значение горизонтальной нагрузки направленной вдоль кранового пути и вызываемой торможением моста электрического крана следует принимать равным 01 полного нормативного значения вертикальной нагрузки на тормозные колеса рассматриваемой стороны...
50124. Конструювання загальнорозвивальних вправ. Визначення вихiдних положень 52 KB
  Лазіння у змішаному висі та упорі лазіння у простому висі. Класифікація вправ у лазінні Вправи у лазінні розділяються на пять груп: лазіння у змішаному висі та упорі у простому висі та упорі перелізання лазіння із зупинками лазіння з партнером див. Способи лазіння по нижній стороні драбини: у висі одноїменним і різноіменним способом; у висі на зігнутих ногах поперек і уздовж; у висі на пятах; за допомогою рук і однієї ноги. Методика навчання лазінню у змішаному висі та упорі.
50126. Создание анимационного ролика в программе Adobe Flash 638.5 KB
  Анимация достигается различным путем в простейшем случае изменением характеристик объектов во времени в так называемых ключевых кадрах. Промежуточные кадры могут произвольно вставляться между ключевыми. Положение в каждом из промежуточных кадров рассчитывается как экстраполяция между ключевыми кадрами. Новым элементом является Временная шкала Timeline справа вверху она предназначена для покадрового монтажа фильма.
50127. Методи послідовного пошуку екстремуму у критеріальному моделюванні 630.34 KB
  Крім того, критеріальний метод має важливе методологічне значення в процесі дослідження. Він надає техніко-економічному аналізу оптимальних рішень узагальнювальний характер і дозволяє більш раціонально використовувати вихідну інформацію...
50128. Визначення горизонтальної й вертикальної складових індукції магнітного поля Землі за допомогою земного індуктора 176 KB
  Визначення горизонтальної й вертикальної складових індукції магнітного поля Землі за допомогою земного індуктора. Вертикальну площину в якій лежить вектор а отже й вісь магнітної стрілки називають площиною магнітного меридіану. Прилад під'єднаний до затискачів мілівеберметр або балістичний гальванометр можна проградуювати так щоб він безпосередньо показував зміну магнітного потоку який пронизує витки індуктора. Нехай вісь індуктора орієнтована горизонтально в площині магнітного меридіана площина витків теж горизонтальна.
50129. Исследование процессов накопления и релаксации заряда в диэлектрических материалах 1.32 MB
  Определение постоянной времени RCцепи. Даже если цепь не содержит конденсаторов всегда присутствует электрическая емкость изоляции и в ней возникают токи смещения обусловленные изменением электрического поля во времени. В цепях постоянного тока распределение электрических зарядов на проводниках и токов на участках цепи стационарно то есть неизменно во времени. Если на какомто участке цепи происходят изменения силы тока или напряжения то другие участки цепи могут почувствовать эти изменения только через некоторое время которое по...
50130. Определение коэффициента термического расширения (объемного) жидкости 116 KB
  Цель работы: 1 измерить изменение объема воды при нагреве ее от 0 С до 90 С; 2 определить показатель коэффициента термического расширения. Особенный интерес представляет поведение воды в диапазоне температур 0 10 С. В данной работе исследуется изменение объема воды в диапазоне температур от 0 С до 40 90 С максимальная температура ограничена длиной измерительной трубки. Для проведения измерений в интервале 0 20 С термостат в начале работы заполняется смесью льда и воды что обеспечивает начальную температуру 0 С.