Добавил:
Upload
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:
ЛЕКЦИЯ 12
23.11.12
Работа со строками
1. str_len(S, N)
Определяет количество символов N в строке S.
Потоки параметров:
i o (длина строки)
i i (проверить, правда ли, что длина строки такова)
o i (выдаёт строку, состоящую из N пробелов)
2. concat(S1, S2, S3)
Конкатенация строк.
S3 = S1 + S2
Потоки параметров:
i i o
i o i
o i i (так можно расщепить предложение на несколько частей)
i i i
3. frontchar(S, C, S1)
Разделяет строку S на первый символ C и остаток S1.
Потоки параметров:
i o o
o i i (к строке S1 в начало дописывается символ C)
i i o (если первый символ строки S совпадает с C, то в S1 остаток)
i o i
i i i
4. frontstr(N, S, S1, S2)
Отщепить строку из первых N символов.
5. fronttoken(S, A, S1)
От строки S отщепить атом A, и оставшаяся часть строки -- S1.
fronttoken("all student do fine", A, S1)
A = all
S1 = " student do fine"
fronttoken("848all student do fine", A, S1)
A = 848
S1 = " student do fine"
Допустимые потоки:
i o o (очевидно)
o i i
i i o
i o i
i i i
6. format
Задаёт строку формата вывода.
Подробное описание предиката:
смысл, допустимые потоки
ЗАДАЧИ
1. Предикат, который преобразует строку в список символов
str_list(S, L)
str_list("", []) :- !.
str_list(S, [H|T]) :- frontchar(S, H, S1), str_list(S1, T).
2. list_str(L, S)
Список L в строку S.
list_str([], "") :- !.
list_str([H|T], S) :- list_str(T, S1), frontchar(S, H, S1).
3. char_count(S, C, N).
char_count("", _, 0).
char_count(S, C, N) :- frontchar(S, C, S1), !, char_count(S1, C, NewN), N = NewN+1.
char_count(S, C, N) :- frontchar(S, _, S1), char_count(S1, C, N).
4. str_pos(C, S, N)
str_pos(C, S, N) :- str_list(S, L), number(S, C, N).
str_pos(C, S, 1) :- frontchar(S, C, _), !.
str_pos(C, S, N) :- frontchar(S, _, S1), str_pos(C, S1, N1), N1<>0, !, N=N1+1.
str_pos(_, _, 0).
5. str_rop(S, C, C1, S1)
Заменяет C на C1, результат -- S1.
str_rop("", _, _, "") :- !.
str_rop(S, C, C1, S1) :- frontchar(S, C, K), str_rop(K, C, C1, K2), frontcar(S1, C, K2).
23.11.12
Работа со строками
1. str_len(S, N)
Определяет количество символов N в строке S.
Потоки параметров:
i o (длина строки)
i i (проверить, правда ли, что длина строки такова)
o i (выдаёт строку, состоящую из N пробелов)
2. concat(S1, S2, S3)
Конкатенация строк.
S3 = S1 + S2
Потоки параметров:
i i o
i o i
o i i (так можно расщепить предложение на несколько частей)
i i i
3. frontchar(S, C, S1)
Разделяет строку S на первый символ C и остаток S1.
Потоки параметров:
i o o
o i i (к строке S1 в начало дописывается символ C)
i i o (если первый символ строки S совпадает с C, то в S1 остаток)
i o i
i i i
4. frontstr(N, S, S1, S2)
Отщепить строку из первых N символов.
5. fronttoken(S, A, S1)
От строки S отщепить атом A, и оставшаяся часть строки -- S1.
fronttoken("all student do fine", A, S1)
A = all
S1 = " student do fine"
fronttoken("848all student do fine", A, S1)
A = 848
S1 = " student do fine"
Допустимые потоки:
i o o (очевидно)
o i i
i i o
i o i
i i i
6. format
Задаёт строку формата вывода.
Подробное описание предиката:
смысл, допустимые потоки
ЗАДАЧИ
1. Предикат, который преобразует строку в список символов
str_list(S, L)
str_list("", []) :- !.
str_list(S, [H|T]) :- frontchar(S, H, S1), str_list(S1, T).
2. list_str(L, S)
Список L в строку S.
list_str([], "") :- !.
list_str([H|T], S) :- list_str(T, S1), frontchar(S, H, S1).
3. char_count(S, C, N).
char_count("", _, 0).
char_count(S, C, N) :- frontchar(S, C, S1), !, char_count(S1, C, NewN), N = NewN+1.
char_count(S, C, N) :- frontchar(S, _, S1), char_count(S1, C, N).
4. str_pos(C, S, N)
str_pos(C, S, N) :- str_list(S, L), number(S, C, N).
str_pos(C, S, 1) :- frontchar(S, C, _), !.
str_pos(C, S, N) :- frontchar(S, _, S1), str_pos(C, S1, N1), N1<>0, !, N=N1+1.
str_pos(_, _, 0).
5. str_rop(S, C, C1, S1)
Заменяет C на C1, результат -- S1.
str_rop("", _, _, "") :- !.
str_rop(S, C, C1, S1) :- frontchar(S, C, K), str_rop(K, C, C1, K2), frontcar(S1, C, K2).
Соседние файлы в папке Шумихин