Иван Братко - Программирование на языке Пролог для искусственного интеллекта

Тут можно читать онлайн Иван Братко - Программирование на языке Пролог для искусственного интеллекта - бесплатно полную версию книги (целиком) без сокращений. Жанр: comp-programming, издательство Мир, год 1990. Здесь Вы можете читать полную версию (весь текст) онлайн без регистрации и SMS на сайте лучшей интернет библиотеки ЛибКинг или прочесть краткое содержание (суть), предисловие и аннотацию. Так же сможете купить и скачать торрент в электронном формате fb2, найти и слушать аудиокнигу на русском языке или узнать сколько частей в серии и всего страниц в публикации. Читателям доступно смотреть обложку, картинки, описание и отзывы (комментарии) о произведении.
  • Название:
    Программирование на языке Пролог для искусственного интеллекта
  • Автор:
  • Жанр:
  • Издательство:
    Мир
  • Год:
    1990
  • Город:
    Москва
  • ISBN:
    5-03-001425-Х
  • Рейтинг:
    4.1/5. Голосов: 101
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

Иван Братко - Программирование на языке Пролог для искусственного интеллекта краткое содержание

Программирование на языке Пролог для искусственного интеллекта - описание и краткое содержание, автор Иван Братко, читайте бесплатно онлайн на сайте электронной библиотеки LibKing.Ru

Книга известного специалиста по программированию (Югославия), содержащая основы языка Пролог и его приложения для решения задач искусственного интеллекта. Изложение отличается методическими достоинствами — книга написана в хорошем стиле, живым языком. Книга дополняет имеющуюся на русском языке литературу по языку Пролог.

Для программистов разной квалификации, специалистов по искусственному интеллекту, для всех изучающих программирование.

Программирование на языке Пролог для искусственного интеллекта - читать онлайн бесплатно полную версию (весь текст целиком)

Программирование на языке Пролог для искусственного интеллекта - читать книгу онлайн бесплатно, автор Иван Братко
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

вывчленсемьи( Жена), 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. Обработка произвольного файла термов

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

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

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

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

read( Терм),

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

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

% Все сделано

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

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

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

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

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

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

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

read( Терм),

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

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

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

N1 is N + 1,

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

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

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

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

создатьфайл( Поставщик)

Например, если исходный каталог хранится в файле файл1, а мы хотим создать специальный каталог в файле файл2, содержащий всю информацию о том, что поставляет Гаррисон, тогда мы применим процедуру создатьфайлследующим образом:

?- seе( файл1), tеll( файл2), создатьфайл( гаррисон),

see( user), tell( user).

Процедуру создатьфайлможно определить так:

создатьфайл( Поставщик) :-

write( Поставщик), write( '.'), nl,

создатьостальное( Поставщик).

создатьостальное( Поставщик) :-

read( Изделие),

обработать( Изделие, Поставщик).

обработать( end_ot_file) :- !.

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

Поставщик) :- !,

write( Изделие( Ном, Опис, Цена) ),

write( '.'), nl,

создатьостальное( Поставщик).

обработать ( _, Поставщик) :-

создатьостальное( Поставщик).

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

Упражнения

6.1. Пусть f — файл термов. Определите процедуру

найтитерм( Терм)

которая выводит на терминал новый терм из f, сопоставимый с Терм'ом.

6.2. Пусть f — файл термов. Напишите процедуру

найтивсетермы( Терм)

которая выводит на экран все термы из f, сопоставимые с Tepм'ом. Обеспечьте при этом, чтобы во время поиска Термне конкретизировался (это могло бы помешать ему сопоставиться с другими термами дальше по файлу).

6.3. Обработка символов

Символ записывается в текущий выходной поток при помощи цели

put( С)

где С — символ, который нужно вывести, в кодировке ASCII (число от 0 до 127), например, вопрос

?- put( 65), put( 66), put( 67).

породит следующий вывод:

АВС

65 — ASCII-код 'А', 66 — 'В', 67 — 'С'.

Одиночный символ можно считать из текущего входного потока при помощи цели

get0( С)

Она вызывает чтение символа из входного потока, и переменная С конкретизируется ASCII-кодом этого символа. Вариантом предиката get0является get, который используется для чтения символов, отличных от пробела. Поэтому цель

get( С)

вызовет пропуск всех непечатаемых символов (в частности пробелов) от текущей позиции во входном потоке до первого печатаемого символа. Этот символ затем тоже считывается и С конкретизируется его ASCII-кодом.

В качестве примера использования предикатов, переносящих одиночные символы, давайте рассмотрим процедуру сжатие, выполняющую следующую работу: считывание из входного потока произвольного предложения и вывод его же, но в форматированном виде — все группы идущих подряд пробелов заменены на одиночные пробелы. Для простоты будем считать, что все предложения входного потока, обрабатываемые процедурой сжатие, оканчиваются точками, а слова в них отделены одно от другого одним или несколькими пробелами, и только ими. Тогда следующее предложение будет допустимым:

Робот пытался налить вина из бутылки.

Цель сжатиевыведет его в таком виде:

Робот пытался налить вина из бутылки.

Процедура сжатиебудет иметь такую же структуру, как и процедуры обработки файлов из предыдущего раздела. Сначала она прочтет первый символ, выведет его, а затем завершит обработку, в зависимости от того, каким был этот символ. Есть три альтернативы, которые соответствуют следующим случаям: символ является точкой, пробелом или буквой. Взаимное исключение этих трех альтернатив обеспечивается в программе отсечениями:

сжатие :-

get0( С),

put( С).

сделатьостальное( С).

сделатьостальное( 46) :- !.

% 46 -АSСII-код точки, Все сделано

сделатьостальное( 32) :- !,

% 32 - ASCII-код пробела

get( С),

put( С),

сделатьостальное( С).

сделатьостальное( Буква) :-

сжатие.

Упражнение

6.3. Обобщите процедуру сжатие на случай запятых. Все пробелы, стоящие непосредственно перед запятой, нужно убрать, а после каждой запятой нужно поместить единственный пробел.

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать


Иван Братко читать все книги автора по порядку

Иван Братко - все книги автора в одном месте читать по порядку полные версии на сайте онлайн библиотеки LibKing.




Программирование на языке Пролог для искусственного интеллекта отзывы


Отзывы читателей о книге Программирование на языке Пролог для искусственного интеллекта, автор: Иван Братко. Читайте комментарии и мнения людей о произведении.


Понравилась книга? Поделитесь впечатлениями - оставьте Ваш отзыв или расскажите друзьям

Напишите свой комментарий
x