Книга: Программирование на языке Пролог для искусственного интеллекта
6.2.3. Формирование термов
6.2.3. Формирование термов
Предположим, наша программа имеет дело с семьями, которые представлены в виде термов так, как это сделано в гл. 4 (рис. 4.1). Тогда, если, переменная F конкретизирована термом, изображенный на рис. 4.1, то цель
write( F)
вызовет вывод этого терма в стандартной форме примерно так:
семья( членсемьи( том, фокс, дата( 7, май, 1950),
работает( bbс, 15200)),
членсемьи( энн, фокс, дата( 9, май, 1951),
неработает),
[членсемьи( пат, фокс, дата( 5, май, 1973),
неработает),
членсемьи( джим, фокс, дата( 5, май, 1973),
неработает)])
родители
том фокс, датарожд 7 май 1950, работает bbс,
оклад 15200
энн фокс, датарожд 9 май 1951, неработает
дети
пат фокс, датарожд 5 май 1973, неработает
джим фокс, датарожд 5 май 1973, неработает
Рис. 6.2. Улучшенный формат вывода термов, представляющих семью.
Здесь содержится полная информация, однако форма представления легко может запутать, поскольку трудно проследить, какие ее части образуют самостоятельные семантические единицы. Поэтому обычно предпочитают выводить такую информацию в каком-либо формате, например так, как показано на рис. 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( ','),
вывработу( Работа).
вывсписчлсемьи( []).
вывсписчлсемьи( [P | L]) :-
вывчленсемьи( P), nl,
вывсписчлсемьи( L).
вывработу( неработает) :-
write( неработает).
вывработу( работает Место, Оклад) ) :-
write(' работает '), write( Место),
write( ', оклад '), write( Оклад).
Рис. 6.3. Программа, обеспечивающая вывод в формате, представленном на рис. 6.2.
- 6.2.4. Обработка произвольного файла термов
- 6.2. Обработка файлов термов
- 5. Формирование бизнеса
- 6. Формирование продукта
- 9. Формирование первого впечатления при первом контакте
- 14.4.3. Формирование ответа на вопрос "как"
- 5.1. Ввод и вывод термов
- 7.1. Проверка типов термов
- 7.2. Создание и декомпозиция термов: =.., functor, arg, name
- 14.4.2. Формирование ответа на вопрос "почему"
- 8. Формирование графика работы операторов
- 5.1.1. Вывод термов