Реферат: Использование Prolog совместно с другими ЯП - текст реферата. Скачать бесплатно.
Банк рефератов, курсовых и дипломных работ. Много и бесплатно. # | Правила оформления работ | Добавить в избранное
 
 
   
Меню Меню Меню Меню Меню
   
Napishem.com Napishem.com Napishem.com

Реферат

Использование Prolog совместно с другими ЯП

Банк рефератов / Программирование

Рубрики  Рубрики реферат банка

закрыть
Категория: Реферат
Язык реферата: Русский
Дата добавления:   
 
Скачать
Microsoft Word, 236 kb, скачать бесплатно
Заказать
Узнать стоимость написания уникального реферата

Узнайте стоимость написания уникальной работы

Использование Prolog совместно с другими ЯП. Понятие Dll. Вспом ним процесс программирования в DOS . Преобразование исходного текста в машинный код включал в себя 2 процесса : компиляцию и линковку . Во время линковки в код программы помещались не то лько объявления функций и процедур , но и их полный код. В многозадачно й среде подобный подход был бы весьма расточителен , так как огромное количество функций , отвечающих з а прорисовку элементов пользовательского интерфе йса , за обращение к системным ресурсам и т.п . дублировались в каждой программе . В качестве решения возникш е й проблем ы была предложена концепция динамической комп оновки (см . рис . 1). рис 1. DLL (библиотека динамич еской связи ) – файл , выступающий в качест ве коллективной библиотеки предикатов , котор ые могут быть использованы одновременно в нескольких приложениях . Prolog способен генерировать DLL , включать DLL статически и з агружать динамически . Вызов в программе на VP процедур и фу нкций на других языках. Прежде чем вызвать про цеду ры и функции на других языках их нужн о объявить как внешний предикат , упомянув , что он осуществляется на другом языке . Пр и этом необходимо знать количество и поря док входных параметров : GLOBAL PREDICATES procedure add(integer A, integer B, integer C) – (i,i,o) language pascal Замечание : обратите внимание , что в VP явно указывается язык процедуры Передача вход ных /выходных параметров и возвращение значени й. Размер входн ых параметров определен однозначно и зависит только от объявленного типа. Выходной параметр – 32 битный указатель на область памяти , где хранится выходное значение. Следует отметить , что функции на Pascal не могут возвращать значения в формате чисел с пла вающей точкой , а функции C - структуры (но могут , ко нечно , возвращать у казатели на них ). Многочисленные декларации. Предикат VP может иметь различные комбинации входных /выходных параметров , и для каждой из них необходима отдел ьная процедура . Идентификаторы , используемые в Prolog должны сов падать с идентификаторами в библи отеке + суффикс _ X , г де X – цел ое число (порядковый номер процедуры , нумераци я начинается с 0). Если существует только од ин вариант , то суффикс отсутствует . Рассмотрим пример : GLOBAL PREDICATES subtraction(integer, integer, integer) – (i,i,o), (i,o,i), (o,i,i), (i,i,i) language C change(integer, integer) – (i,o) language C GOAL subtraction(2,2,X), write(“ 2-2=” ,X), nl, subtraction(2,Y,5), write(“ 2-5=” ,Y), nl, subtraction(Z,5,4), write(“ 5-4=” ,X), nl, subtr action(2,2,5), write(“ 2-2 равно 5” ), nl, change(5, Ch), write(Ch). Модуль , связываемый с этой про граммой должен содержать процедуры : subtraction_0 (int x, int y, int *z) *z=x-y; subtraction_1 (int x, int *y, int z) *y=x-z; subtraction_2 (int *x, int y, int z) *x=y-z; subtraction_3 (int x, int y, int z) if ((x-y)!=z)RUN_Fail(); change(int a, int *b) * b = a ; Примечание : если процедура написана на языке C , то параметры заносятся в стек в обратном порядке (после возврата значений указатель автоматически корректируется VP ), в противно м случае , параметры заносятся в стек в нормальном порядке (см . таблицу 1). Форматы объектных файлов в Win 32. Под Win 32 используется 2 форм ата объектны х файлов : OMF (объектно-модульный формат – используется , например , Borland C ++ ) и COFF (Общий объектно-файловый формат , используется , на пример , Visual C ++ ). 1. При использовании файла в формате OMF имя пред иката должно совпадать с именем функции. 2. При использовании файла в формате COFF , к имени предиката добавляется знак подчеркивания , и после символа @ указывается количество байт , добавленных в стек (наприме р , если предикат name имеет 2 целых аргумента , то он должен быть объявлен как _ name @8 (см . табли цу 1)). Установка указателя на стек. Существует д ва способа установки указателя на стек : пр и объявлении функции и при ее вызове . Так сложилось , что Pascal устанавливает указатель при объявлении функции , а С – при вызове (см . таб лицу 1). Конвертирует имена в верхн ий регистр. Порядок аргументов прямой. Устанавливает указатель на стек при о бъявлении. Необходимость конвертировать имена в формат COFF . C - - - pascal + + + stdcall + - + syscall + + - Таблица 1: вызов модулей из VP . Неавтоматиче ское обозначение внешних предикатов. Идентификатор процедуры или функции в VP не обязательно должен совпадать с идентификатором во внешнем модуле . В этом случае объявление такого предика та имеет вид : GLOBAL PREDICATES add(integer, integer, int eger) – (i,o) language c as “ _myadd@12” Эквивалентность ти пов. Большинство п ростых типов переменных в VP имеют эквиваленты в др угих языках программирования , однако размер р езервируемой для них памяти может не совп адать (см . таблицу 2). Тип переменно й Размер (Win32). char, byte 1 байт short, word 2 байт long, dword 4 байт unsigned, integer 4 байт Real 8 байт Ref 4 байт Таблица 2: размер переменных в VP . Обработка списков. Ниже приведен пример программы , преобразующей список в ма ссив , и затем вновь возвращающей данные в список . Программа ListToArray на языке С преобразует список целы х чисел в массив , записывает в стек эл ементы массива и возвращает количество элемен тов (массив и количество элементов передаются в программу как п араметры ). Преобразование списка проходит в 2 этап а : 1. Просматривается список и находится количество элементов в нем. 2. Целые числа из списк а заносятся в массив , состоящий из известн ого количества элементов. /* Program lstar_p.pro */ project "lstar" global domains ilist = integer* global predicates inclist(ilist,ilist) - (i,o) language c goal inclist([1,2,3,4,5,6,7],L), write(L). /* Program lstar_c.c */ #define listfno 1 #define nilfno 2 typedef unsigned char BYTE; void *MEM_AllocGStack(unsigned) ; typedef struct ilist BYTE Functor; int Value; struct ilist *Next; INTLIST; int ListToArray(INTLIST *List,int **ResultArray) INTLIST *SaveList = List; int *Array, len; register int *ArrP; register int i; /* количеств о элементов в списке */ i = 0; while ( List->Functor == listfno ) i++; List = List->Next; len = i; Array = MEM_AllocGStack(i*sizeof(int)); ArrP = Array; /* перемещен ие элементов списка в массив */ List = SaveList; while ( i != 0 ) *ArrP++ = List->Value; List = List->Next; i--; *ResultArray = Array; return(len); void ArrayToList(register int *ArrP,register int n, register INTLIST **ListPP) while ( n != 0 ) *ListPP = MEM_AllocGStack(sizeof(INTLIST)); (*ListPP)->Functor = listfno; (*ListPP)->Value = *ArrP++; ListPP = &(*ListPP)->Next; n--; *ListPP = MEM_AllocGStack(sizeof((*ListPP)->Functor)); /* конец списка */ (*ListPP)->Functor = nilfno; void inclist(INTLIST *InList,INTLIST **OutList) register int *ArrP, i, len; int *Array; len = ListToArray(InLi st,&Array); ArrP = Array; for ( i = 0; i < len; i++) ++*ArrP++; ArrayToList(Array,len,OutList); Вызов предикатов VP . VP способен не только вызывать предикаты , но и предоставлять их другим программам . Ниже приведен пример вызова предиката prowin_msg из программы на С : /* Program hello_p.pro */ global predicates char prowin_msg(string) - (i) language c hello_c - language c clauses prowin_msg(S,C) :- write(S," (press any key)"), readchar(C). goal prowin_msg("Hello from PDC Prolog"), hell o_c. /* Program hello_c.c */ char prowin_msg(char *); void hello_c() while ( prowin _ msg("Hello from C (press 'C')") != 'C' ) ; 2003 Pechenkin pechenkin @ pochtamt . ru www . cs . vsu . ru /~ pechenkin
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Экономическая теория

 Анекдоты - это почти как рефераты, только короткие и смешные Следующий
- У меня на работе хрен покурить дадут, выгоняют аж за территорию предприятия.
- У вас чего там, народ так о своем здоровье печется?
- Да. Я ж на пороховом заводе работаю.
Anekdot.ru

Узнайте стоимость курсовой, диплома, реферата на заказ.

Обратите внимание, реферат по программированию "Использование Prolog совместно с другими ЯП", также как и все другие рефераты, курсовые, дипломные и другие работы вы можете скачать бесплатно.

Смотрите также:


Банк рефератов - РефератБанк.ру
© РефератБанк, 2002 - 2016
Рейтинг@Mail.ru