Студопедія
рос | укр

Головна сторінка Випадкова сторінка


КАТЕГОРІЇ:

АвтомобіліБіологіяБудівництвоВідпочинок і туризмГеографіяДім і садЕкологіяЕкономікаЕлектронікаІноземні мовиІнформатикаІншеІсторіяКультураЛітератураМатематикаМедицинаМеталлургіяМеханікаОсвітаОхорона праціПедагогікаПолітикаПравоПсихологіяРелігіяСоціологіяСпортФізикаФілософіяФінансиХімія






Варіант 2


Дата добавления: 2015-10-18; просмотров: 413



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),


<== предыдущая лекция | следующая лекция ==>
Варіант 1 | Міністерство освіти і науки України
1 | <== 2 ==> |
Studopedia.info - Студопедия - 2014-2024 год . (0.226 сек.) російська версія | українська версія

Генерация страницы за: 0.226 сек.
Поможем в написании
> Курсовые, контрольные, дипломные и другие работы со скидкой до 25%
3 569 лучших специалисов, готовы оказать помощь 24/7