Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Laborator.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
118 Кб
Скачать
☆

Лабораторна робота № 7

Тема: Обробка рядків у Пролозі. Стандартні предикати для роботи з рядками.

Мета:

Короткі теоретичні відомості

Рядок - набір символів, вкладених в лапки.

У Пролозі є наступні предикати роботи з рядками:

  1. str_len - визначення довжини рядка:

str_len("Forday", X)

X=6

  1. frontchar - поділ заданого рядка на перший символ і залишок:

frontchar(string, char, string)

Приклад:

frontchar("cat", X, Y)

X='c'

Y='at'

frontchar(X, 'c', "at")

X="cat"

  1. fronttoKen - поділ заданого рядка на лексему й залишок:

fronttoKen("Цей птах летить", X, Y)

X="Цей "

Y="птах летить"

  1. frontstr - поділ даного рядка на два рядки:

frontstr(6, "office boy", X, Y)

X="office "

Y="boy"

  1. сoncat - склеювання двох рядків:

concat("boy", "friend")

X="boyfriend"

concat("boy", X, "boyfriend")

X="friend"

char.int('A', X)

X=65

Для перетворення даних з одного типу в іншій є наступні предикати:

Предикат

Дія

upper_lower

Перетворить прописні букви в рядкові й навпаки

str_char

Перетворить рядок у символ

str_int

Перетворить рядок у ціле число й навпаки

str_real

Перетворить рядок у дійсне число

char_int

Перетворить подання символів і чисел

Приклад. Перетворення рядків у список символів

domains

список_симв = char* - список символів

рядок = string - рядок

predicates

перетворення(рядок, список_символів)

clauses

перетворення(Рядок, [Голова | Хвіст]):-

frontchar(Рядок, Голова, Рядок1)

перетворення(Рядок1, Хвіст)

Нехай нам необхідно перетворити рядок "Привіт" у список символів ['П', 'р', 'и', 'в', 'е', 'т'].

У правилі перетворення першим параметром є рядок, а другим - список. Предикат frontchar рекурсивно витягає перший символ з Рядок і поміщає його в список. Протокол доведення мети:

goals

перетворення("Привіт", X)

наведений в таблиці:

Рядок

Голова

Рядок 1

Привіт

П

ривіт

ривіт

р

ивіт

ивіт

и

віт

віт

в

іт

іт

і

т

т

т

""

""

Виконання граничних умов

Завдання :

  1. Зробити аналіз роботи програми:

s1(“I ”).

s2(“am ”).

s3(“very good “).

s4(“student!”).

soed1(D):-s1(D1),s(D2),concat(D1,D2,D).

soed2(F):-s3(D3),s4(D4), concat(D3,D4,F).

soed(DF):-soed(D),soed(F),concat(D,F,DF).

  1. Зробити аналіз роботи програми:

domains

y=string

x=integer

predicates

dl(y,x)

clauses

dl(Y,X):-str_len(Y,X).

  1. Зробити аналіз роботи програми:

predicates

s(string)

dl(string,integer)

clauses

s(“hkkkk”).s(“fhashsjajkhdk”).s(“sd”).

dl(X,Y):-s(X),str_len(X,Y).

  1. Зробити аналіз роботи програми:

s(“LOTUS123”). podstr(N,Z,X,Y):-s(Z),frontstr(N,Z,X,Y).

10

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