Variables

Variables

Podemos preguntar que le gusta a Juan y recibiremos respuestas (YES/NO)(TRUE/FALSE). Como vimos en el capitulo anterior, sin mebargo es posible hace rpreguntas mas interesantes. Podemos preguntarle a Prolog que le gusta a Juan, sin necesidad de saberlo. A Juan le gusta Algo o bien a ¿Juan le gustará X? X?-legusta(juan,X). Cuando hacemos una pregunta como esta nos gustaría que Prolog nos dijera que posibilidades hay. En Prolog no solo podemos preguntar por objetos específicos sino por objetos desconocidos mediante el uso de variables. Cuando Prolog usa una variable, la variable puede instanciarse o no instanciarse. Una variable es instanciada cuando hay un objeto que le da significado a la variable y no es instanciado cuando lo que representa la variable no se sabe aun. Prolog puede distinguir las variables de los nombres de objetos particulares porque cualquier nombre que empiece con mayúsculas es tomado como una variable. legusta(juan,X). Cuando Prolog hace una pregunta que contiene una variable, Prolog busca por todos lados los hechos para encontrar el objeto al que lavariable pudiera presentar. Por ejmplo si tenemos la siguiente base de conocimientos:   Las variables pueden tener nombreslargos siempre y cuando empiecen con mayúsculas. legusta(juan,QueLeGusta). Legusta(juan,X).X=Maria.   Prolog va a esperar si esa respuesta te satisface si es asi  esperar un enter y si no espera que escribas un ; hasta que decida si se satisface.   Cuando a Prolog se le pregunta una variable (en este caso X es inicialmente no instanciado por que no está ligada a aun valor). Prolog busca por la base de conocimiento por una afirmación que se relacione con la pregunta. Ahora bien si la variable no instanciada aparece como un argumento Prolog le permitirá relacionarse  con cualquier argumento que este en esa posición y decimos que esta instanciada. Prolog busca atreves de la base de acuerdo a como está escrito en el archivo. De arriba para abajo, como se muestra en la figura.  Corrobore esta informacion en la siguiente sección. (Recuerda en la version en linea el ; se sustituye por el boton next) El resultado será el siguiente:

Prolog en linea