Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
10
Добавлен:
17.12.2023
Размер:
58.18 Кб
Скачать

Задание 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 и выводит его на экран.