Инструменты пользователя

Инструменты сайта


examination:flp:question63

Содержание

predicates

Если в разделе clauses программы на Прологе вы описали собственный предикат, то вы обязаны объявить его в разделе predicates (предикатов); в противном случае Пролог не поймет, о чем вы ему «говорите». В результате объявления предиката вы сообщаете, к каким доменам (типам) принадлежат аргументы этого предиката.

Предикаты задают факты и правила. В разделе же predicates все предикаты просто перечисляются с указанием типов (доменов) их аргументов. Эффективность работы Пролога значительно возрастает именно из-за того, что вы объявляете типы объектов (аргументов), с которыми работают ваши факты и правила. Как объявить пользовательский предикат

Объявление предиката начинается с имени этого предиката, за которым идет открывающая (левая) круглая скобка, после чего следует ноль или больше доменов (типов) аргументов предиката: predicateName(argument_type1 OptionalName1,

 argument_type2 OptionalName2,..,
 argument_typeN OptionalNameN)

После каждого домена (типа) аргумента следует запятая, а после последнего типа аргумента - закрывающая (правая) скобка. Отметим, что, в отличие от предложений в разделе clauses, декларация предиката не завершается точкой. Доменами (типами) аргументов предиката могут быть либо стандартные домены, либо домены объявленные вами в разделе domains. Можно указывать имена аргументов OptionalNameK - это улучшает читаемость программы, и не сказывается на скорости ее исполнения, т. к. компилятор их игнорирует. Имена предикатов

Имя предиката должно начинаться с буквы, за которой может располагаться последовательность букв, цифр и символов подчеркивания. Регистр букв не имеет значения, однако мы не советуем вам использовать заглавные буквы в качестве первой буквы имени предиката. Имя предиката может иметь длину до 250 символов.

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

Таблица 1. Символы, используемые в именах предикатов в Прологе

Название символов	Примеры символов
Заглавные буквы	А, B, ..., Z
Строчные буквы	a, b ..., z
Цифры	0, 1, ..., 9
Символ подчеркивания	_

Имена предикатов и аргументов могут состоять из любых комбинаций этих символов при условии, что вы подчиняетесь правилам построения соответствующих имен. В таблице 2 приведены корректные и некорректные имена предикатов.

Таблица 2. Имена предикатов в Прологе

Корректные имена предикатов	Некорректные имена предикатов
Fact	[fact]
is_a	*is_a*
has_a	has/a
PatternCheckList	Pattern-Check-List
choose_Menu_Item	Choose Menu Item
PredicateName	Predicate<Name>
first_in_10	>first_in_10

Агументы предикатов

Аргументы предикатов должны принадлежать доменам, известным Прологу. Эти домены могут быть либо стандартными доменами, либо некоторыми из тех, что вы объявляли в разделе доменов.

Рассмотрим несколько примеров.

1. Если предикат my_predicate(symbol, integer) объявлен в разделе predicates следующим образом:

 predicates
    my_predicate(symbol,integer)

то вам не нужно в разделе domains декларировать домены его аргументов, т.к. simbol и integer - стандартные домены. Однако если этот же предикат вы объявите так:

 predicates
    my_predicate(name,number),

то необходимо объявить, что name (символический тип) и number (целый тип) принадлежат к стандартным доменам symbol и integer:

 domains
    name=symbol
    number=integer
 predicates
    my_predicate(name,number)

2. Следующий фрагмент программы показывает несколько различных объявлений доменов и предикатов:

 domains
    person,activity=symbol
    car,make,color=symbol
    mileage,years_on_road,cost=integer predicates
    likes(person,activity)
    parent(person,person)
    can_buy(person,car)
    car(make, mileage,years_on_road,color,cost)
    green(symbol)
    ranking(symbol,integer)

Этот фрагмент сообщает следующую информацию об этих предикатах и их аргументах: предикат likes имеет два аргумента (person и activity), причем они оба принадлежат домену symbol (это означает, что их значениями являются идентификаторы, а не числа); предикат parent имеет дна аргумент (person), причем каждый из person относится к домену symbol; предикат can_buy имеет дна аргумента (person и car), которые относятся к типу symbol; предикат саr имеет 5 аргументов: make и color относятся к домену symbol, a mileage, years_on_road и cost - к домену integer; предикат green имеет один аргумент типа symbol; нет необходимости декларировать этот тип аргумента, т. к. он относится к стандартному домену symbol; предикат ranking имеет два аргумента, каждый из которых принадлежит к стандартному домену (symbol и integer), поэтому декларировать типы этих аргументов не требуется.

project

говнопромт

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

· Параметры выходного файла, который вы строите, таких как целевой тип (приложение или библиотека динамической компоновки), в качестве целевой платформы (32-битная Windows, 32-битных ОС / 2 часов, и т.д.), интерфейса стратегии (VPI, Easywin, Textmode), и так далее;

· Средства - компилятор, компоновщик, и так далее - необходимые для создания указанного целевого файла, а также их параметры; · Набор файлов исходного кода.

· Набор исходных файлов ресурсов.

Информация для построения каждого отдельного проекта хранятся в файле проекта (. ВПР или. PRJ файлов).

port_byte

Чтение или запись байта из или в порт Замечания

(i, o) port_byte связывает значение для байта в порт ввода / вывода PortNo.

(i, i) Отправляет значения для портов ввода / вывода PortNo.

examination/flp/question63.txt · Последние изменения: 2014/01/15 08:17 (внешнее изменение)