87732

ПРОГРАММИРОВАНИЕ В СРЕДЕ VISUAL PROLOG

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

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

Написать программу, которая составляет меню в виде первого, второго и третьего блюда. При этом задать наименования первых, вторых и третьих блюд и их стоимости. В качестве входных данных использовать наличную сумму денег.

Русский

2015-04-22

66.4 KB

0 чел.

Отчёт по лабораторной работе №1

«ПРОГРАММИРОВАНИЕ В СРЕДЕ VISUAL PROLOG»

1.Цель работы:

  1.  ОСНОВЫ СОЗДАНИЯ И ВЫПОЛНЕНИЯ ПРОГРАММ В VISUAL PROLOG
  2.  РАЗРАБОТКА ЛОГИЧЕСКИХ ПРОГРАММ

2.Задание

Написать программу, которая составляет меню в виде первого, второго и третьего блюда. При этом задать наименования первых, вторых и третьих блюд и их стоимости. В качестве входных данных использовать наличную сумму денег.

3.Ход работы

Для решения этой задачи нужно составить  логическое уравнение.

Стоимость трёх блюд не должна быть больше введённой суммы.

Обозначим стоимости блюд и суммы как S1,S2,S3 и S.

Выражение для условий задачи: Если S1+S2+S3<=S то вывести меню.

Введем предикаты 

first(string,integer),second(string,integer),  third(string,integer),

которые устанавливают значение переменных P и S1,V и S2,T и S3.

Введем значения переменных для предикатов.

Для first(P,S1) - first(160, "Borsch"), first(150, "Harcho").

Для second(V,S2)- second(200, "Kotleta"), second(120, "Kartoshka").

Для third(T,S3)- third(100,"Cofee"), third(50,"Tea"), third(30,"Kompot").

Составим предикат:

rest(S,P,V,T):- first(S1,P),

second(S2,V),

third(S3,T),

S1+S2+S3<=S,

write("Summ=",S,"\nFor this summ you can get:","\nFirst=",P,"\nSecond=",V,"\nThird=",T) readchar(_).

Работа программы:

В секции predicates объявляются предикаты и их аргументы

В секции GOAL объявляются  предикаты, представляющие всю программу как таковую. Они выполняются в порядке очерёдности. Система ищет определение этих предикатов в разделе CLAUSES.

В секции CLAUSES имеется определение предиката rest(S,P,V,T)

Первым выполняется предикат first(S1, P).

В определении переменных S1,S2,S3 имеется по три  альтернативы. Процесс выбора одной из альтернатив называется ветвлением.  Всегда выбирается первая по порядку из числа неисследованных альтернатив. В момент выбора первой альтернативы имеется два предиката: первый из них – это предикат first (S1, P), который система пытается доказать; и второй  first (160, "Borsch"), который система берет из определения. Система сопоставляет эти два предиката и пытается согласовать их аргументы. Согласование аргументов называется унификацией. При унификации аргументы предикатов сопоставляются в порядке их расположения. У предиката first два аргумента. У доказываемого – это переменные P,S1, у взятого из определения  это 160, "Borsch". Таким образом, выполняется привязка аргумента P к аргументу "Borsch", а S1 к 160. Процесс переходит на предикат second, для которого действия выполняются по аналогии и далее. Проверяется условие S1+S2+S3<=S.

Если проверка условия заканчивается неудачей, в действие вступает механизм ветвление-возврат. Система возвращается в точку последнего ветвления, т.е. к предикату third. Для предиката third(S3, T) подставляются другие значения. Если проверка условия заканчивается неудачей и значения для предиката third(S3, T) закончились, система возвращается в точку предпоследнего ветвления, т.е. к предикату second(S2, V). Если проверка условия заканчивается неудачей и значения для предиката second(S2, V) закончились, система возвращается к предикату first(S1, P) и подставляет другие значения.

Листинг:

predicates

nondeterm        rest(integer,string,string,string)

nondeterm        first(integer,string)

nondeterm        second(integer,string)

nondeterm      third(integer,string)

           

                             goal

                       write("Input summa:"), readint(S), rest(S,P,V,T).

            clauses

                  

               rest(S,P,V,T):- first(S1,P),

                               second(S2,V),

                               third(S3,T),

                               

                               

                               S>=S1+S2+S3,

                               

                      write("Summ=",S,"\nFor this summ you can get:","\nFirst=",P,"\nSecond=",V,"\nThird=",T),  readchar(_).

first(160, "Borsch").

first(150, "Harcho").

second(200, "Kotleta").

second(120, "Kartoshka").

third(100,"Cofee").

third(50,"Tea").

third(30,"Kompot").

Вывод:

Мы рассмотрели простейшую структуру программы, ее составные части и описали процесс выполнения логической программы. При этом мы выяснили, в чем состоят логические механизмы ветвления, возврата и унификации.


 

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

62629. Країни Європи 18.52 KB
  Listen to me and follow. Listen to me and repeat. Let name the sound is this rhyme? Who can translate? Who can recite?
62630. Автоматическое регулирование угловой скорости коленчатых валов дизелей 1.19 MB
  Регулирующее воздействие: Чтобы поддерживать число оборотов дизеля постоянным нужно с возрастанием нагрузки увеличить подачу топлива а с уменьшением нагрузки соответственно уменьшить подачу топлива. Это выполняет Регулятор числа оборотов.
62631. Банки и банковская система. Банковский кредит 38.53 KB
  Одним из важнейших элементов рыночной экономики является финансовый рынок, т.е. рынок. где в роли товаров выступают деньги, обслуживающие экономику. Финансовый рынок состоит из двух частей: рынок ценных бумаг и рынок банковских ссуд.
62632. Мочевыделительная система. Почки - органы выделения 14.71 KB
  Задачи урока: Образовательные: Обобщить знания об органах выделения организма Познакомить с общим планом строения и функций органов мочевыделительной системы Изучить особенности строение почки в связи с выполняемыми функциями.
62633. Урок биологии. Типология уроков 30.54 KB
  К числу дидактических требований как и методических относятся: четкое определение образовательных задач каждого конкретного урока и его места в общей системе уроков; определение оптимального содержания урока...
62634. Что такое погода? 33.52 KB
  Цель: дать общее представление о погоде какая она бывает. Прогнозируемые результаты: Второклассники узнают из чего складывается погода; научаться обозначать явления природы условными знаками; смогут задуматься над тем для чего нужны прогнозы погоды.