Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
mod_int1 ШПОРЫ.docx
Скачиваний:
3
Добавлен:
20.07.2019
Размер:
40.14 Кб
Скачать
  1. Яке призначення секції Прологу – Domains. Наведіть приклади.

Домени дозволяють задавати різні імена різних видів даних, які, у противному випадку, будуть виглядати абсолютно однаково. У програмах Visual Prolog об'єкти у відносинах (аргументи предикатів) належать доменам, причому це можуть бути як стандартні, так і описані користувачем спеціальні домени. Розділ domains служить двом корисним цілям. По-перше, можна задати доменам осмислені імена, навіть якщо внутрішньо ці домени аналогічні вже наявним стандартним. По-друге, оголошення спеціальних доменів використовується для опису структур даних, відсутніх у стандартних доменах.

Іноді дуже корисно описати новий домен - особливо, коли ви хочете прояснити окремі частини розділу predicates. Оголошення власних доменів, завдяки присвоюванню осмислених імен типами аргументів, допомагає документувати описувані вами предикати.

  1. Опис та операції зі списками в Пролозі.

Список это множество элементов одного типа (одного домена). Списки принято записывать в виде последовательности элементов, разделенных знаком запятая и заключенных в квадратные скобки:

[1,3,5], [a,b,e,f], [jem,apple,jin]. Список может содержать произвольное количество элементов, и их количество может изменяться в процессе работы программы. Поэтому списки относятся к динамическим структурам. Частными случаями списка являются список, состоящий из одного элемента - [х] и пустой список - [].

Для списков базовыми операциями являются:

- выделение головы списка car([1,3,5])=1,

- выделение хвоста списка cdr([1,3,5])=[3,5],

- добавление элемента в голову списка cons(1, [3,5])=[1,3,5].

Эти три операции подчиняются следующей аксиоме:

cons(car(L), cdr(L))=L

В языке Prolog описание списка осуществляется в секции domains. Признаком списка является наличие символа * после описания типа элемента.

Примеры

domains

list=integer* список целых чисел [3,5]

l_char=char* список символов [a, f, h, d]

l_col=color* списоккрасок [red, green, yellow]

color=symbol

Все три базовые операции со списками в языке Prolog обозначаются одним символом – вертикальная черта ( | ): L=[Head | Tail].

В зависимости от ситуации, программы сопоставления и унификации самостоятельно выполняют операции разделения списка на голову Head и хвост Tail или добавления элемента Head к списку Tail.

  1. Яка ознака змінних в Пролозі? Що таке анонімні змінні, вільні та зв’язані змінні?

likes (bill, What).

Необхідно відзначити, що другий об'єкт - What-починається з великої літери, тоді як перший об'єкт - bill - ні. Це відбувається тому, що bill - фіксований, постійний об'єкт - відома величина, a What - змінна.

Змінні завжди починаються з великої літери або знака підкреслення!

Змінні Прологу дозволяють записувати загальні факти та правила, а також задавати загальні питання.

Поки змінна не отримає свого значення, вона називається вільною, а після отримання - зв’язаною. Але вона залишається зв’язаною тільки на час, який необхідний для одержання одного розв’зку на запит, потім Пролог звільнює її, повертає і шукає альтернативні розв’ язки.

Анонімні змінні використовуються у випадку, коли потрібна часткова інформація із запиту. За допомогою анонімних змінних ігноруються не потрібні значення.

Анонімна змінна може бути використана на місці будь-якої змінної. Відмінність полягає в тому, що анонімна ніколи не отримає значення.

Наприклад, якщо вам потрібна інформація тільки про батьків, тоді можна використати запит

Goal:parent(Who, _),

де символ _ позначає анонімну змінну.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]