- •Программирование на Турбо-Прологе
- •Содержание
- •1. Основные элементы языка турбо-пролог
- •1.1. Введение
- •1.2.Запуск на счет программы, записанной на Турбо_Прологе
- •1.3.Основные понятия языка Турбо-Пролог
- •1.4.Варианты заданий
- •2. Операции над списками и арифметические операции
- •2.1.Представление списков
- •2.2.Операции над списками
- •2.2.1.Принадлежность к списку (member)
- •2.2.2.Сцепление (конкатенация) списков (conc)
- •2.2.3.Добавление элемента (append)
- •2.2.4. Удаление элемента (remove)
- •2.3.Арифметические действия
- •2.3. Варианты заданий
- •3. Ввод и вывод в турбо-прологе
- •3.1.Взаимодействие с файлами
- •3.2.Форматный вывод writef.
- •3.3.Ввод и вывод чисел и символов
- •3.4.Обработка строк.
- •3.5.Встроенный предикат findall
- •3.6. Варианты заданий
- •4. Базы данных в турбо прологе
- •4.1.Встроенные предикаты для работы с базами данных
- •4.2. Накопление в базе данных ответов на вопросы
- •4.3. Задание итерации
- •4.4. Варианты заданий
- •5. Операции на графах
- •5.1. Представление ориентированных графов в Прологе
- •5.2. Операции на графах
- •5.2.1. Поиск пути в графе
- •5.2.2. Построение остовного дерева
- •5.3. Варианты заданий
- •6. Основные стратегии решения задач искусственного интеллекта
- •6.1.Пространство состояний задачи
- •6.2. Стратегия поиска в глубину
- •6.3. Стратегия поиска в ширину
- •6.4. Варианты заданий
4.4. Варианты заданий
1.Создать БД, содержащую сведения о пассажирах:
Ф.И.О., количество мест, вес багажа.
Определить, есть ли пассажиры, багаж которых занимает 1 место и вес багажа больше 30 кг.
2.Создать БД о студентах вашей группы:
Фамилия, Имя, Год рождения.
Получить список студентов старше 20 лет.
3.Соэдать БД, содержащую сведения:
Ф.И.О., профессия, оклад.
Найти среднемесячную заработную плату для инженеров.
4.Создать БД о группе студентов:
Фамилия, Имя.
Выяснить, имеются ли в группе однофамильцы.
5.Создать БД со сведениями о файлах:
спецификация файла, дата создания, размер файла.
Получить сведения о файлах, имеющих размер более 5 блоков.
6.Создать БД о металлах:
Наименование, Удельная проводимость, Удельная стоимость.
Найти металлы с максимальной проводимостью и минимальной стоимостью.
7.Создать БД с расписанием движения поездов:
Номер поезда,
Пункт назначения,
Время отправления,
Время в пути,
Стоимость билета.
Найти номер и время отправления самого скорого поезда до Москвы.
8.Создать БД с расписанием движения самолетов:
Номер рейса,
Пункт отправления,
Пункт прибытия,
Время отправления,
Время в пути,
Стоимость билета.
Определить маршрут движения из Новосибирска в Нью-Йорк, время в пути и стоимость проезда.
9. Создать БД с таблицей игр чемпионата по футболу:
Первая команда, Вторая команда, Счет игры.
Определить чемпиона.
10. Создать БД с книжным каталогом:
Ф.И. автора, Название книги, Издательство, Год издания.
Найти все книги, изданные в издательстве "Наука" после 1990 года.
11. Создать БД со сведениями о стоимости товаров:
Наименование товара, Стоимость товара.
Определить суммарную стоимость указанных в БД товаров, найти товары с максимальной и минимальной стоимостями.
5. Операции на графах
5.1. Представление ориентированных графов в Прологе
Способ 1.
Каждая дуга графа записывается в виде отдельного предложения. Например,
arca(a,b). arca(b,c).
или (граф с взвешенными дугами)
arca(s,t,1). arca(t,v,3). arca(v,u,2).
Способ 2.
Граф представляется в виде списка дуг. Например,
G = [ arca(a,b), arca(b,c), arca(b,d), arca(c,d)]
или
G = [ arca(s,t,3), arca(t,v,1), arca(v,u,2), arca(u,t,5), arca(t,u,2)]
Способ 3.
Граф представляется как один объект. Графу соответствует пара множеств - множество вершин и множество дуг. Для объединения множеств в пару будем применять функтор graph, а для записи дуги - arca. Например,
G = graph([a,b,c,d], [ arca(a,b), arca(b,d), arca(b,c), arca(c,d)])
Всюду, где это возможно, для простоты записи программы будем представлять графы способом 1 или способом 2.