Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

Predicates





St (string)

find_length /* найти длину строки st */

Goal

Find_length.

Clauses

st(«Темы практических занятий:»).

st(«- введение в язык PDC Prolog;»).

st(«- правила;»).

st(«- структуры;»).

st(«- арифметика;»).

st(«- рекурсия;»).

st(«и т.д.»).

find_length:-

St (S), str_len (S,L),

write(S, «(», L, «)»), nl, fail.

 

КОНКАТЕНАЦИЯ СТРОК

Под этой операцией подразумевается объединение исходных строк с целью образования одной новой строки:

concat (String1, String2, String3) (i,i,o),(o,i,i),(i,o,i),(i,i,i).

 

При использовании по «прямому» назначению встроенного предиката concat объекты String1 и String2 являются входными строками, а String3 - объединенная выходная строка.

 

Следующий пример 5.2 демонстрирует объединение четырех строк:

- 191186,

- Санкт-Петербург,

- ул. Миллионная, 5,

- СЗПИ.

В этом примере строки представлены односимвольными переменными: A, B, C,...

 

/*Пример 5.2.*/

Predicates

Pr

Goal

Pr.

Clauses

Pr:-

Nl,nl,

A= «191186,»,

B= «Санкт-Петербург,»,

С= «ул. Миллионная, 5,»,

D= «СЗПИ»,

Concat (A,B,E),

Concat (C,D,F),

Concat (E,F,G),

Write (G).

 

Встроенный предикат

frontchar(Str1, Char, Str2) (i,o,o),(i,i,o),(i,o,i),(i,i,i),(o,i,i)

аналогичен предикату concat. Отличие заключается в том, что frontchar присоединяет значение переменной Char (а она имеет тип char) только К НАЧАЛУ СТРОКИ. При этом возможно три варианта использования предиката frontchar, а условно эти варианты можно представить так:

Str1 = Char + Str2,

Char = Str1 - Str2,

Str2 = Str1 - Char.

Объединяя работу этого предиката с рекурсивной обработкой списка можно реализовать расщепление строки в последовательность символов, или, наоборот, для создания строки из последовательности символов, или, наконец, для проверки символов в строке.

 

Пример 5.3 демонстрирует преобразование строки в список

символов с использованием предиката frontchar.

 

/*Пример 5.3.*/

Domains

charlist = char*

str = string

Predicates

Str_list (str, charlist)

Clauses

str_list («», []).

str_list (S, [H|T]):-

Frontchar (S, H, S1),

Str_list (S1,T).

 

В правиле str_list первым параметром является строка, а вторым - список. Предикат frontchar рекурсивно извлекает первый символ из S и помещает его в список. В разделе domains объект charlist является списком символов, а str -строкой.

 

При вводе цели

str_list(«СЗПИ», A)

переменная A связывается со списком [’С’,’З’,’П’,’И’].

 

СОЗДАНИЕ ПОДСТРОК

Подстрока - это строка, являющаяся копией некоторой части исходной строки. Для создания подстрок используется встроенный предикат

frontstr (N, Str1, StartStr, EndStr) (i,i,o,o).

Аргументу StartStr присваивается подстрока из N первых символов исходной строки Str1, а EndStr присваивается остаток строки Str1. Например, утверждение

frontstr(13, «Искусственный интеллект», StartStr, EndStr).

Присваивает StartStr значение «Искусственный», а EndStr - «интеллект», т.к. N = 13 соответствует числу символов слова «Искусственный».

 

Кроме рассмотренных в этом параграфе встроенных предикатов, широко используемых для преобразования строк, можно перечислить еще целый ряд предикатов:

subchar (String, Position, Char) (i,i,o) - переменной Char присваивается элемент строки String в позиции Position.

substring (String, Position, Length, Substring) (i,i,i,o) - переменной Substring присваивается часть строки String, начинающейся с позиции Position и имеющей длину Length.

searchchar (String, Char, Position) (i,i,o) - переменной Position присваивается номер позиции в строке String, в которой впервые встречается символ Char.

searchstring (String, Substring, Position) (i,i,o) - переменной Position присваивается номер позиции в строке String, с которой начинается подстрока Substring.

 

ОПЕРАЦИИ ПРЕОБРАЗОВАНИЯ ТИПОВ

Для преобразования данных из одного типа в другой используются следующие предикаты char_int, str_char, str_int, str_real, upper_lower. Их применение целесообразно при выполнении преобразований между символом и его значением в коде ASCII, между строкой и символом, строкой и целым, строкой и вещественным, символами верхнего и нижнего регистра.

 

Все предикаты преобразования типов содержат два объекта, а имена предикатов показывают тип выполняемого преобразования:

Char_int (Char, Integer), (i,o),(o,i),(i,i),

Str_char (String, Char), (i,o),(o,i),(i,i),

Str_int (String, Integer), (i,o),(o,i),(i,i),

Str_real (String, Real), (i,o),(o,i),(i,i),







Дата добавления: 2015-10-19; просмотров: 378. Нарушение авторских прав; Мы поможем в написании вашей работы!




Важнейшие способы обработки и анализа рядов динамики Не во всех случаях эмпирические данные рядов динамики позволяют определить тенденцию изменения явления во времени...


ТЕОРЕТИЧЕСКАЯ МЕХАНИКА Статика является частью теоретической механики, изучающей условия, при ко­торых тело находится под действием заданной системы сил...


Теория усилителей. Схема Основная масса современных аналоговых и аналого-цифровых электронных устройств выполняется на специализированных микросхемах...


Логические цифровые микросхемы Более сложные элементы цифровой схемотехники (триггеры, мультиплексоры, декодеры и т.д.) не имеют...

Функциональные обязанности медсестры отделения реанимации · Медсестра отделения реанимации обязана осуществлять лечебно-профилактический и гигиенический уход за пациентами...

Определение трудоемкости работ и затрат машинного времени На основании ведомости объемов работ по объекту и норм времени ГЭСН составляется ведомость подсчёта трудоёмкости, затрат машинного времени, потребности в конструкциях, изделиях и материалах (табл...

Гидравлический расчёт трубопроводов Пример 3.4. Вентиляционная труба d=0,1м (100 мм) имеет длину l=100 м. Определить давление, которое должен развивать вентилятор, если расход воздуха, подаваемый по трубе, . Давление на выходе . Местных сопротивлений по пути не имеется. Температура...

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

Случайной величины Плотностью распределения вероятностей непрерывной случайной величины Х называют функцию f(x) – первую производную от функции распределения F(x): Понятие плотность распределения вероятностей случайной величины Х для дискретной величины неприменима...

Схема рефлекторной дуги условного слюноотделительного рефлекса При неоднократном сочетании действия предупреждающего сигнала и безусловного пищевого раздражителя формируются...

Studopedia.info - Студопедия - 2014-2025 год . (0.012 сек.) русская версия | украинская версия