- •7. 04020101 – «Математика» напряму підготовки 0402 – «Фізико-математичні науки»
- •Хід роботи
- •Завдання для самостійного розв’язання:
- •Лабораторна робота № 2
- •Лабораторна робота № 3
- •Завдання 1.
- •Завдання 2.
- •Лабораторна робота № 4_5
- •Лабораторна робота № 6
- •Лабораторна робота № 7
- •Короткі теоретичні відомості
- •Завдання :
Лабораторна робота № 7
Тема: Обробка рядків у Пролозі. Стандартні предикати для роботи з рядками.
Мета:
Короткі теоретичні відомості
Рядок - набір символів, вкладених в лапки.
У Пролозі є наступні предикати роботи з рядками:
str_len - визначення довжини рядка:
str_len("Forday", X)
X=6
frontchar - поділ заданого рядка на перший символ і залишок:
frontchar(string, char, string)
Приклад:
frontchar("cat", X, Y)
X='c'
Y='at'
frontchar(X, 'c', "at")
X="cat"
fronttoKen - поділ заданого рядка на лексему й залишок:
fronttoKen("Цей птах летить", X, Y)
X="Цей "
Y="птах летить"
frontstr - поділ даного рядка на два рядки:
frontstr(6, "office boy", X, Y)
X="office "
Y="boy"
с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 |
Привіт |
П |
ривіт |
ривіт |
р |
ивіт |
ивіт |
и |
віт |
віт |
в |
іт |
іт |
і |
т |
т |
т |
"" |
"" |
Виконання граничних умов |
|
Завдання :
Зробити аналіз роботи програми:
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).
Зробити аналіз роботи програми:
domains
y=string
x=integer
predicates
dl(y,x)
clauses
dl(Y,X):-str_len(Y,X).
Зробити аналіз роботи програми:
predicates
s(string)
dl(string,integer)
clauses
s(“hkkkk”).s(“fhashsjajkhdk”).s(“sd”).
dl(X,Y):-s(X),str_len(X,Y).
Зробити аналіз роботи програми:
s(“LOTUS123”). podstr(N,Z,X,Y):-s(Z),frontstr(N,Z,X,Y).
