Преобразование данных
ТП для преобразования данных из одного типа в другой имеет следующие стандартные предикаты.
Преобразование
прописных букв в строчные и наоборот
upper_lower (Стр1, Стр2) (string, string) : (i, i) (i, o) (o, i)
(i, i)
upper_lower ("B”, "b”) True
(i, o)
upper_lower ("ABC”, X) X=”abc”
(o, i)
upper_lower (X, "abc”) X=”ABC”
str_char (Строка, Символ) (string, char) : (i, i) (i, o) (o, i)
(i, o)
str_char ("A”, X) X=’A’
(o, i)
str_char (X, ‘A’) X=”A”
(i, i)
str_char ("A”, ‘A’) True
Преобразование строки
в целое число и наоборот
str_int (Строка, ЦелЧисло) (string, real) : (i, o) (o, i) (i, i)
(i, o)
str_int ("
(o, i)
str_int (X, 345) X=”
(i, i)
str_int ("
Преобразование строки
в дейтсвительное число и наоборот
str_int (Строка, ДействЧисло) (string, integer) : (i, o) (o, i)
(i, i)
Преобразование символа
в число (код ASCII) и наоборот
char_int (Символ, Число) (char, integer) : (i, o) (o, i) (i, i)
Применение предикатов преобразования данных целесообразно, когда тип объекта встроенного предиката отличается от типа объекта предиката, определенного пользователем. Преобразование необходимы, когда значение одного типа должно быть присвоено к переменной другого типа.
Преобразование, определяемые пользователем
Пользователь может определить преобразование, не предусмотренные предикатами. Например: целые числа в действительные и наоборот.
predicates
conv_real_int (real, integer)
clauses
conv_real_int (R, N):- R=N.
Преобразование строк в списки атомов с функторов
Данные вводимые с клавиатуры для удобства дальнейшей обработки надо преобразовать в термы, которые могут быть обработаны ТП. Например, требуется поместить в базу данных множество утверждений в следующем виде:
fruct (apple)
fruct (peach)
fruct (orange)
fruct (pear)
Включает преобразование строки в список, который содержит имя функтора.
[fruct (apple),
fruct (peach), fruct (orange), fruct (pear)]