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


 

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

42609. Изучение работы жидкостного U-образного манометра и комплекта приборов для измерения давления пневматической ветви ГСП 67.5 KB
  В процессе выполнения лабораторной работы студенты закрепляют знания по разделу Измерение давления и Дистанционная передача сигнала измерительной информации теоретического курса Технические измерения и приборы. Студенты знакомятся с принципом действия устройством преобразователя измерительного разности давления пневматического 13ДД11 в комплекте с вторичным прибором РПВ4. Стенд предназначен для выполнения лабораторной работы по изучению работы измерительного преобразователя разности давления пневматического 13ДД11 в...
42610. Изучить содержание панели управления NC, записать назначение функциональных клавиш, записать команды изменения функций клавиш F1 – F10 47.5 KB
  Для входа в меню надо нажать клавишу [F9]. В верхней строке экрана появится строка меню, содержащая следующие пункты “Левая”, “Файл”, “Диск”, “Команды”, “Правая”. Пункты меню ”Левая” и “Правая” задают режимы вывода информации соответственно в левой и правой панелях NC. Пункт меню “Файл” дает возможность производить разные операции над файлами
42611. Текстовый редактор MS WORD 64 KB
  Цель работы настройка параметров текстового редактора MS WORD; создание документа и шаблона в текстовом редакторе MS WORD; основные приемы форматирования документа MS WORD имеющего сложную структуру. Создание документа включает выбор параметров документа: размера бумаги величины полей пространственной ориентации листа и т. Редактирование документа подразумевает исправление всевозможных ошибок в тексте внесение изменений в текст документа. Форматирование документа оформление документа с целью задания ему требуемой...
42613. Використанням складних нейромереж в системах розпізнавання образів 1.63 MB
  Зворотне розповсюдження (Backpropagation algorithm) - це найпопулярніший алгоритм для навчання за допомогою зміни ваги зв'язків. Помилка розраховується від вихідного шару до вхідного, тобто в напрямі, протилежному напряму проходження сигналу при нормальному функціонуванні мережі. Хоча алгоритм достатньо простий, його розрахунок може зайняти досить багато ресурсу, залежно від розміру помилки.
42614. Переменной x присвоить дробную часть от положительного числа 44 KB
  Переменной x присвоить дробную часть от положительного числа. Вычисление формулы bcd de fh и присваивание получившегося результата переменной D. Вывод результата или переменной D на экран. Объявление целочисленной переменной y.
42615. Подсчитать количество цифр целого десятичного числа 49 KB
  Инициализация переменной начальным значением x=6. Задаем условный оператор ifelse: если выполняется условие 2x2 то переменной y присваивается значение x2; если условие не выполняется то переменной y присваивается значение 4. Вывод результата или переменной x на экран.
42616. ЛОГИЧЕСКИЕ И АРИФМЕТИЧЕСКИЕ ОПЕРАЦИИ 84.5 KB
  Тогда можно утверждать что дождь начался в time1 = h1 60 m1 минут а закончился в time2 = h2 60 m2 минут. Разность между началом и концом дождя составляет timeRes = time2 time1 24 60 24 60 минут. Выделяем количество часов и минут из timeRes и выводим их на экран.h int h1 h2 m1 m2 time1 time2 timeRes hres mres; void minvoid { h1 = 23; m1 = 50; h2 = 13; m2 = 20; time1 = h1 60 m1; time2 = h2 60 m2; timeRes = time2 time1 24 60 24 60; hres = timeRes 60; mres =...
42617. Получить сумму тех элементов последовательности 49 KB
  Получить b1bn где bi это значение первого по порядку положительного элемента iой строки если таких элементов нет то принять bi =1 2. Присвоим переменной а1 значение равное остатку от деления iтого элемента массива на 5 а переменной а2 значение равное остатку от деления iтого элемента массива на 2. Если значение переменной а1 будет равно нулю т. iый элемент массива нацело поделился на 5 а значит он кратен 5 то прибавим к значению переменной sum1 значение iтого элемента массива.