Documentos de Académico
Documentos de Profesional
Documentos de Cultura
FDP Preliminar 0A 2011-2
FDP Preliminar 0A 2011-2
Distribuidos cronolgicamente de la siguiente forma: Laboratorio calificado Nro 1 (12 de abril) basado en Prolog. Laboratorio calificado Nro 2 (26 de abril) basado en Prolog. Laboratorio calificado Nro 3 (17 de mayo) basado en Haskell. Laboratorio calificado Nro 4 (31 de mayo) basado en Haskell. Laboratorio calificado Nro 5 (14 de junio) basado en Smalltalk. Es casi seguro que muchos de los lenguajes mencionados son desconocidos para usted, por ese motivo la semana previa a cada laboratorio calificado se le har entrega (va Intranet) de un documento escrito, donde se explicar los fundamentos bsicos de cada lenguaje, acompaados de ejemplos y ejercicios que usted deber resolver, porque sern en base a estos, que se desarrollar el laboratorio. Por ltimo aunque el entorno del sistema operativo es bastante intuitivo, es criterio de los profesores del curso que tengan un primer contacto no solo con el sistema operativo sino tambin con los lenguajes a travs de laboratorios preliminares.
INF220LaboratoriodeFundamentosdeProgramacin
Los laboratorios preliminares tienen como finalidad familiarizarse con el ambiente en el que van a trabajar en todo el semestre y se llevar a cabo en las siguientes fechas: Laboratorio Preliminar 0A: 13 de marzo de 2012 de 2pm a 4pm. Laboratorio Preliminar 0B: 20 de marzo de 2012 de 2pm a 4pm. Laboratorio Preliminar 0C: 27 de marzo de 2012 de 2pm a 4pm.
Mi Primer programa
Para trabajar en SWI-Prolog se ha configurado la IDE de Eclipse para editar programas, consultarlos y hallar objetivos o metas, todo bajo una misma interfase. Esta primera parte tiene como objetivo familiarizarnos con esta IDE que ser su herramienta de trabajo durante los laboratorios calificados. Inicie Eclipse con la configuracin de SWI-Prolog haciendo click en el icono
Los programas pueden llegar a ser tan complejos que requieren estar separados en carpetas diferentes,ytodos ensuconjuntopasanaformarpartedeun Proyecto.Sinembargoparalos laboratoriosquellevaremosacaboenProlog,todoslosarchivoslostrabajaremosbajounsolo proyecto.Losproyectosseubicanenunreadetrabajo(workspace)queparanuestrocasoserel directorio/usr/alulab/workspace. INF220LaboratoriodeFundamentosdeProgramacin 2
INF220LaboratoriodeFundamentosdeProgramacin
Alfinaldebeobtenerunaimagensemejantealasiguiente:
Ahoracrearemosunarchivofuenteenelqueescribiremosnuestroprogramaconnombreprog1.pl Enlacarpetasrchagaclickderechoysigalasiguientesecuenciadepasos:
INF220LaboratoriodeFundamentosdeProgramacin
Ahoraescribaelsiguienteprograma:
INF220LaboratoriodeFundamentosdeProgramacin
Con la ayuda de los JP configure el interprete de Prolog en el men: Window/Preferences/ Prolog/Interpreters de forma que quede como se muestra a continuacin:
Para consultar el programa, con el mouse haga click derecho en cualquier parte del programa y elija la opcin: ProDT/Consult in Console Obtendr la siguiente pantalla:
En este punto estamos listos para llevar a cabo cualquier meta: 1.- Coloque el cursor en la parte inferior justo al lado del prompt(|:)escriba la siguiente consulta:
gusta(guillermo, cynthia).
el resultado ser:
true
INF220LaboratoriodeFundamentosdeProgramacin
porque en la base de datos hay un hecho que corresponde a la meta especificada (el primer hecho de la base de datos). 2.- Cambie la meta por esta otra:
gusta(guillermo, Que).
Con esta consulta Prolog acotar o ligar (bound) la variable Que con valores tomados de la seccin de hechos, de modo que en la comparacin (match) se tenga un xito completo. Por ejemplo, para nuestro caso si la variable Que se acota con el valor cynthia la comparacin con el primer hecho tiene xito, por tanto Prolog devuelve
Que = cynthia
Prolog intentar buscar una segunda solucin (backtracking). Para ver si tuvo xito en esta segunda oportunidad, al finalizar la primera salida coloque punto y coma (;) y presione <Enter>.
Que = cynthia ; Que = perros
Cuando Porlog no encuentra ms soluciones muestra directamente el prompt, en caso contrario puede colocar el punto y coma (;) para obtener ms soluciones. Para nuestro caso solo tenemos dos soluciones. Una vez ms, cambie la consulta y EXPLIQUE el resultado para:
gusta(cynthia, Que).
La consulta puede ser ms complicada. Por ejemplo, se puede preguntar Quin le gusta a Guillermo y (AND) que sea nia?. El operador lgico de conjuncin (AND) se denota con una coma:
gusta(guillermo, Quien), nena(Quien).
Prolog no podr responder a esta consulta por insuficiencia de datos. Cul es el hecho que se necesita aadir a la base de datos para obtener la respuesta esperada? 3.- En el directorio cuyo nombre tiene su cdigo prepare el siguiente programa con el nombre prog2.pl Primero revise la base de datos y determine sin computadora qu puede comprar Judy? qu puede comprar Kelly? quin puede comprar arreglado?, y, en general, quin puede comprar qu cosa? Indique las consultas que verifiquen sus respuestas.
INF220LaboratoriodeFundamentosdeProgramacin
7.- En el mismo directorio prepare este otro programa con el nombre prog3.pl y consulte el programa.
En este caso, se usa la variable annima (_) como el segundo argumento de la meta porque no interesa su valor particular tan solo se busca todas las personas que sean padres o madres.
INF220LaboratoriodeFundamentosdeProgramacin
La consulta ms natural sera: En esta lista, hay algn coche con el precio menor de 25000?:
coche(Fabricante,Kilometraje,Anos_de_uso,Pintado_de,Cuesta),Cuesta < 25000.
Cambie la consulta por la siguiente: En esta lista, hay algn coche con el precio menor de 25000 o un camin que cueste menos de 20000?. Escriba la clausula correspondiente. 9.- Prepare y consulte el siguiente programa prog5.pl en el directorio de trabajo:
INF220LaboratoriodeFundamentosdeProgramacin
INF220LaboratoriodeFundamentosdeProgramacin
10
Construya la meta correspondiente para encontrar al asesino. Tambin averige otros detalles sobre el asesinato. Ahora explotaremos la parte grfica de SWI-Prolog, conocida como XPCE. Escriba el siguiente programa, con nombre prog7.pl:
Importante: Los archivos (tablero-ajedrez.jpg y reina.jpg) que se adjuntan con esta gua deben estar ubicados en el directorio /home/alulab/workspace/su_codigo, si se encuentran en otro directorio debe de modificar la primera lnea del programa indicando la ruta correspondiente. Consulte el buffer y escriba como meta: ajedrez. Deber obtener la siguiente ventana:
INF220LaboratoriodeFundamentosdeProgramacin
11
Hasta aqu lo que corresponde a nuestra primera prctica de laboratorio, ahora procederemos a comprimir la carpeta que tiene nuestros programas y cuyo nombre tiene su cdigo de estudiante. En el lanzador de Ubuntu, en el lado izquierdo, elija Carpeta Personal, aparecer el Navegador de archivos cuya interfaz es bastante intuitiva y trabaja como el explorador de archivos de Windows. Lo primero que llevaremos a cabo es verificar que todos nuestros archivos (programas *.pl) que hemos creado se encuentran en el directorio que tiene como nombre nuestro cdigo. Si en caso no sea as, mueva los archivos de forma que se encuentren en el directorio deseado. Con la ayuda del navegador de archivos ubique el directorio /home/alulab/workspace/20111205/ (usted debe tener el directorio con su cdigo de alumno, recuerde que se creo al inicio), marque este directorio con el mouse y haciendo click derecho (men contextual) elija la opcin Comprimir,
y en la pestaa que indica la extensin, elija zip. Haga click en Crear y se generar un archivo comprimido con extensin zip.
Elijazip
INF220LaboratoriodeFundamentosdeProgramacin
12
Ejecute Firefox ( ), para colocar este archivo zip en el Campus Virtual de Intranet (Fundamentos de Programacin - INF220) /Buzones/Lab 0A/ en la carpeta cuyo nombre sea igual al laboratorio donde usted se encuentra ubicado: V206 | V207 | V208.
INF220LaboratoriodeFundamentosdeProgramacin
13