Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
информатика-2016.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
3.37 Mб
Скачать

Язык программирования Пролог

Является представителем семейств языков логического программирования. Его особенности в сравнении с традиционными алгоритмическими языками:

  • программа на Прологе не является алгоритмом, а представляет собой запись условия задачи на языке формальной логики;

  • язык Пролог предназначен не для решения вычислительных или графических задач, а для решения логических задач, для моделирования процесса логического умозаключения человека;

  • Пролог требует особого стиля мышления программиста. Изучению Пролога должно предшествовать изучение математической логики.

Программирование на Прологе включает в себя следующие этапы:

  1. объявление фактов об объектах и отношениях между ними;

  2. определение правил взаимосвязи объектов и отношений между ними;

  3. формулировка вопроса об объектах и отношениях между ними.

Основные понятия языка:

Предикат – конструкция вида P(t, t, … t), выражающая какую-то связь между некоторыми объектами или свойствами объектов.

Факты – это предикаты с аргументами-константами, обозначающие отношения между объектами или свойства объектов, именованные этими константами.

Правила – логические формулы с заголовками и одной или несколькими подцелями-предикатами.

Вопрос – отправная точка логического вывода, происходящего при выполнении программы.

Пример 1.

В базе знаний используются два предиката: нравится и носит; и одно правило – крутойпарень.

Определим факты:

нравится(сергей, рэп)32.

нравится(юрий, джаз).

носит(сергей, блейзер)33.

носит(юрий, пиджак).

Определим правило

крутойпарень(Х):-нравиться(Х,рэп),носит(Х, блейзер)

Правило трактуется следующим образом: «если Х нравится рэп и он носит блейзер, то он крутой парень».

Сформулируем вопрос

? – крутойпарень(юрий)34.

База данных сформулирует ответ «Нет».

На вопрос

? – крутойпарень(А)35.

будет получен ответ «А=сергей»

Отметим, что машина не понимает используемых в программе имен «нравиться», «носит» и т.д. Можно использовать любые другие обозначения. Для интерпретатора существенны только совпадения имен и связи между предикатами.

Список – множество объектов. Может задаваться через перечисление объектов и понятия головы и хвоста списка.

Например, в списке [X|Y] X – голова списка, Y- хвост. Хвост списка всегда является списком. Пустой список обозначается как []

Пример 2. Определение числа элементов в списке

сколько ( [ ], 0 ).

сколько ( [ A | B ], N ):= сколько (B, M), N is M+1.

сколько ( [саша, игорь, лена], X ):

Ответ Х=3.

Тесты для самопроверки

1. Одним из пяти основных свойств алгоритма является

а) информативность

б) оперативность

в) конечность

г) адекватность

д) цикличность

2. Какая каноническая (базовая) структура изображена на рисунке?

а) следование

б) выбор

в) цикл с параметром

г) цикл с предусловием

д) цикл с постусловием

3. В объектно-ориентированном программировании каждый объект по отношению к своему классу является

а) кодом

б) фрагментом

в) функцией

г) экземпляром

д) свойством

4. Переменная – это …

а) описание действий, которые должна выполнять программа

б) порядковый номер элемента в массиве

в) область памяти, в которой хранится некоторое значение

г) законченное минимальное смысловое выражение на языке программирования

д) служебное слово на языке программирования

5. Какая из приведенных фраз в языке Паскаль описывает переменную, как число с плавающей запятой?

а) Const pi = 3,14159;

б) Const число = 'плавающая';

в) Var abc : real;

г) Type a : real;

6. В каком случае завершается выполнение тела цикла Repeat..Until?

а) условие истинно

б) условие ложно

7. Сколько раз выполнится тело цикла?

a := 13 ;

b := 7 ;

for i:=a downto b do

8. Чему будет равно значение переменной а после выполнения фрагмента программы на Паскале?

а := -5;

j := 10;

k := 19;

for i:=j to k do

a:=a+1;

9. Задан одномерный массив X1, X2, … XN. Фрагмент алгоритма

определяет

а) количество отрицательных элементов

б) индекс первого отрицательного элемента

в) минимальный элемент массива

г) индекс минимального элемента массива

д) индекс последнего отрицательного элемента