Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Лабораторная работа № 5. Программирование на языке ПРОЛОГ





Программирование на языке ПРОЛОГ

 

1. Изучите главное меню оболочки Turbo-Prolog. (см. пояснения по выполнению лабораторной работы).

2. Научитесь открывать программы-примеры и запускать их.

3. Наберите первую программу на Прологе под названием «Привет, мир!» (см. пояснения к работе).

4. Изучите основные блоки программы на Прологе. Определите, какие программные блоки обязательны, а какие – нет.

5. Наберите программу «непарные страны Европы», сравните получаемый ответ с ответом других студентов. Он должен быть одинаковым для всех.

6. Возьмите задание 2 контрольной работы для варианта 10 и попробуйте решить его.

ПОДСКАЗКА: в папке «Примеры» (EXAMPLES) можно отыскать похожую задачу и слегка видоизменить её.

7. Найдите в пояснениях к работе пример задачи на поиск факториала. Наберите её и решите подобную задачу для вычисления 10!

8. Обратитесь к преподавателю для получения дополнительных упражнений по Прологу, зависящих от вашего направления обучения (конструирование или технология).

 

 

Пояснения по выполнению лабораторной работы № 5

Главное меню Турбо-Пролога включает в себя 7 опций (команд) в верхней части экрана. Первая буква названия каждой из команд выделена при помощи увеличенной яркости. Выделение означает, что для задания команды достаточно нажать лишь первую букву ее названия.

Команды относятся к 7 функциям, описываемым в меню Турбо-Пролога:

1. Запуск программы на счет (Run)

2. Трансляция программы (Compile)

3. Редактирование текста программы (Edit)

4. Задание опций компилятора (Options)

5. Работа с файлами (Files)

6. Настройка системы в соответствии с индивидуальными потребностями (Setup)

7. Выход из системы (Quit)

 

Существует два способа задания команд. Первый требует нажатия клавиши, соответствующей первой букве названия выбранной команды. Так, для выбора команды Edit необходимо нажать Е. Для окончания работы с командой используется клавиша Esc. Второй способ состоит в перемещении по меню при помощи стрелок; переход к работе с выбранной командой осуществляется нажатием Enter.

Главный экран содержит четыре окна (рис. 22.). В левом верхнем углу располагается окно редактора Турбо-Пролога (Editor), в правом верхнем углу – окно диалога (Dialog), в левом нижнем – окно сообщений (Message), в правом нижнем – окно трассировки (Trace).

 

Run Compile Edit Options Files Setup Quit

 

Editor Line1 Col1 Indent Insert WELCOM Predicates Hello Goal Hello. Clauses Hello:- Write(“Welcome to Turbo Prolog!”), nl.       Load Save  
File name: WELCOME.PRO
Rename File Name Module list Zap file in editor Erase Operating system  

 

 

Message Compiling WELCOME.PRO Hello Compilation successful Trace

Рис. 22. Вид главного экрана.

 

После ввода программы экран компьютера должен выглядеть так, как это показано на рисунке. Для того чтобы запустить ее, сначала требуется нажать клавишу Esc. Курсор редактора при этом исчезнет, а курсор главного меню укажет на команду Edit. Далее следует задать команду Run. Результат работы программы - в окне диалога Dialog.

Базовое понятие языка ПРОЛОГ – это предикат, или отношение между объектами (доменами). Имена объектов записываются с маленькой буквы, если это константы, и с большой буквы, если это переменные.

Отдельно выделенный предикат называется фактом, например,

likes(john,camera).

likes(tom,computer).

likes(kathy,X).

Первые два предиката likes описывают отношение объектов john и tom к объектам camera и computer, а третий предикат likes описывают отношение объекта kathy к неизвестному объекту.

Программа, написанная на Турбо-Прологе, состоит из 5 разделов (есть необязательные!), представленных в таблице 5.

 

Таблица 5.

 

  /*------------------------------------------------*/ /* */ /* Комментарии */ /*----------------------------------------------- */     domains ‹описание доменов› database ‹описание предикатов динамической базы данных› predicates ‹описание предикатов› goal ‹целевое утверждение› clauses ‹утверждения›  

 

Раздел domains содержит определения доменов, которые описывают различные классы объектов. Имеется 6 встроенных типов доменов, представленных в таблице 6.

Для рассмотренных ранее фактов в разделах domains и predicates должны появиться такие описания:

domains

person, things = symbol

predicates

likes(person, things)

 

Таблица 6.

 

Тип данных Ключевое слово Диапазон значений Примеры использования
Символы Char Все возможные символы “a”,”b”,”#”,”B”, “13”,”%”
Целые числа Integer От –32768 до 32767 -63, 84, 2349,
Действительные числа Real От +1Е –307 до +1Е308 -42769, 8324, 360, 093, 1.25E23, 5.15E-
Строки String Последовательность символов (не более 250) “Today”,”123”, “just_a_reminder”
Символические имена Symbol 1).Последова-тельность букв, цифр и подчер-ков; первый символ - строч- ная буква 2).Последова- тельность символов, заключенная в кавычки pay _check, school_day, flower   “Stars and Stripes”, ”Singing in the rain”
Файл File Допустимое в DOS имя файла Mail.txt, BIRDS.DBA

 

Можно не описывать в разделе domains домены person, things. Тогда в разделе predicates необходимо сделать следующее описание:

predicates

likes(symbol, symbol)

 

Раздел database содержит утверждения динамической базы данных (может быть опущен).

Раздел predicates служит для описания используемых предикатов.

Раздел goal содержит формулировку задачи, записанную как внутренняя цель (чаще задачи формулируются как внешние цели).

В разделе clauses содержаться данные и знания, описывающие предметную область (факты и правила).

Кроме фактов для описания знаний используются правила. Согласно синтаксису Пролога, правила состоят из головы (предикат Вn) и тела (предикаты А1 Ù А2 Ù Ù Аm). Тело записывается в виде последовательности предикатов, отделенных друг от друга запятыми, а символ ;заменяется на:-, т.е. правило имеет вид Вn:- А1, А2, …Аm.

С точки зрения математической логики предикат Вn истинен, если при каком-либо сочетании значений доменов истинны все предикаты А1 Ù А2 Ù Ù Аm.

Все знания на языке Пролог состоят из набора фактов и правил. Каждая задача формулируется, как цель (goal), которую необходимо достигнуть.

 

Пример.

Известно, что определенные страны Европы имеют общие между собой границы, в то время как другие их не имеют. Предикатом для предоставления этого отношения служит

border(country, country)

 

Тот факт, что Германия в Франция имеют общую границу, можно представить в виде утверждения

border(“France”, “Germany”)

 

Франция с Германией имеют общую границу, так же как и Франция с Испанией, и Франция с Италией.

Шесть утверждений задают все возможные пары четырех выбранных европейских стран:

euro_pair(“France”, “Germany”)

euro_pair (“France”, “Spain”)

euro_pair(“France”, “Italy”)

euro_pair(“Germany”, “Spain”)

euro_pair(“Germany”, “Italy”)

euro_pair(“Spain”, “Italy”)

 

Утверждения для стран с общей границей выглядят так:

border(“France”, “Germany”)

border(“France”, “Spain”)

border(“France”, “Italy”)

 

Предположим теперь, что вы хотите определить, какие из стран не имеют общей границы. Отрицание предиката border задается при помощи предиката not:

not(border (country1, country2))

 

Этот предикат, используемый как цель, выдает все пары не граничащих друг с другом стран.

 

Итак, полный текст программы:

 

/*Программа “Пары стран Европы” */

 

domains

 

country = symbol

 

predicates

 

euro_pair (country, country)

border(country, country)

find_non_border_pair

 

goal

 

find_non_border_pair.

 

clauses

 

/* факты*/

 

euro_pair(“France”, “Germany”).

euro_pair(“France”, “Spain”).

euro_pair(“France”, “Italy”).

euro_pair(“Germany”, “Spain”).

euro_pair(“Germany”, “Italy”).

euro_pair(“Spain”, “Italy”).

 

border(“France”, “Germany”).

border(“France”, “Spain”).

border(“France”, “Italy”).

 

/*правила*/

 

find_non_border_pair:-

euro_pair(X,Y),

not(border (X,Y)),

write(X,” -“, Y).







Дата добавления: 2015-09-19; просмотров: 595. Нарушение авторских прав; Мы поможем в написании вашей работы!




Композиция из абстрактных геометрических фигур Данная композиция состоит из линий, штриховки, абстрактных геометрических форм...


Важнейшие способы обработки и анализа рядов динамики Не во всех случаях эмпирические данные рядов динамики позволяют определить тенденцию изменения явления во времени...


ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...


Теория усилителей. Схема Основная масса современных аналоговых и аналого-цифровых электронных устройств выполняется на специализированных микросхемах...

Разработка товарной и ценовой стратегии фирмы на российском рынке хлебопродуктов В начале 1994 г. английская фирма МОНО совместно с бельгийской ПЮРАТОС приняла решение о начале совместного проекта на российском рынке. Эти фирмы ведут деятельность в сопредельных сферах производства хлебопродуктов. МОНО – крупнейший в Великобритании...

ОПРЕДЕЛЕНИЕ ЦЕНТРА ТЯЖЕСТИ ПЛОСКОЙ ФИГУРЫ Сила, с которой тело притягивается к Земле, называется силой тяжести...

СПИД: морально-этические проблемы Среди тысяч заболеваний совершенно особое, даже исключительное, место занимает ВИЧ-инфекция...

Ганглиоблокаторы. Классификация. Механизм действия. Фармакодинамика. Применение.Побочные эфффекты Никотинчувствительные холинорецепторы (н-холинорецепторы) в основном локализованы на постсинаптических мембранах в синапсах скелетной мускулатуры...

Шов первичный, первично отсроченный, вторичный (показания) В зависимости от времени и условий наложения выделяют швы: 1) первичные...

Предпосылки, условия и движущие силы психического развития Предпосылки –это факторы. Факторы психического развития –это ведущие детерминанты развития чел. К ним относят: среду...

Studopedia.info - Студопедия - 2014-2024 год . (0.011 сек.) русская версия | украинская версия