КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Компиляция программы из среды Turbo-Prolog
Пример. Пример. Пример. domains list_num = integer * /* список целых чисел */ predicates num (list_num) или domains list_num = element * /* список чисел типа element */ element = integer /* тип element определен как целое*/
Список в Пролог-программе − это совокупность термов, разделенных запятыми и заключенных квадратные в скобки. ["Лена", "Петр", "Олег", "Сергей"]; [ 1, 2, 3, 6, 9, 3, 4]; [3.2, 4.6, 1.1, 2.64, 100.2]; [yesterday, today, tomorrow]; [element01] – список из одного элемента; [ ] – пустой список; G = graf ([a, b, c, d], [r(a, b), r(b, c), r(b, d), r(d, c)]) – описание графа в
Для повышения наглядности программ в Прологе предусматриваются специальные средства списковой нотации, позволяющие представлять списки не только в традиционном виде [элемент_1, элемент_2,..., элемент_N], но и в бинарной форме: [H | T], где H (Head) – это голова списка, T (Tail) – хвост или окончание списка, а знак «|» служит разделителем. Например, список [a, b, c, d] может быть записан следующими способами: · [a] | [b, c, d]; · [a, b] | [c, d]; · [a, b, c] | [d]; · [a, b, c, d] | [ ]. Следует отметить, что аргумент Т может быть определен рекурсивно, т.е. может сам являться списком и в свою очередь также состоять из головы и хвоста. Для ограничения рекурсии в любом списке Пролог-программе используют символ пустой список [3]. Программа вычисления суммы элементов векторов X и Y, представленных в виде списков: X = (x1, x2,..., xN) и Y = (y1, y2,..., yN).
domains vector = integer* predicates product (vector, vector, integer) goal product ([1, 2, 3], [7, 8, 9], Rez), write ("Rez = ", Rez). clauses product([ ], [ ], 0). product ([X | Xs], [Y | Ys], S):- product (Xs, Ys, Sp), S = X + Y + Sp.
Поясним работу программы. Рекурсивное правило описывает отсроченные вычисления (табл. 3.2). После рекурсивного вызова остается невыполненным хвост правила, конец которого помещается в стек до тех пор, пока не произойдет сопоставление с первым вариантом правила. После того как это произойдет, частичная сумма Sp получит значение 0, и все накопленные в стеке хвостовые вычисления будут выполнены в обратном порядке. Таблица 3.2.
3.7. Вызов внешних функций из Пролог-программы и интерфейс Вызов внешних функций из Пролог-программы продемонстрируем на примере реализации интерфейса с программой, написанной на языке программирования Borland C. Основная программа на языке Турбо-Пролог [3] компилируется из среды в OBJ-файл. Во всех глобальных именах должен стоять предварительный символ подчеркивания. Описание внешней функции, которая будет вызвана из основной программы, имеет вид: _имя_функции() – language c.
Дата добавления: 2014-12-29; Просмотров: 641; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |