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

Вывод:

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


 

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

739. Влияние налогов на развитие малого предпринимательства 129.5 KB
  Сущность малого бизнеса и его роль в экономике страны. Упрощенная система налогообложения. Система налогообложения в виде единого налога на вмененный доход. Роль налоговой системы на развитие малого предпринимательства в России.
740. Процесс создание и отладки программы на языке ассемблера 88 KB
  Знакомство с методами создания и отладки программ, написанных на языке ассемблера. Создание программы, на языке ассемблера выполняющей арифметическую операцию и ввод/вывод с консоли. Трансляция, компоновка, трассировка программы.
741. Исследование параметров и характеристик двигателя постоянного тока с независимым возбуждением 337.5 KB
  Построение статических характеристик двигателя постоянного тока. Исследование механических характеристик двигателя постоянного тока с независимым возбуждением. Методика расчета параметров модели двигателя. Результаты исследования искусственной механической характеристики при пониженном напряжении на обмотке якоря. Частотная характеристика двигателя постоянного тока с независимым возбуждением.
742. Финансово-хозяйственная деятельность ООО Химпромстрой 306 KB
  Теоритические основы разработки программ развития персонала. Анализ использования персонала в ООО Химпромстрой. Эффективность программы развития персонала. Анализ состава и структуры персонала ООО Химпромстрой.
743. Русская философия 11-18 веков 150 KB
  Становление русской философии. Христианские и языческие элементы в духовной культуре Руси. Становление русской средневековой философии в 14-17 веках. Появление ранних ересей (нестяжатели, иосифляне и др.). Развитие исихазма на Руси, его основные теоретические положения и значение для русской культуры.
744. Стратегические цели как специфический объект управления 52.5 KB
  Стратегические цели определяются спецификой объекта управления. Увеличение доли продукции на рынке в регионе. Достижение передовых позиций в отрасли по такому-то научно-техническому направлению.
745. Правила безопасности при работах на технологических участках телефонных и телеграфных станций 126 KB
  Оборудование телефонных и телеграфных станций должно быть заземлено в соответствии с требованиями настоящих правил. Правила безопасности при работах в помещении ввода кабелей. Коммутационная система SI-2000. Групповой переключатель GSM. Alarm monitoring – Мониторинг аварийных сигналов.
746. Построение статистической группировки 137.5 KB
  Аналитическая группировка выявляет закономерность между величиной среднегодовой стоимости ОПФ и величиной объема продукции. Эта зависимость прямая и показывает эффективное управление объемом продукции, в зависимости от величины среднегодовой стоимости ОПФ.
747. Разработка схемы расхождения и обгона судов на заданном участке внутреннего водного пути 131 KB
  Навигационное описание участка водного пути. Требования правил плавания к движению и маневрированию судов. Разработка схемы расхождения и обгона судов на участке водного пути река Березина(117-98 километр).