Вопрос 48. Работа со списками в Прологе.
Язык Пролог является представителем семейства языков логического программирования и обладает существенными особенностями: • программа на Прологе не является алгоритмом, а представляет собой запись условия задачи на языке формальной логики (т.е. это дескриптивный, описательный язык программирования); • язык Пролог предназначен не для решения вычислительных или графических задач, а для решения логических задач, для моделирования процесса логического умозаключения человека; вычисления же и графические построения выполняются в Прологе как побочный продукт логического вывода; • Пролог требует особого стиля мышления программиста, что затрудняет изучение его теми, кто уже привык к процедурному программированию, поэтому, так называемые, практические программисты не стремятся переходить на этот язык, что мешает росту популярности Пролога. Язык Пролог – это logic programming language (язык логического программирования) или programming in logic (программирование в терминах логики). Язык Пролог описывает не процедуру решения задачи, а логическую модель предметной области задачи – некоторые факты (свойства) относительно объектов предметной области (объектов, относительно которых поставлена задача) и отношения между этими объектами (свойствами), а также правила вывода новых свойств и отношений из уже заданных. Пролог разработан в начале 70-х годов 20-го века во Франции в Марсельском университете группой специалистов во главе с Алэном Колмероэ. Появление языка связано с работами в области создания искусственного интеллекта. Идея использовать понятийную систему математической логики в языках программирования возникла впервые в начале 70-х годов. Ценность Пролога в возможности использования его как сложного и тонкого инструмента для разработки высокоспециализированных систем искусственного интеллекта. В Японии язык Пролог является главенствующим языком для создания систем искусственного интеллекта. Программирование на Прологе включает в себя следующие этапы: 4. объявление фактов об объектах и отношениях между ними; 5. определение правил взаимосвязи объектов и отношений между ними; 6. формулирование вопросов об объектах и отношениях между ними. На практике часто встречаются задачи, связанные с перечислением объектов. В некоторых случаях при решении задач важно сохранять информацию об уже сделанных шагах решения, чтобы их не повторять. Для решения таких задач в языке Пролог предусмотрены списки. Список можно задать перечислением элементов. Например, имена учеников класса: [саша,петя,дима,ксюша,лена]. Элементами списка могут быть не только атомы, но и функции, и вообще любые элементы, даже списки. Заранее длина списка не задается, и в ходе выполнения программы она может меняться. Альтернативный способ задания списка использует понятия головы и хвоста списка. Например, в списке [X | Y] Х - это голова списка. Y - его хвост. Хвост списка по определению также является списком. Теперь список может быть определен рекурсивно: 1) пустой список [] - список: 2) [X | Y] - список, если Y - список. Определение списка через его голову и хвост в сочетании с рекурсией лежит в основе большого числа программ, оперирующих списками. Эти программы состоят 1) из факта, ограничивающего рекурсию и описывающего операцию для пустого списка; ©2015 arhivinfo.ru Все права принадлежат авторам размещенных материалов.
|