
Задание 4
Написать в Turbo Prolog программу, аналогичную приведенной в листинге 4.5 (поиск элемента в списке), но для других предикатов.\
predicates
max_in_list(list(integer), integer).
clauses
max_in_list([X], X).
max_in_list([X | Xs], Max) :-
max_in_list(Xs, Max1),
Max = (if X > Max1 then X else Max1).
goal
List = [3, 8, 1, 7, 4, 12, 6, 9],
max_in_list(List, Max),
write("Максимальный элемент в списке: "), write(Max),
Nl.
2. Написать программу, которая будет находить сумму элементов в списке из целых чисел.
predicates
sum_list(list(integer), integer).
clauses
sum_list([], 0).
sum_list([X | Xs], Sum) :-
sum_list(Xs, Sum1),
Sum = X + Sum1.
goal
List = [3, 8, 1, 7, 4, 12, 6, 9],
sum_list(List, Sum),
write("Сумма элементов в списке: "), write(Sum).
3. Написать программу считывания целых чисел с терминала и занесение их в список.
predicates
read_numbers(list(integer)).
clauses
read_numbers([]).
read_numbers([X | Xs]) :-
write("Введите целое число (или пустую строку для завершения ввода): "),
read_line(Line),
(integer(Line) -> X = integer(Line); X = 0),
X \= 0,
read_numbers(Xs).
goal
write("Введите целые числа, каждое с новой строки."),
nl,
read_numbers(Numbers),
write("Список целых чисел: "),
write(Numbers).
4. Написать программу преобразования строки в список символов.
predicates
string_to_list(string, list(char)).
clauses
string_to_list("", []).
string_to_list(String, [Char | Rest]) :-
sub_string(String, 1, 1, _, Char),
sub_string(String, 2, _, 0, SubString),
string_to_list(SubString, Rest).
goal
write("Введите строку: "),
read_line(String),
string_to_list(String, CharList),
write("Список символов: "),
write(CharList).
5. Написать программу преобразование строки в список атомов.
predicates
string_to_atom_list(string, list(atom)).
clauses
string_to_atom_list("", []).
string_to_atom_list(String, [Atom | Rest]) :-
sub_string(String, Start, End, _, SubString),
atom_string(Atom, SubString),
sub_string(String, End, _, 0, NewString),
string_to_atom_list(NewString, Rest).
goal
write("Введите строку с пробелами: "),
read_line(String),
string_to_atom_list(String, AtomList),
write("Список атомов: "),
write(AtomList).
Задание 5
1 И 2. Реализовать запись и чтение символов в файл «myfile.txt», который создается на текущем диске и чтение символа из файла и вывод его на экран дисплея
predicates
write_to_file(string).
read_from_file.
clauses
write_to_file(String) :-
open("myfile.txt", write, File),
write(File, String),
close(File).
read_from_file :-
open("myfile.txt", read, File),
repeat,
get_char(File, Char),
(Char = end_of_file -> ! ; write(Char), fail),
close(File).
goal
write("Введите строку для записи в файл: "),
read_line(String),
write_to_file(String),
write("Содержимое файла 'myfile.txt': "),
nl,
read_from_file,
nl.
* сначала запрашивает у пользователя строку для записи в файл, затем записывает эту строку в файл с помощью write_to_file. Затем она читает содержимое файла с помощью read_from_file и выводит его на экран.