Lab 10 – Integración de CLIPS con C++ y JAVA Integrantes: Gonzales, Cesar Cespedes, Giorgio Zuñiga, Rodrigo
GENERANDO LOS EJECUTABLES Link Oficial de descargas Clips: http://sourceforge.net/projects/clipsrules/files/CLIPS/6.30/ Debe estar instalado el programa Clips: CLIPS_6.30_Beta_Windows_Application _Installer_R3.msi Herramientas instaladas: Microsoft Visual Studio 2008. Clips 6.30
GENERANDO LOS EJECUTABLES Se debe instalar el código fuente usando CLIPS 6.30 Windows Source Code Installer. El código fuente(comprimido en el archivo Projects.zip) se instala en el directorio de instalación. Incluye los proyectos CLIPSWin y CLIPSDOS: Microsoft Visual C++ Express 2008 Borland Turbo C++ 2006
Integrando Clips 6.30 con Visual C++ 2008 http://www.youtube.com/watch?v=yDt8QP HGPws
DECLARANDO FUNCIONES EXTERNAS DEFINIDAS POR EL USUARIO Existen dos opciones: Modificar los el archivo userfunctions.c utilizando las sentencias UserFunctions o EnvUserFunctions. Definir la función en el nuevo archivo C/C++. DefineFunction(functionName,functionType, functionPointer,actualFunctionName);
functionName: Nombre de la función que sera utilizada desde CLIPS. DefineFunction(functionName,functionType, functionPointer,actualFunctionName); functionName: Nombre de la función que sera utilizada desde CLIPS. functionType: Es el tipo del valor que será retornado a CLIPS. Puede ser:
functionPointer: Puntero a la función functionPointer: Puntero a la función. El identificador PTIF puede ser utilizada antes del nombre de la función para hacer un “type-casting” como puntero a una función devolviendo un entero (especialmente para ciertos compiladores). actualFunctionName: Es una representación del tercer argumento. Este nombre debe ser igual al tercer argumento, pero encerrada en comillas.
Adicionalmente a DefineFunction(), se puede utilizar_ DefineFunction2(functionName,functionType,functionPointer, actualFunctionName,functionRestrictions); Los cuatro primeros argumentos son iguales a los de DefineFunction(), el quinto es un string que sirve de restricción para indicar el número y tipo de argumentos que la función de CLIPS espera. <min-args> <max-args> [<default-type> <types>*] 0 – 9: Para indicar el mínimo y máximo número de argumentos. * : Para indicar que no hay restricción en el numero de argumentos.
Los tipos de datos se presentan a continuación:
EJEMPLOS La restricción para una función que requiere un mínimo de tres argumentos es: "3*" La restricción para una función que requiere NO MÁS de cinco argumentos es: "*5" La restricción para una función que requiere POR LO MENOS tres y NO MÁS de cinco argumentos (cada uno de los cuales debe ser un entero o float) es: "35n" La restricción para una función que requiere exactamente seis argumentos (de los cuales, el primero debe ser un STRING, el tercero un INTEGER y los demás argumentos FLOATS) es: "66fsui"