Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
metod_AYaII_buklet_maket (1).doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
857.6 Кб
Скачать

Приложение 2б

Предикаты для работы с внутренней базой данных

Предикат

Назначение

consult(Имя_Файла)

(string) - (i)

Загрузка в оперативную память всех баз данных, хранящихся в файле

consult(Имя_Файла, Имя_БД)

(string, Имя_БД) - (i,i)

Загрузка в оперативную память указанной базы данных, хранящейся в файле

save(Имя_Файла)

(string) - (i)

Сохранение в файле всех баз данных, находящихся в оперативной памяти

save(Имя_Файла, Имя_БД)

(string, Имя_БД) - (i,i)

Сохранение в файле указанной базы данных, находящейся в оперативной памяти

assert( Факт )

(Факт_БД) - (i)

Добавление в оперативную память нового факта указанной БД

asserta(Факт)

(Факт_БД) - (i)

Добавление в оперативную память нового факта указанной БД. Факт помещается перед всеми фактами БД.

assertz(Факт)

(Факт_БД) - (i)

Добавление в оперативную память нового факта указанной БД. Факт добавляется после всех фактов БД.

Продолжение прил. 2Б

Предикат

Назначение

retract( Факт )

(Факт_БД) - (_)

Удаление указанного факта БД. При задании факта можно использовать анонимные переменные в качестве параметров. В этом случае удаляются все факты по указанному шаблону комбинации аргументов.

retractall(_, Факт_БД )

(_,Имя_БД) - (_,i)

Удаление из оперативной памяти всех фактов указанной базы данных.

retractall(_)

(Имя_БД) - (_)

Удаление из оперативной памяти всех фактов всех баз данных.

findall(Переменная,Предикат,

Имя_списка)

Строится список из указанных аргументов предиката

Лабораторная работа 3

Тема работы: Выполнение сложных запросов к базе данных в среде Turbo Prolog

Цель работы: ознакомление с приемами выполнения запросов к базе данных в среде Turbo Prolog 2.0

Темы для предварительной проработки

  • Логика предикатов первого порядка.

  • Факты и правила Пролог-программ.

  • Операции возврата и отсечения.

  • Использование рекурсии.

Постановка задачи: написать на языке Prolog программу, содержащую базу данных, и правила, выполняющие запросы к базе данных; отладить и выполнить программу.

1.1. Порядок выполнения работы

  1. Загрузить Turbo Prolog.

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

  3. Определить, какие из используемых переменных являются входными, и какие – выходными.

  4. Отладить и выполнить программу.

  5. Показать преподавателю результаты работы программы.

1.2. Содержание отчета

  1. Тема лабораторной работы.

  2. Тема лабораторной работы.

  3. Описание применяемых стандартных и разработанных предикатов.

  4. Текст программы.

  5. Результаты выполнения программы.

  6. Выводы.

1.3. Индивидуальные задания

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

Для выполнения заданий 1–7 использовать базу данных «Поставщики–Детали–Проекты» (Приложение 3А).

  1. Подсчитать количество деталей красного цвета.

Вывести названия и количество всех проектов, в которых участвует поставщик Смит.

  1. Подсчитать количество деталей, используемых в проекте Консоль.

Вывести имена поставщиков, живущих в том же городе, где изготавливаются поставляемые ими детали.

  1. Подсчитать количество проектов в Лондоне.

Вывести сведения о проектах, для которых поставляются красные винты, и об общем количестве винтов.

  1. Подсчитать количество всех деталей, которые поставляет поставщик Кларк.

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

  1. Подсчитать количество поставщиков, которые поставляют детали для проекта Перфоратор.

Вывести названия и суммарный вес всех деталей, используемых в проекте Терминал.

  1. Определить суммы капиталов поставщиков, живущих в Париже.

Определить название детали голубого цвета, имеющей минимальный вес.

  1. Определить цвет и название детали, которая используется в проекте J4 в максимальном количестве.

Вывести сведения о всех проектах, для которых поставляет детали поставщик S1.

Для выполнения заданий 8–14 использовать базу данных «Запасные части самолета» (Приложение 3Б)

  1. По введенному названию детали посчитать, сколько таких деталей имеется в наличии.

Какая деталь используется в наибольшем количестве в самолете заданного типа?

  1. Каких деталей имеется больше всего в наличии в Бостоне?

Сколько всего деталей имеется в наличии в Бостоне?

  1. Посчитать суммарное количество деталей в узле заданного типа.

Какая деталь входит в узел заданного типа в наименьшем количестве?

  1. В каком городе больше всего имеется в наличии заданных деталей?

Посчитать количество наименований деталей, входящих в заданный узел.

  1. Сколько всего деталей заданного типа используется во всех самолетах?

Достаточно ли деталей 211 для Боинга 707 имеется в наличии?

  1. Сколько всего кресел требуется для всех самолетов?

Сколько всего деталей имеется в наличии в Нью-Йорке?

  1. В каком городе суммарное количество деталей больше – в Бостоне или Чикаго?

Сколько всего чехлов требуется для самолетов Боинг 707 и Боинг 727?

Для выполнения заданий 15–21 использовать базу данных "Продавцы–Заказчики–Покупки" (Приложение 3В)

  1. Подсчитать сумму всех покупок, выполненных 3 октября.

Подсчитать число различных ненулевых значений поля city в таблице Заказчики.

  1. Выбрать наименьшую сумму покупки для каждого заказчика.

Вывести имя заказчика с максимальным рейтингом в городе, название которого вводится с клавиатуры.

  1. Вывести номер покупки, номер продавца и сумму комиссионных продавца для этой покупки.

Вывести имя заказчика с минимальным рейтингом в городе, название которого вводится с клавиатуры.

  1. Вывести номера покупок и имена заказчиков, выполнивших покупки.

Подсчитать количество всех покупок, выполненных 3 октября.

  1. Вывести имена всех заказчиков, обслуживаемых продавцом с комиссионными выше 12 % . Выведите имена заказчика и продавца и ставку комиссионных продавца.

Определить количество продавцов, живущих в Лондоне.

  1. Вычислить сумму комиссионных продавцов для каждой покупки заказчиков с рейтингом выше 100.

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

  1. Вывести все покупки, выполненные заказчиком, имя которого вводится с клавиатуры.

Подсчитать общую сумму всех покупок, оформленніх продавцом, имя которого вводится с клавиатуры.

Для выполнения заданий 22–31 использовать базу данных "Самолеты–Пилоты–Рейсы" (Приложение 3Г)

  1. Какие самолеты находятся в Париже и имеют более 300 мест? Подсчитать их количество.

Определить самолет, имеющий максимальное количество мест.

  1. Какие самолеты находятся в Париже или имеют более 300 мест? Подсчитать их количество.

Определить самолет, имеющий минимальное количество мест.

  1. Вывести имена и количество пилотов, пилотирующих самолет с номером 100.

Определить общее количество мест во всех самолетах AIRBUS.

  1. Для каждого пилота получить его имя, адрес номера пилотируемых им самолетов и их количество.

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

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

Определить, сколько времени в общей сложности проводит в воздухе пилот SERGE.

  1. Получить имена пилотов, пилотирующих самолеты типа "AIRBUS", и определить их количество.

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

  1. Получить имена пилотов, пилотирующих все самолетах типа "AIRBUS".

Подсчитать, сколько рейсов вылетает из города PARIS.

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

Какие пункты назначения обслуживаются пилотами, чьи номера больше номеров пилотов JEAN и CLAUDE.

  1. Получить имена пилотов, пилотирующих самолеты, которые пилотирует и пилот номер 2.

Для каждого самолета, вылетающего из Тулузы, вывести его номер и количество пилотов, которые его пилотируют.

  1. Получить номера самолетов, которые пилотируют несколько пилотов.

Подсчитать, сколько самолетов пилотирует пилот, имя которого задается с клавиатуры.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]