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").

Вывод:

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


 

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

6868. Государственное регулирование инвестиций 108 KB
  Государственное регулирование инвестиций. Деятельность государственных органов. Формы и методы. 1 Создание благоприятных условий для развития инвестиционной деятельности: Совершенствование системы налогов. Установление специальных налого...
6869. Правовое регулирование деятельности инвестиционных фондов 39.5 KB
  Правовое регулирование деятельности инвестиционных фондов. Инвестиционные фонды - это: во-первых, финансовый механизм, при помощи которого частные лица передают денежные средства или иные активы в руки профессиональных менеджеров для управления...
6870. Виды паевых инвестиционных фондов 31 KB
  Виды паевых инвестиционных фондов: Открытые фонды. (в них инвестор имеет возможность купить или продать свой пай в любой рабочий день). Интервальные ПИФы (инвестор имеет возможность купить или продать свой пай только в определенны...
6871. Рынок ценных бумаг в РФ 32 KB
  Рынок ценных бумаг. Ценная бумага - документ, удостоверяющий с соблюдением установленной формы и обязательных реквизитов имущественные права, осуществление и передача которых возможны только при его предъявлении. П.1 ст. 142 ГК РФ. Признаки цен...
6872. Эмиссия центрального банка 50.5 KB
  Эмиссия ЦБ Вопросы. Этапы эмиссии ЦБ Проспект эмиссии ЦБ Федеральная служба по финансовым рынкам. 1 НПА: ФЗ от 22.04.1996 О рынке ЦБ. Признаки эмиссионных ЦБ: Закрепляет совокупность имущественных и неимущественных прав, п...
6873. Правовые основы инвестиционного процесса. Особенности правового регулирования иностранных инвестиций 35.5 KB
  Правовые основы инвестиционного процесса. Особенности правового регулирования иностранных инвестиций. Правовая основа: Закон об иностранных инвестициях. Сущность правоотношений в сфере иностранных инвестиций состоит в создании правовых усло...
6874. Дослідження символьних типів 107 KB
  Дослідження символьних типів Теоретичні відомості Змінні символьного типу забезпечують зберігання символів, які можуть бути відображені на відображаючих та друкуючих пристроях. Фактично, такі змінні містять коди символів. У мові Pascal використовуют...
6875. Дослідження залежності опору металів і напівпровідників від температури 320.5 KB
  Дослідження залежності опору металів і напівпровідників від температури Мета роботи: порівняння закономірностей температурної залежності електропровідності металів і напівпровідників визначення температурного коефіцієнта опору металів визначення ш...
6876. Створення геоприв’язаної карти 3.87 MB
  Створення геоприв'язаної карти Однією з базових задач в роботі із супутниковими знімками, є прив'язка їх до існуючої карти, чи створення нової карти на основі супутникових зображень. В даній роботі ми розглянемо процес створення геоп...