Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
flp_textbook.prn.doc
Скачиваний:
4
Добавлен:
22.08.2019
Размер:
419.84 Кб
Скачать
  1. Динамические базы данных

PDC Prolog поддерживает различные стандартные предикаты для обработки строк. Основными предикатами для работы со строками можно назвать предикат frontchar (String, Char, StringRest), позволяющий разделить строку String на первый символ Char и остаток строки StringRest и предикат fronttoken (String, Lexeme, StringRest), который работает аналогично предикату frontchar, но только отделяет от строки String лексему Lexeme. Лексемой называется последовательность символов, удовлетворяющая следующим условиям: имя в соответствии с синтаксисом Prolog’а, число или отличный от пробела символ.

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

%1 вариант

DOMAINS

charlist=char*

PREDICATES

string2charlist (string, charlist)

CLAUSES

string2charlist (“”, [ ]):- !.

string2charlist (Str, [H|T]):- frontchar (Str, H, Str_Rest), string2charlist (Str_Rest, T).

GOAL

string2charlist (“abcde”, List), write (“List=”, List).

%2 вариант

DOMAINS

charlist=char*

PREDICATES

string2charlist (string, charlist)

CLAUSES

string2charlist (Str, [H|T]):- frontchar (Str, H, Str_Rest), !, string2charlist (Str_Rest, T).

string2charlist (_, [ ]).

GOAL

string2charlist (“abcde”, List), write (“List=”, List).

Результат работы программы:

List=[‘a’, ‘b’, ‘c’, ‘d’, ‘e’]

Более подробно стандартные предикаты для работы со строками можно посмотреть в файле Prolog.hlp в разделах “STRING HANDLING” и “CONVERSIONS”.

Основы функционального программирования

  1. Введение

Язык Lisp является языком функционального программирования. В Lisp’е как программы, так и данные, представляются одинаково – в виде списков. Например, запись (+ 1 2) может толковаться, в зависимости от контекста, как список, состоящий из трех элементов (данные), или как вызов функции суммирования с двумя аргументами (программа).

О такой особенности Lisp’а говорит и название языка, ведь аббревиатура Lisp произведена от слов LISt Processing (обработка списков). То есть, программы, написанные на Lisp’е, могут обрабатывать и преобразовывать как другие программы, так и самих себя.

  1. Символьные выражения

При написании программ на Lisp’е используются символы и создаваемые на основе символов символьные выражения. Символ в Lisp’е аналогичен переменной в традиционном языке программирования – это имя, состоящее из букв латиницы, цифр и некоторых специальных литер. Символ, как и переменная, может иметь какое-либо значение, то есть представлять какой-либо объект.

Наряду с символами, в Lisp’е используются также:

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