русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Лабораторный практикум


Дата добавления: 2015-09-15; просмотров: 1208; Нарушение авторских прав


Все лабораторные работы выполняются и предоставляются на проверку на компьютере в среде Пролог. Для защиты лабораторных работ необходимо ответить на контрольные вопросы, указанные в конце лабораторной работы.

8.1 Основные конструкции логического программирования.
Факты и правила (2 часа)

Цель

Требуется написать программу и реализовать ее на одной из версий языка Пролог

Задачи

1) Сформулировать постановку задачи.

2) Написать текст программы.

3) Сделать подробное описание назначения и использования всех правил, определенных в программе.

4) Составить несколько контрольных примеров, исчерпывающе отражающих правильность работы программы.

5) Составить и оформить протоколы работы программы по каждому контрольному примеру.

Ход работы

Как было показано в п. 1, генеалогическое дерево однозначно задается с помощью отношений мужчина, женщина, супруги, ребенок. Используя свою фамилию, имя и отчество в качестве ключа, выберите из таблицы 8.1 понятия и определите для них правила.

Таблица 8.1 – Варианты к лабораторной работе

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

 

Например, если Вы– Бендер Остап Ибрагимович, то Вам необходимо разработать правила для отношений: Б) дочь; е) сводная сестра;н) племянница; д) сродная сестра; е);р) теща; О) родители; с) внук; т) кузина; а) сын; п)жена; И) братья; б);р);а);г) родная сестра;и);м) племянник; о);в) родной брат; и);ч) теща.



Контрольные вопросы

1 Что такое вопрос в логическом программировании?

2 Назовите виды вопросов.

3 Что называется переменной в логическом программировании?

4 Каковы требования к переменным в Прологе?

 

8.2 Вычислительная модель логических программ. Логические схемы (4 часа)

Цель

Требуется написать программу и реализовать ее на одной из версий языка Пролог

Задачи

1) Сформулировать постановку задачи.

2) Написать текст программы.

3) Сделать подробное описание назначения и использования всех правил, определенных в программе.

4) Составить несколько контрольных примеров, исчерпывающе отражающих правильность работы программы.

5) Составить и оформить протоколы работы программы по каждому контрольному примеру.

Ход работы

Сначала необходимо провести функциональный анализ логических схем. Исходными данными являются значения входных сигналов и таблицы истинности отдельных элементов схемы. Затем требуется составить таблицу истинности для заданной логической схемы. Вариант задания определяется по первым буквам фамилии, имени и отчества. В схемах используются следующие обозначения:

Повторитель Out= In Инвертор Out= НЕ In Дизъюнктор Out= In1 ИЛИ In2 Конъюнктор Out= In1 И In2

 

 

Таблица 8.2 – Варианты к лабораторной работе

 

а) б)
в) г)
д) е)
ё) ж)
з) и)
й) к)
л) м)
н) о)
п) р)
с) т)
у) ф)
х) ц)
ч) ш)
щ) э)
ю) я)

Контрольные вопросы

1 В чем отличие языка Пролог от традиционных алгоритмических языков программирования?

2 Назовите основные конструкции логического программирования.

3 Что такое факт в логическом программировании?

4 Что такое правило в логическом программировании?

 

8.3 Управление выполнением программы на языке Пролог. Оконный интерфейс (4 часа)

Цель

Требуется написать программу и реализовать ее на одной из версий языка Пролог

Задачи

1) Сформулировать постановку задачи.

2) Написать текст программы.

3) Сделать подробное описание назначения и использования всех правил, определенных в программе.

4) Составить несколько контрольных примеров, исчерпывающе отражающих правильность работы программы.

5) Составить и оформить протоколы работы программы по каждому контрольному примеру.

Ход работы

Реализовать один из вариантов меню, показанных на рисунке. Для управления курсором использовать клавиши: «­»– курсор на одну позицию вверх, «¯»– вниз, «»– влево, «®»– вправо, «Enter»– выход из меню с выбором текущей позиции курсора, «Esc»– выход из меню без выбора. Для выбора варианта меню в качестве ключа используйте первую букву своей фамилии:

а, б, в, Царь   к, л, м    
г, д, е, Царевич   н, о, п, Царь Королевич
ж, з, и, Король   р, с, т Царевич Сапожник
й) Королевич   у) Король Портной
  Сапожник        
  Портной        

 

ф, х, ц, ч, ш, щ, э, ю, я)
Царь Царевич Король Королевич Сапожник Портной

 

Контрольные вопросы

1 Назовите правила сопоставления переменных.

2 Что такое механизм отката?

3 В чем состоит алгоритм унификации?

4 Что такое отсечение?

 

8.4 Рекурсивные структуры данных. Списки (4 часа)

Цель

Требуется написать программу и реализовать ее на одной из версий языка Пролог

Задачи

1) Сформулировать постановку задачи.

2) Написать текст программы.

3) Сделать подробное описание назначения и использования всех правил, определенных в программе.

4) Составить несколько контрольных примеров, исчерпывающе отражающих правильность работы программы.

5) Составить и оформить протоколы работы программы по каждому контрольному примеру.

Ход работы

Из предлагаемого ниже списка, используя свою фамилию, имя и отчество в качестве ключа, выберете задания и определите соответствующие правила обработки списков:

сложение двух списков:

а) concat_lists_1([a, b, c, d], [a, b, l, m, k], [a, b, c, d, a, b, l, m, k]).

б) concat_lists_2([a, b, c, d], [a, b, l, m, k], [a, b, c, d, l, m, k]).

в) concat_lists_3([a, b, c, d], [a, b, l, m, k], [a, a, b, b, c, l, d, m, k]).

г) concat_lists_4([a, b, c, d], [a, b, l, m, k], [a, a, b, b, c, l, d, m]).

по парное сложение элементов списков

д) add_lists([4, 7, 12, 10, 5], [3, 6, 8, 3], [7, 13, 20, 13, 5]).

е) add_lists([4, 7, 12, 10, 5], [3, 6, 8, 3], [7, 13, 20, 13]).

замена списка на обратный

ж) revers_list([1, 4, 9, 0, 5], [5, 0, 9, 4, 1]).

сортировка элементов списка

з) sorting_1([5, 3, 8, 4, 1], [1, 3, 4, 5, 8]).

и) sorting_2([5, 3, 8, 4, 1], [1, 3, 4, 5, 8]).

подсчет количества элементов списка

й) quant_1([a, b, y, b, k, d], 6).

подсчет количества различных значений элементов списка

к) quant_2([a, b, y, b, k, y, d], 5).

подсчет количества уникальных элементов списка

л) quant_3([a, b, y, b, k, y, d], 3).

подсчет количества неуникальных элементов списка

м) quant_4([a, b, y, b, k, y, d], 2).

проверка вхождения элемента в список с определением позиции вхождения

н) member_1(c, [a, b, c, d, f, c], 3).

о) member_3(c, [a, b, c, d, f, c], 6).

п) member_1(c, [a, b, c, d, f, c], [3, 6]).

удаление указанного элемента из списка

р) delete_element_1(c, [a, b, c, d, f, c], [a, b, d, f, c]).

с) delete_element_2(c, [a, b, c, d, f, c], [a, b, d, f,]).

т) delete_element_3(c, [a, b, c, d, f, c], [a, b, c, d, f]).

удаление элемента из списка по номеру

у) erase_element_1(2, [a, b, c, d, f, c], [a, c, d, f, c]).

ф) erase_element_2(2, [a, b, c, d, f, c], [a, b, c, d, c]).

удаление неуникальных элементов списка

х) erase_element_3([a, b, c, d, f, c, b], [a, c, d, f]).

замена указанного элемента на другой

ц) change_element(c, f, [a, b, c, d, f, c], [a, b, f, d, f, c]).

ч) change_element(c, f, [a, b, c, d, f, c], [a, b, c, d, f, f]).

ш) change_element(c, f, [a, b, c, d, f, c], [a, b, f, d, f, f]).

щ) change_element(c, f, [a, b, c, d, f, c], [a, b, f, d, c, f]).

ы) change_element(c, f, [a, b, c, d, f, c], [a, b, f, d, f, c]).

добавление элемента к списку

э) add_element_1(a, [e, a, b, c, a, d], [a, e, a, b, c, a, d]).

ю) add_element_2(a, [e, a, b, c, a, d], [e, a, b, c, a, d, a]).

нахождение совпадающих элементов в двух списках

я) compare_list([a, b, c, d, e, k], [a, c, b, d, k, k], [a, d, k]).

 

Контрольные вопросы

1 Дайте определение списка.

2 Какие способы задания списков вы знаете?

3 Из чего состоит рекурсивное правило?

4 В чем состоит оптимизация хвостовой рекурсии?

 

8.5 Программирование баз данных. Базы данных (4 часа)

Цель

Требуется написать программу и реализовать ее на одной из версий языка Пролог

Задачи

1) Сформулировать постановку задачи.

2) Написать текст программы.

3) Сделать подробное описание назначения и использования всех правил, определенных в программе.

4) Составить несколько контрольных примеров, исчерпывающе отражающих правильность работы программы.

5) Составить и оформить протоколы работы программы по каждому контрольному примеру.

 

Ход работы

 

Организовать на диске в файле input.dba базу данных, занесите в нее два десятка фактов, содержащих паспортные данные: , , , , , , , , , . В качестве имени цепочки использовать серию паспорта. Из предлагаемого ниже списка, используя свою фамилию, имя и отчество в качестве ключа, выберите задания и определите соответствующие правила обработки этой базы данных:

а) Используя дерево ссылок вывести данные в алфавитном порядке фамилий.

б) Используя дерево ссылок вывести данные в алфавитном порядке имен.

в) Диалог для занесения в базу данных нового факта. Предусмотреть контроль корректности вводимых данных.

г) Диалог для удаления факта из базы данных.

д) Вывод всех фактов, принадлежащих цепочке в окно.

е) Подбор потенциальных семейных пар (критерии подбора определить самостоятельно).

ж) Диалог для замены одного факта другим.

з) Диалог для копирования базы данных в файл output.dba.

и) Диалог для удаления базы данных с диска.

й) Поиск всех однофамильцев.

к) Поиск людей, имеющих одинаковые имена.

л) Поиск людей, чьи фамилии имеют одинаковые начальные буквы

м) Поиск самого старшего по возрасту

н) Поиск самого младшего по возрасту

о) Диалог для поиска всех фактов по произвольным полям

п) Используя дерево ссылок вывести данные в порядке старшинства по возрасту.

р) Замена паспорта в связи с потерей (меняется серия и номер).

с) Замена паспорта в связи со сменой фамилии (меняется серия, номер и фамилия).

т) Смена прописки (меняется адрес).

у) Смена семейного положения.

ф) Вывод всех занесенных в базу семейных пар.

х) Удаление всех фактов принадлежащих одной цепочке.

ц) Удаление всех фактов не принадлежащей одной цепочке.

ч) Поиск людей проживающих в одной квартире.

ш) Подсчет среднего числа людей проживающих в одной квартире

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

ь) Подсчет семей, в которых муж и жена проживают отдельно.

э) Вывод списка людей, нуждающихся в отдельной квартире (считать, что необходима одна дополнительная квартира, если вместе проживают две супружеские пары), причем новая квартира необходима молодым.

ю) Вывод списка семейных пар, проживающих отдельно.

я) Удаление из базы всех данных о проживающих по указанному адресу (например, в связи со сносом дома).

Контрольные вопросы

1 Какие встроенные предикаты работы с базами данных вы знаете?

2 Какие встроенные предикаты ввода-вывода вы знаете?

3 Какая база данных называется внутренней, а какая внешней?

4 Каким образом описываются предикаты динамической базы данных?




<== предыдущая лекция | следующая лекция ==>
Управление внешней базой данных | Библиографический список


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.009 сек.