- •Общие сведения о Прологе, области применения, отличия Пролога от других языков программирования.
- •4. Способы объявления доменов (типов данных) в Турбо-Прологе.
- •5.Объявление предикатов в программах Турбо-Пролога.
- •6. Утверждения программы Турбо-Пролога: факты и правила.
- •7.Внутренняя и внешняя цели в программах Турбо-Пролога.Раздел goal
- •8.Этапы программирвоания на тп
- •9.Декларативный и процедурный смысл программы на Турбо-Прологе.
- •10.Сопоставление. Правила сопоставимости термов, структур.
- •11.Арифметика в тп, Арифметические функции в тп
- •12.Рекурсия.Пример рекурсивного правила(вычисление факториала, возведение числа в целую степень).
- •13 Стандартные предикаты. Поточный шаблон стандартного предиката.
- •14 Стандартные предикаты ввода-вывода в Турбо-Прологе.
- •15Отсечение в программах на Турбо-Прологе.
- •16Списки. Описание списков в программе. Голова и хвост списка.
- •17Основные стандартные предикаты Турбо-Пролога для работы со строками.
- •18Преобразование строки в список символов.
- •Преобразование строки в символ
- •19 Преобразование строки в список атомов
- •20 Основные предикаты Турбо Пролога для преобразования данных из одного типа в другой
- •Преобразование строки в символ
- •Преобразование, определяемые пользователем
- •21Предикаты Турбо-Пролога для переадресации внешних устройств.
- •22 Описание файловых доменов в Турбо-Прологе.
- •23 Запись данных в файл в программах на Турбо-Прологе.
- •24 Чтение данных из файла в программах на Турбо-Прологе.
- •25 Дозапись данных в конец существующего файла в программах на Турбо-Прологе
- •26 Предикаты Турбо-Пролога для работы с окнами
- •27Статические и динамические базы данных в программах на Турбо-Прологе
- •28Создание динамических баз данных средствами Турбо-Пролога
- •30Способы занесения информации в динамическую базу данных
- •29Предикаты Турбо-Пролога для работы с базой данных.
- •Общие сведения о Прологе, области применения, отличия Пролога от других языков программирования.
- •Основные элементы Турбо-Пролога: имена объектов, термы, константы, переменные, структуры, атомы.
13 Стандартные предикаты. Поточный шаблон стандартного предиката.
ТП имеет большой набор встроенных предикатов. Большинство стандартных предикатов выполняют несколько функций в зависимости от состояния параметров входящих в предикат. К моменту обращения к предикату каждый отдельный его параметр может быть определен или не определен. Известные параметры предиката – входные (i), неизвестные – выходные (o). Совокупность входных и выходных параметров определяет работу предиката и называется поточным шаблоном. Не для каждого варианта все возможные варианты поточного шаблона имеют смысл.
14 Стандартные предикаты ввода-вывода в Турбо-Прологе.
Служат для организации взаимодействия программы с пользователем.
write (l1, l2, … ) ((i)*)
Запись заданных констант или значений переменных l1, l2, … в активное окно на текстовом устройстве вывода. Аргументы могут быть как константами так и переменными, связанными со значениями стандартных типов данных.
write f (формат, a1, a2, …) (i, (i)*)
Осуществляется форматный вывод. Общий вид формата %-m.p,
где % - начальный символ, - – указывает выравнивание по левой границе, по умолчанию – по правой границе, m – минимальная ширина поля вывода (необязательно), p – точность выводимых чисел.
readln (строка) (string) : (o)
Читает строку с текстового устройства ввода и связывает ее с заданной переменной. Конец строки – ввод. Переменная может быть символьного типа.
readint (целочисленная переменная) (integer) : (o)
Читает целое число и связывает его с заданной переменной. Переменная не должна быть определена до вызова предиката.
readreal (вещественная переменная) (real) : (o)
readchar (символьная переменная) (char) : (o)
inkey (символ) (char) : (o)
Читает символ, в отличии от readchar выполнение программы не прерывается. Поэтому применяется для организации циклов ожидания. Предикат inkey не выполняется, если не введен ни один символ.
15Отсечение в программах на Турбо-Прологе.
В процессе достижения цели Пролог-система осуществляет автоматический перебор вариантов, делая возврат при неуспехе какого-либо из них. Такой перебор – полезный программе механизм, так как он освобождает пользователя от необходимости производить этот перебор самому. С другой стороны ничем не ограниченный перебор может быть источником неэффективности программы. Поэтому требуется его ограничить или исключить вовсе. Для этого предусмотрено специальное целевое утверждение «!,», называемое отсечением. Отсечение реализуется следующим образом: после согласования ЦУ, стоящего перед отсечением, все предположения с тем же предикатом расположенные после отсечения не рассматриваются
Можно выделить три основных функции отсечения:
Для устранения бесполезного цикла ( вычисление суммы 1+2+…+N)
сумма (1, 1):-,!
сумма (N, K):- N1=N-1, сумма (N1, K1), K=K1+N.
Если граничное условие будет записано в виде сумма (1, 1). , то сопоставление головы правила с запросом будет происходить успешно и при n=0, то есть будет предпринята попытка доказать цель сумма (0, К), что в свою очередь приводит к цели сумма (-1, К) и т.д.
При программировании взаимоисключающих утверждений.
max (X, Y, Max)
max (X, Y, X):- X>=Y.
max (X, Y, Y).
Или
max (X, Y, X):- X>=Y,!
max (_, Y, Y).
3.При необходимости неудачного завершения цели.