Вход/Регистрация
Prolog
вернуться

Неизвестно

Шрифт:

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

вывсемью( F)

с помощью которой это достигается, приведена на рис. 6.3.

вывсемью( семья ( Муж, Жена, Дети) :-

nl, write( родители), nl, nl,

вывчленсемьи( Муж), nl,

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

write( дети), nl, nl,

вывчленсемьи( Дети).

вывчленсемьи( членсемьи( Имя, Фамилия, дата( Д, М, Г), Работа) ) :-

tab(4), write( Имя),

tab(1), write( Фамилия),

write( ', дата рождения'),

write( Д), tab( 1),

write( M), tab( 1),

write( Г), write( ','),

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

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

вывсписчлсемьи( [Р | 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, термы которого имеют форму

  • Читать дальше
  • 1
  • ...
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: