
- •1) Рекурсия в программировании
- •4) Основы языка Лисп
- •5)Цикл в Лиспе
- •6. Рекурсии в Прологе.
- •7.Факты в Прологе
- •9. Списки в Прологе.
- •10. Списки в Лиспе
- •11. Типы данных Turbo Prolog
- •12. Типы данных в Лиспе
- •13. Опции главного меню.
- •14.Работа с экраном в Лиспе
- •15.Интеллектуальные экспертные системы
- •17)Префиксная нотация.
- •18. Система предикатов
- •21) Элементы структурного программирования
- •22)Факты, вопросы, правила.
- •24) Функции, определенные пользователем
- •26. Ввод-вывод в Лиспе.
- •27) Ввод и вывод в Турбо-Прологе
- •28)Правила в Лиспе
- •30) Функционалы в Лиспе
- •31) Разрушающие функции
- •32. Логические константы в Лисп.
- •33) Управляющая структура cond в Лисп
- •34. Циклы в Лисп
7.Факты в Прологе
Факт –одиночная цель которая безусловно истина
Предложения с пустым Телом называются Фактами. Пример факта:
Кот(Иван).
оно эквивалентно правилу:
Кот(Иван) :- ИСТИНА.
9. Списки в Прологе.
В Прологе список (list) является объектом, содержащим внутри произвольное число других объектов. Списки соответствуют, грубо говоря, массивам в других языках, но, в отличие от массивов, список не трубует декларирования его размера до начала его использования.
Список, содержащий числа 1, 2 и 3 записывается как
[ 1, 2, 3 ]
Порядок элементов в этом списке значим:
Число "1" является первым элементом,
"2" - второй,
"3" - третий.
Список [ 1, 2, 3 ] и список [ 1, 3, 2 ] различны.
Каждый компонент списка называется элемент (element). Для того, чтобы сформировать списковую структуру данных, следует разделять элементы запятыми и заключать их всех в квадратные скобки. Посмотрим на некоторые примеры:
["dog", "cat", "canary"]
["valerie ann", "jennifer caitlin", "benjamin thomas"]
Один и тот же элемент может быть представлен в списке несколько раз, например:
[ 1, 2, 1, 3, 1 ]
10. Списки в Лиспе
Списки в языке Lisp играют важную роль как по историческим, так и по практическим причинам. Изначально списки были основным составным типом данных в языке Lisp, и в течении десятилетий они были единственным составным типом данных. В наши дни, программист на Common Lisp может использовать как типы vector, hash table, самостоятельно определённые типы и структуры, так и списки.
Списки остаются в языке потому, что они являются прекрасным решением для определённого рода проблем. Одна из них - проблема представления кода, как данных для трансформации и генерации кода в макросах - является специфичной для языка Lisp, и это объясняет то, как другие языки обходятся без списков в стиле Lisp. Вообще говоря, списки - прекрасная структура данных для представления любых неоднородных и/или иерархических данных. Кроме того они достаточно легковесны и поддерживают функциональный стиль программирования - ещё одна важная часть наследия Lisp. Список обозначается как набор разделенных пробелами (одним или несколькими) элементов списка, заключенные в круглые скопки:
(<элемент1> <элемент2> <элемент3> ... <элементN>)
Элементами списка могут быть другие списки или АТОМЫ (второе базовое понятие в списке).
Атом - как и в физике (до недавнего времени :) ) обозначает нечто неделимое, например числа или символы.
(Более точные определения терминов мы дадим позже)
Например:
( (12 36 78) йцукен qwerty t () another-symbol)
Здесь приведен список состоящий соответственно из другого списка: (12 36 78) из символов йцукен и qwerty, специальных символов t (обозначающего "истинность") и () - (пустой список, то есть не содержащий ни одного элемента, он еще обозначает "ложь") и еще одного символа по имени enother-symbol.
11. Типы данных Turbo Prolog
В Turbo Prolog’е существуют следующие простые типы данных:
char - символ (размер 1 байт)
integer - целое число (размер 2 байта)
real - действительное число (размер 8 байт)
string - последовательность символов типа char, которая заключена в кавычки
symbol - последовательность букв латинского алфавита, цифр и знаков подчеркивания, которая начинается со строчной буквы или заключена в кавычки.
Также существуют дополнительные типы данных
ref - ссылочный номер базы данных
dbasedom - определяет объект в терме для глобальных баз данных
bt_selector - возвращаемый указатель бинарного дерева
db_selector - определенный пользователем указатель внешней базы
данных
place - переменная области размещения, принимает значения:
in_memory - в памяти;
in_ems - в расширенной памяти;
in_file - в файле
file - файловая переменная, принимает значения:
keyboard - клавиатура;
screen - экран;
printer - принтер;
com1; stdin; stdout - стандартные порты ввода/вывода
... - другие значения, присвоенные пользователем
reg - переменная для обращения к регистрам ОЗУ, принимает значение:
reg(AX,BX,CX,DX,SI,DI,DS,ES)
bgi_ilist - список целых для предикатов BGI-графики.
Также особенность данной системы является особый тип данных, называемый список. Список может содержать значения доменов определенного типа или же подсписок.
Для работы со списками существует одна единственная операция: разделение на голову и хвост.
Голова - это первый элемент списка. Хвост - остальная часть.
С помощью одной-единственной операции со списком можно проводить разнообразные действия, такие как вставка и удаление элемента, поиск элемента, подсчет длины списка и сортировка.