12

Click here to load reader

Lab rab 11

  • Upload
    sdoamti

  • View
    390

  • Download
    2

Embed Size (px)

DESCRIPTION

лабораторная работа по ИИС

Citation preview

Page 1: Lab rab 11

Лабораторная работа №1

Тема: Разработка прототипа экспертной системы.

Цель: научится создавать DLL библиотеки на языке Visual Prolog и обращаться к ним из других языков программирования.

Page 2: Lab rab 11

Создание прототипа экспертной системы будет включать два этапа:

• Создание DLL библиотеки на Visual Prolog 5.2, где будет происходить экспертный вывод.• Создание интерфейса на языке С#, с

подключением библиотеки.

Page 3: Lab rab 11

Создание элементарного проекта.

Создадим библиотеку, где будет происходить вывод сообщения «Hello Prolog» и подключимся к ней из MS Visual Studio.

Page 4: Lab rab 11

Создаем проект «Project -> New project», на экране отображается окно, предоставляющее

возможность задать параметры проекта.

Page 5: Lab rab 11

На Вкладке «Target» необходимо задать значения следующих полей:

Page 6: Lab rab 11

• платформа(«Platform»), в нашем случае, это 32-х разрядная версия Windows;

• стратегия графического интерфейса(«UI Strategy»), в примере я буду использовать консоль(«Textmode»);

• тип приложения(«Target Type»), выбираем тип «dll»;

• основная программа(«Main Program»), определяет компилятор какого языка будет использоваться для построения исполняемых фалов (в нашем случае – «Prolog»).

Page 7: Lab rab 11

Имена экспортируемых библиотекой функций должны быть записаны в секции EXPORTS файла определения модуля. Для этого используем кнопку «New» в менеджере проекта, и выбираем на диске данный файл test.def.

Page 8: Lab rab 11

В приведенном примере файл определения модуля, был создан автоматически Visual Prolog, но в секцию EXPORTS было добавлено имя функции «test»:

LIBRARY testCODE PRELOAD MOVEABLE DISCARDABLEDATA PRELOAD SINGLE HEAPSIZE 1024EXPORTStest

Page 9: Lab rab 11

Исходный код программы будет выглядеть следующим образом:

include "test.inc"global predicates procedure test( string, string ) - ( i, o ) language stdcallclauses test( A, B ) :- write( A ), B = "hello Prolog" ,

write (B). goal !.

Page 10: Lab rab 11

Создание интерфейса на языке С#, с подключением библиотеки.

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Runtime.InteropServices; namespace pr_write_hello{ class Program { [DllImport("test.dll")] static extern void test(string s, string str); static void Main(string[] args) { string str=""; test("Hello C# - ", str ); Console.ReadKey(); } }}

Page 11: Lab rab 11

using System.Runtime.InteropServices – используется для подключения сервисов взаимодействия с операционной системой.

Функция которая вызывается из DLL: [DllImport("test.dll")];

static extern void test(string s, string str);

PS:Если библиотека лежит в путь к проекту\bin\Debug, то в DllImport пишут только наименование библиотеки. Также можно полностью прописать путь к библиотеке: путь к библиотеке\\название_бибилотеки.dll

Page 12: Lab rab 11

Результат после запуска программы: