N > 0,

                    write( *),

                    Nl is N - 1,

                    звездочки( Nl).

                звездочки( N) :-

                    N =< 80.

6. 2. 3.    Формирование термов

Предположим, наша программа имеет дело с семьями, которые представлены в виде термов так, как это сделано в гл. 4 (рис. 4.1). Тогда, если, перемен-

        родители

                том фокс, датарожд 7 май 1950, работает bbс,

                                                                        оклад 15200

                энн фокс, датарожд 9 май 1951, неработает

        дети

                пат фокс, датарожд 5 май 1973, неработает

                джим фокс, датарожд 5 май 1973, неработает

Рис. 6. 2.  Улучшенный формат вывода термов, представляющих семью.

ная F конкретизирована термом, изображенный на рис. 4.1, то цель

        write( F)

вызовет вывод этого терма в стандартной форме примерно так:

        семья( членсемьи( том, фокс, дата( 7, май,1950),

                         работает( bbс, 15200)),

                членсемьи( энн, фокс, дата( 9, май, 1951),

                         неработает),

                [членсемьи( пат, фокс, дата( 5, май, 1973),

                         неработает),

                членсемьи( джим, фокс, дата( 5, май, 1973),

                         неработает)])

Здесь содержится полная информация, однако форма представления легко может запутать, поскольку трудно проследить, какие ее части образуют самостоятельные семантические единицы. Поэтому обычно предпочитают выводить такую информацию в каком-либо формате, например так, как показано на рис. 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( ','),

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

0

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

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