вывработу( Работа).

        вывсписчлсемьи( [ ]).

        вывсписчлсемьи( [Р | L]) :-

                вывчленсемьи( Р), nl,

                вывсписчлсемьи( L),

        вывработу( неработает) :-

                write( неработает).

        вывработу( работает Место, Оклад) ) :-

                write(' работает '), write( Место),

                write( ', оклад '), write( Оклад).

Рис. 6. 3.  Программа, обеспечивающая вывод в формате, представленном на рис. 6.2.

6. 2. 4.    Обработка произвольного файла термов

Типичная последовательность целей для обработки файла F от начала до конца будет выглядеть примерно так:

        . . . , see( F), обработкафайла, sеe( user), . . .

Здесь обработкафайла - процедура, которая читает и обрабатывает последовательно каждый терм файла F один за другим до тех пор, пока не встретится конец файла. Приведем типичную схему для процедуры

        обработкафайла:

                обработкафайла :-

                        read( Терм),

                        обработка( Терм).

        обработка( end_of_file) :-   !.

                                    % Все сделано

        обработка( Терм) :-

                обраб( Терм),

                                    % Обработать текущий элемент

                обработкафайла.

                                    % Обработать оставшуюся часть файла

Здесь обраб( Терм) представляет процедуру обработки отдельного терма. В качестве примера такой обработки рассмотрим процедуру, которая выдает на терминал каждый терм вместе с его порядковым номером. Назовем эту процедуру показфайла. У нее должен быть дополнительный аргумент для подсчета прочитанных термов:

        показфайла( N) :-

                read( Терм),

                показ( Терм, N).

        показ( Терм, N) :-  !

                write( N), tab( 2), write( Терм),

                Nl is N + 1,

                показфайла( Nl).

Вот другой пример программы обработки файлов, построенной по подобной схеме. Пусть есть файл с именем файл1, термы которого имеют форму

        изделие( НомерИзд, Описание, Цена, ИмяПоставщика)

Каждый терм описывает одну строку каталога изделий. Нужно построить новый файл. содержащий только те изделия, которые выпускаются каким-то конкретным поставщиком. Поскольку поставщик в этом новом файле у всех изделий будет одинаков, его имя нужно записать только один раз в самом начале и убрать из всех остальных термов.

Вы читаете Prolog
Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату