Поскольку иных реально доступных языков, кроме Пролога, для реализации логического программирования не существует, то этот же курс можно назвать (как часто и делают) «Язык программирования Пролог».
Способ изучения Пролога в форме профильного курса в определенной мере зависит от того, были ли прежде учащиеся знакомы с элементами Пролога в ходе изучения базового курса. Если ответ положителен, то учащиеся знакомы в общих чертах с элементами логики и схемой Пролог-программы, понятием базы знаний. В любом случае профильный курс должен содержать большую часть тем, составляющих язык Пролог, но методика их изучения должна учитывать вышесказанное обстоятельство. Как и при изучении любого языка программирования, будет правильным регулировать уровень изложения уровнем разбираемых задач.
Системы программирования, с которыми приходится работать имея дело с Прологом, могут значительно отличаться друг от друга. В этом плане выделяется Турбо Пролог, идеологические расхождения которого со стандартом языка особенно заметны. Для обучения можно рекомендовать Arity-Prolog. В любом случае изложение материала рекомендуется вести в рамках стандарта, подчеркивая особенности и различия конкретной системы программирования.
При планировании курса учитель должен исходить из отпущенных на него часов. Возможно несколько вариантов: ознакомительный 34-часовой курс, более полный 68-часовой или еще больший, носящий характер интегрированного курса (например, с классической логикой и/или математической логикой). Ниже представлены варианты такого планирования.
Далее следуют рекомендации по изучению отдельных тем (в той последовательности, в которой обычно изучают Пролог, хотя некоторые темы и допускают перестановку).
Тема «Введение в Пролог»
В этой теме уместно (в лекционной форме) напомнить учащимся основные принципы обработки данных в информатике. Еще раз прозвучит и будет подкреплена аргументами мысль о том, что операторная часть языков программирования, составляющая основу Паскаля, Бейсика и других языков хоть и важна, но не менее важно представление данных, подвергаемых обработке — входных, выходных и вспомогательных, используемых внутри программ. Невозможно эффективно обрабатывать информацию, не располагая разветвленными структурами данных; эффективность решения задачи во многом связана не только с операторной частью программы, но и с тем, насколько умело структурированы данные.
Тем не менее классические языки программирования требуют от программиста полностью описать, в виде цепочки операторов, порядок обработки информации. Однако это не единственный путь; уже давно реализуются попытки поручить воспроизводство логических рассуждений системной программе (т. е. с внешней стороны, самому компьютеру), а за человеком оставить лишь формулировку задания. Подведите учащихся к мысли: главная особенность языка Пролог состоит в том, что он является не столько языком для записи алгоритмов, сколько языком для описания данных и логики их обработки.
Материалы для этой темы можно найти в предисловии к большинству учебников по Прологу, а также в журнальных статьях, указанных в списке литературы. Если учащиеся уже изучали элементарное введение в Пролог в базовом курсе, то беседа эта может быть сведена к напоминанию основных принципиальных позиций и показу нескольких программ на Прологе. Если нет, то после общего разговора приводим элементарные программы на Прологе, не упоминая ни о каких формальных правилах их построения. Такие программы включают два-три факта и один вопрос, ответ на который, с точки зрения учащихся, очевиден. При этом подчеркните: очевидность ответа для человека означает, что его мозг выполнил некую (пусть и очень простую) программу. Если решать задачу на Паскале, то эту программу придется написать человеку, если же решать ее на Прологе, то сопровождающая его системная программа эту прикладную программу напишет сама. Как она это сделает — вопрос «на потом».
Еще одна важная мысль, которая прозвучит в этой теме, такова: чтобы система могла сама делать логические выводы, исходная информация должна быть чем-то большим, чем совокупность Данных. Эта информация включает связи между входящими в нее элементами. Такая информация — уже не просто данные, а элементарные знания. В связи с этим необходимо ввести элементарные представления о базе знаний, отталкиваясь от противопоставления с хорошо известным учащимся понятием базы данных. База знаний включает информацию о связях между объектами и состоит из фактов и правил, в то время как база данных ограничивается только фактами. Примеры элементарных баз знаний легко найти в Указанных в списке литературы пособиях.
Тема «Факты. Предикатная форма представления фактов.
Базы данных Пролога. Простые запросы»
Эту тему уместно начать с изучения основ логики, на которой базируется Пролог. На примерах покажите, что такое высказывание (суждение) и то, что всякое высказывание может быть истинным или ложным. Следует дать понятие «утверждение» — суждение, которое требуется доказа/ь или опровергнуть. Другие вопросы математической логики в рамках темы не рассматриваются.
При работе над понятием «факт» следует обратить внимание на то, что в программах на Прологе под фактами понимаются утверждения, истинность которых подразумевается. Принятую в языке предикатную форму записи следует отработать на прямых и обратных примерах, начиная переводом с Пролога на естественный язык. Рекомендуется на примере определенного сюжета (небольшого рассказа, стихотворения) построить базу данных и задать соответствующие вопросы (запросы). В зависимости от поставленного вопроса в сюжете необходимо научиться определять имена фактов, количество и назначение его аргументов. Считается, что базы данных с разными именами предикатов у фактов являются предпочтительными на первоначальном этапе изучения материала. Например, составив базу данных по известному стихотворению «Дом, который построил Джек» [3, т. 2, с. 227], можно определить наличие в ней тех или иных фактов. Достаточно быстро информация, получаемая от системы только такого рода, перестает быть интересной и для получения более разнообразной информации потребуется ввести понятие переменной.
Базы знаний, факты которых содержат одинаковые имена предикатов, рекомендуется использовать позднее, — например, при рассмотрении вопросов, связанных с организацией поиска на запрос. Ситуацию, когда этот поиск завершился удачно, можно прокомментировать как работу логической связки ИЛИ, напомнив соответствующую таблицу истинности.
Параллельно с изучением языка происходит знакомство с системой программирования. Рассматриваются ее особенности, правила записи текстов программ, приемы их редактирования, способы записи и считывания на внешние носители организации запросов.
Тема «Составные запросы. Правила.
Базы знаний Пролога»
Изучение темы можно начать с упоминания (знакомства) и приведения соответствующей таблицы логической операции И, которая в учебнике [34] трактуется как одновременная истинность нескольких высказываний. При организации запросов к базе данных на Прологе соответственно можно проверить присутствие или отсутствие нескольких фактов одновременно. Такой запрос получил название составного запроса. При работе с конкретной базой данных от составного запроса можно перейти к такому важному понятию, как правило. Например, пусть имеется база данных:
летает(самолет).
летает(лебедь).
летает(воробей).
имеет_перья(лебедь).
имеет_перья(воробей).
Используя переменную, можно задать такой вопрос: «Кто (что) летает и имеет перья?» На Прологе это будет составной запрос:
?- летает(X),имеет_перья(X).
С другой стороны, объект, обладающий таким свойством, называется птицей. Поэтому можно сформулировать утверждение, обладающее большей общностью, чем один факт, а именно правило:
птица(X):- летает(X),имеет_перья(X).
Добавление этого правила к базе данных позволит задавать не составные, а простые вопросы, типа «Птица ли самолет?» или «Кто является птицей?».
Умение записывать правила на Прологе является одним из фундаментальных. При его отработке рекомендуется первоначально правило, записанное на Прологе, перевести на естественный язык, а затем с естественного языка на Пролог. Упражняясь в записи правил с естественного языка, необходимо научиться определять имя предиката, количество и назначение его аргументов.
Базы знаний, состоящие из фактов и правил, позволяют рассмотреть более широкий класс задач. При их решении следует обратить внимание на формулировки, где в определениях правил в качестве союза и нередко встречаются синонимы: однако, но. В некоторых случаях при составлении правил может появиться необходимость воспользоваться логической операцией НЕ (отрицание). Поэтому следует описать и показать на примерах работу соответствующего встроенного предиката.
Тема «Термы Пролога (данные): константы, переменные, составные термы (структуры). Работа Пролога: сопоставление, поиск в базе знаний, механизм возврата. Управление работой Пролога.
Встроенные предикаты»
Если в предыдущих темах рассматривались вопросы содержательного характера, то данная тема имеет формализованный характер. В ней подробно рассматриваются механизмы поиска ответа на запрос и его управления.
Соответствующий материал имеет более теоретический, чем практический, характер. Данные, с которыми работает Пролог, можно рассмотреть в соответствии со схемой, изображенной на рис. 15.13.

Рис. 15.13. Схема данных Пролога
Пролог — один из немногих интернациональных языков. В качестве литер, с помощью которых составляются термы, могут использоваться любые символы алфавита, в том числе и национального. Как это часто бывает, ограничения на использование тех или иных национальных алфавитов зависят от конкретной реализации языка (системы программирования).
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 |


