
- •Федеральное агентство по образованию
- •Гоу впо «Глазовский государственый педагогический институт им. В.Г. Короленко»
- •Сборник задач по логическому программированию
- •Для студентов специальности «030100 – информатика»
- •Оглавление
- •Часть 1. Освоение интерфейса 6
- •Часть 2. Лабораторные работы 19
- •Введение
- •Часть 1. Освоение интерфейса Главное меню системы Турбо-Пролог
- •Основные команды редактирования
- •Использование предикатов для работы с окнами
- •Использование окон для ввода и вывода
- •Использование звука и музыки
- •Часть 2. Лабораторные работы Лабораторная работа №1. Общие сведения об языке логического программирования
- •Задания для самостоятельной работы
- •Лабораторная работа №2. Арифметика. Управление логическим выводом в программах
- •Задания для самостоятельной работы
- •Лабораторная работа №3. Повторение и рекурсия
- •Задания для самостоятельной работы
- •Рекомендуемая литература
- •Лабораторная работа №4. Применение рекурсии для обработки списков
- •Задания для самостоятельной работы
- •Рекомендуемая литература
- •Лабораторная работа №5. Решение логических задач.
- •Задания для самостоятельной работы
- •Рекомендуемая литература
- •Лабораторная работа №6. Головоломки. Игровые программы.
- •Задания для самостоятельной работы
- •Рекомендуемая литература
- •Лабораторная работа №7. Обработка файлов. Предикаты для работы с файлами
- •Задание для самостоятельной работы
- •Лабораторная работа №8. Создание динамической базы данных. Предикаты для работы с базой данных
- •Задание для самостоятельной работы
- •Лабораторная работа №9. Применение языка для решения задач ии. Создание экспертных систем
- •Задания для самостоятельной работы
- •Рекомендуемая литература
- •Литература
- •Сборник задач по логическому программированию
Лабораторная работа №2. Арифметика. Управление логическим выводом в программах
Пример 1. Описать предикаты для вычисления суммы, разности, произведения, частного двух чисел, возведения числа в квадрат, вывода остатка при деление на 3, вывод случайного числа из интервала [1,100].
Программа 13. Арифметика
Domains
N=integer
R=real
Predicates
add(N,N)
sub(N,N,N)
multi(N,N,N)
division(N,N,R)
kvadrat(N,N)
ostat(N,N)
vivod(N)
Clauses
add(X,Y):-S=X+Y, write(“Sum= ”,S),nl.
sub(X,Y,S):-S=X-Y.
multi(X,Y,P):-P=X*Y.
division(X,Y,R):-Y<>0, R=X/Y.
kvadrat(X,N):-N=X*X.
ostat(X,N):-N=X mod 3.
vivod(N):-random(Y), N=1+Y*100.
Пример 2. Программирование взаимоисключающих утверждений. Процедуру нахождения наибольшего из двух чисел можно записать в виде отношения
max(X,Y,X):-X>=Y.
max(X,Y,Y):-X<Y.
Эти правила являются взаимоисключающими. Возможна более экономная формулировка: если X>=Y, то максимум=X, иначе =Y. На Прологе это запишется следующим образом:
max(X,Y,X):-X>=Y, !.
max(_,Y,Y).
Программа 14. Максимум
Domains
N=integer
Predicates
max(N,N,N)
Clauses
max(X, Y, X):-X>Y,!.
max(_,Y,Y).
Пример 3. Рассмотрим различные способы записи предиката different, определяющего различны ли числа, использующие сочетание встроенных предикатов ! и fail.
different(X,X):-!,fail.
different(_,_).
или
different(X,Y):-X=Y,!,fail.
different(_,_).
или
different(X,Y):-X=Y,!,fail; true.
/* true –встроенный предикат, который всегда истиннен*/
или
different(X,Y):-not(X=Y).
Задания для самостоятельной работы
№1. Описать предикаты:
Найти квадрат числа X; куб числа X.
Найти значение функций у = а*х + b, где a, b и х — целые числа.
Найти периметр треугольника, если все его стороны известны.
Найти площадь прямоугольного треугольника по двум его катетам.
Найти площадь трапеции с основаниями А и В и высотой Н.
Найти квадрат гипотенузы в прямоугольном треугольнике по двум его катетам.
Найти объем прямоугольного параллелепипеда со сторонами А, В и С.
Зная скорость V и время Т, определите путь.
Найти последнюю цифру в записи натурального числа.
Найти цифры в десятичной записи двузначного натурального числа.
Найти первую цифру в десятичной записи трехзначного натурального числа.
Найти сумму цифр в десятичной записи трехзначного натурального числа.
№2.
Найти
А. Наименьшее значение из двух чисел;
Б. Наименьшее значение из трех чисел на основе первой задачи;
В. Наименьшее значение из шести чисел на основе второй задачи.
Определить, удовлетворяют ли длины трех отрезков условию прямоугольного треугольника.
Определить, удовлетворяют ли длины трех отрезков условию треугольника.
Найти модуль числа X.
Описать предикат для вычисления функции, заданной соотношением:
Рекомендуемая литература
Ин Ц., Соломон Д. Использование Турбо-Пролога: Пер. с англ.-М.:Мир, 1993.-608 с.,ил.
Информатика. Задачник-практикум в 2 т./Под ред. И.Г.Семакина, Е.К. Хеннера: Том.2.-М.:-БИНОМ. Лаборатория знаний, 2003.-278 с.:ил.