120 likes | 305 Views
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:
E N D
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 Herramientasinstaladas: • Microsoft Visual Studio 2008. • Clips 6.30
GENERANDO LOS EJECUTABLES Se debe instalar el código fuente usando CLIPS 6.30 Windows SourceCodeInstaller. El códigofuente(comprimido en el archivo Projects.zip) se instala en el directorio de instalación. Incluye los proyectosCLIPSWin 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=yDt8QPHGPws
DECLARANDO FUNCIONES EXTERNAS DEFINIDAS POR EL USUARIO Existen dos opciones: • Modificar los el archivouserfunctions.cutilizandolassentenciasUserFunctions o EnvUserFunctions. • Definir la función en el nuevo archivo C/C++. DefineFunction(functionName,functionType, functionPointer,actualFunctionName);
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. El identificador PTIF puede ser utilizada antes del nombre de la funciónparahacer un “type-casting” comopuntero a unafuncióndevolviendo un entero (especialmenteparaciertoscompiladores). • 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.
EJEMPLOS • La restricciónparaunafunciónquerequiere un mínimo de tresargumentoses: "3*" • La restricciónparaunafunciónquerequiere NO MÁS de cincoargumentoses: "*5" • La restricciónparaunafunciónquerequiere POR LO MENOS tres y NO MÁS de cincoargumentos (cadauno de los cualesdebe ser un entero o float) es: "35n" • La restricciónparaunafunciónquerequiereexactamenteseisargumentos (de los cuales, el primerodebe ser un STRING, el tercero un INTEGER y los demásargumentos FLOATS) es: "66fsui"