Cuestiones de la práctica 3.



1.- ¿Que entiende que hace un programa en CLIPS?
-Clips representa un entorno completo para el desarrollo de los sistemas expertos; incluye un editor de programas y herramientas de depuración.
2.- ¿Qué entiende por un programa dirigido por datos? ¿que diferencia existe con respecto a la programación convencional?
- Un programa (sistema experto) basado en reglas, en el cual son los datos o también llamado hechos los que estimulan la ejecución del programa a través del motor de inferencia. -La principal diferencia es que en los lenguajes pro cedulares la ejecución puede darse sin datos, mientras que en CLIPS estos son necesarios.
3.- ¿Cuales son los elementos básicos del sistema CLIPS?
- Los tres elementos básicos son: Tipos primitivos de datos, funciones y constructores.
4.- ¿Que diferencia substancial existe entre las primeras y las ultimas versiones de CLIPS?
- En las primeras versiones, CLIPS sólo tenia capacidad para representar reglas y hechos. Sin embargo, en las versiones mas modernas es posible incluir en las cláusulas de las reglas objetos, es posible utilizar los objetos sin necesidad de usar las reglas.
5.- Indique algunos sistemas operativos desde los que es posible ejecutar el entorno CLIPS.
- CLIPS funciona en Windows, DOS, Unix...
6.- Indique las ordenes de entrada y salida a CLIPS desde el sistema operativo MS-DOS.
- Para entrar en el programa se tiene que estar en el PATH donde se encuentre el programa una vez allí se escribe la palabra CLIPS seguido de Intro.
Para salir se utiliza la orden (exit).
7.- Indique cuales son los elementos básicos de programación dentro del entorno de CLIPS. 
-Clips proporciona tres elementos básicos, estos son: tipos primitivos de datos, funciones y constructores.
8.- Enumere y describa los tipos primitivos de datos con que trabaja CLIPS.
- Los tipos primitivos de datos son números enteros, números en punto flotante, símbolos, cadenas, direcciones externas, direcciones de hechos, nombres de instancias y direcciones de instancias.
Numero entero: Es un número formado por dígitos entre 0 y 9.
Número en punto flotante: Un número en punto flotante se compone de dígitos entre 0 y 9, un punto decimal (.), un signo (+ o -) y, opcionalmente, un carácter (e) para la notación exponencial con su correspondiente signo.
Símbolo: Es una secuencia de caracteres ASCII imprimibles. El símbolo acaba con un delimitador.
Cadena de caracteres: Conjunto de caracteres que comienzan con una doble comilla ", y va seguida por cero o mas caracteres imprimibles y finaliza con doble comilla.
Dirección externa: Es la dirección de memoria de una estructura de datos externa que devuelve una función escrita en un lenguaje como C ó ADA y que ha sido integrada en CLIPS.
Direcciones de hechos: Son aquellas que hacen referencia por la posición al hecho (que es una lista de valores atómicos).
Direcciones de instancias: Son aquellas que hacen referencia a una instancia por su posición.
Nombres de instancias: Son objetos consistentes en ejemplos específicos de clases.
9.- Señale la diferencia entre un símbolo y una cadena de caracteres.
Los símbolos esta encerrados entre delimitadores (), mientras que las cadenas van encerradas entre dobles comillas "".
10.- Indique cuales son los delimitadores que pueden usarse para terminar la representación de un símbolo.
- Cualquier carácter no imprimible ASCII, incluyendo espacios, tabuladores, retornos de carro, saltos de línea, una doble comilla, los paréntesis de apertura ( y cierre ), un símbolo &, una barra vertical |, un símbolo menor <, y una tilde ~, punto y coma ; que aunque se usa para comenzar un comentario también actúa como delimitador.
11.- Indique la importancia de los caracteres "?" y "$". Indique la posibilidad de utilizarlos dentro de un símbolo.
- El carácter ? y la secuencia de caracteres $ están reservadas para representar las variables en CLIPS y no pueden situarse al comienzo de un símbolo, aunque un símbolo puede contener estos caracteres.
12.- Indique la importancia del uso de paréntesis para la definición de un hecho.
- Los paréntesis son aquellos que se usan como delimitadores.
13.- Establezca la diferencia entre tipo de dato, campo, valor y variable. Describa un ejemplo indicando cada uno de estos términos.
- La diferencia que hay entre ellos es que los campos son zonas de memoria donde se almacena un valor, los valores son los datos introducidos y las variables son un lugar simbólico donde se almacena un valor.
por ejemplo en el lenguaje c seria:
struct nodo // esto es el tipo de dato.
{
int inf; // esto es un ejemplo de campo inf
}
main()
{
struct nodo pepe; // pepe seria la variable.
pepe.inf=3;
}
14.- ¿Que diferencia existe entre un valor de campo simple y un valor multicampo? Describa un ejemplo.
-Los valores de campo simple, son aquellos que tienen un solo campo para almacenar un valor. Los valores multicampo son aquellos que poseen mas de un campo para almacenar valores. 
Valor de campo simple: (hola)
Valor de campo múltiple: (hola mundo 23)
15.- Establezca la diferencia entre función y orden en CLIPS. Describa algunos ejemplos.
-Usaremos la definición de función para referirnos a funciones que devuelven un valor mientras que usaremos la denominación de ordenes para referirnos a funciones que realizan una o mas acciones y no devuelven ningún valor.
Ejemplos:
De orden:  (retract) 
De función: (5 (-2 4))
16.- ¿Que diferencia existe entre las funciones definidas por el usuario mediante el constructor deffunction y las funciones escritas en otros lenguajes, como ejemplo C, y enlazadas con CLIPS?
- La diferencia es que al declarar una función con deffunction es que esta (la declarada) trabaja en modo interprete.
17.- ¿Que son funciones genéricas?
Las funciones genéricas son aquellas que permiten que se ejecute diferentes partes de código dependiendo de los argumentos que se pasen a las mismas. Estas se definen mediante los constructores defgeneric y defmethod.
18.- ¿Explique la rotación de las funciones en CLIPS y describa un ejemplo?
Se escribe de la siguiente forma, entre paréntesis y separadas pos espacios: (nombre función argumento) 
Ejemplos:
(* 8 3 2)
(+ 3 4 5 9)
(- 2 (* 6 3) 6 9 2 1)
19.- ¿Que diferencia existe entre funciones y expresiones en CLIPS? Escriba un ejemplo.
- Mientras que una función se refiere a una parte de código ejecutable identificado por el nombre de una función, una expresión se refiere a una funcione en la que se especifican los argumentos.
Ejemplo de función: (*)
Ejemplo de expresión: (* 8 3 1)
20.- Enumere los diferentes constructores con que cuenta CLIPS.
En Clips se utilizan los siguientes constructores: defmodule, defrule, deffacts, deftemplate, defglobal, deffunction, defclass, definstances, defmessagehanders, defgeneric y defmethod. Un constructor va encerrado entre parentesis.
21.- Indique que formas hay de incluir comentarios dentro del código escrito en clips. Describa varios ejemplos.
Para comentarios en CLIPS se pueden realizar de dos formas usando (;) y el comentario sería todo lo que hay detrás de este hasta el salto de línea, y la otra forma es usando una cadena de comentario dentro del constructor.


Ejemplo: 
(defrule silla "Ejemplo de la silla"
(tiene persona encima)
=>
(assert (tiene pata_silla rota)))

Ejemplo:
(defrule mesa ; Ejemplo de la silla
(tiene persona encima)
=>
(assert (tiene pata_silla rota)))


Volver a la pagina anterior
Cerrar Ventana