87732

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

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

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

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

Русский

2015-04-22

66.4 KB

1 чел.

Отчёт по лабораторной работе №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").

Вывод:

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


 

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

59813. Світле свято Великодня 92 KB
  В мене вдача щира й сміла І душа моя здорова Українська в мене мова. А моя бабуся вчила мене що шкаралупи від писанок зберігають а потім вивішують на городі на палицях щоб у землі не заводилися червяки.
59815. Вербна неділя. Чистий четвер 76 KB
  Отож давайте сьогодні разом і продовжимо вивчати народні традиції повязані з найулюбленішим весняним святом усіх християн Великоднем або Святом Гїасхи днем Воскресіння Ісуса Христа Учень. Великдень всіх нас на гостини просить Малює сонце полотно небес...
59816. Великі українці – гуманісти 120.5 KB
  Григорій Сковорода народився в с. Чорнухи на Полтавщині в козацькій родині. Грунтовну та всебічну освіту здобув у Києво-Могилянській академії. У 1769 році Григорій Сковорода остаточно залишив офіційну педагогічну діяльність і став мандрівним філософом.
59817. Без верби та калини немає України 474.5 KB
  На дошці приколені малюнки фотографії та статті про вербу і калину. Дівчина: Ми розповімо вам про калину яку найбільше шанували на Україні. Дівчина: А я розповім сумну історію про калину що часто порівнюється з коханням.
59819. ВЕСЕЛИЙ ВЕРНІСАЖ 224 KB
  Ви готові зустріти їх Тоді оплески бо я запрошую учасників Веселого вернісажу€ на сцену Команда ЕМЕМДЕМС вона представляє 8А клас. Поки виходить команда на сцену звучить Весела пісня€. Команда ВЕСЕЛІ ТА ДОТЕПНІ€. Поки виходить команда на сцену звучить Весела пісня.
59820. Казковий вернісаж 66 KB
  Мета: - підвищувати мотивацію учнів молодшої та середньої школи до вивчення іноземної мови; - розвивати навички діалогічного та монологічного мовлення серед учнів середньої школи; - сприяти розвитку міжкультурної компетенції;...