Está en la página 1de 13

PONTIFICIA UNIVERSIDAD CATOLICA DEL PERU FACULTAD DE CIENCIAS E INGENIERIA

Seccin Ingeniera Informtica

GUIA PARA LOS LABORATORIOS DE FUNDAMENTOS DE PROGRAMACIN


Generales
El desarrollo de todos los laboratorios se llevar a cabo bajo el sistema operativo Linux en su distribucin ms popular y amigable: Ubuntu. La versin instalada en los laboratorios V205, V206, V207 y V208 es Ubuntu 11.10 conocida tambin como Oneiric Ocelot. Cada uno de los laboratorios calificados tienen como objetivo aprender los fundamentos bsicos de los siguientes paradigmas de programacin: Programacin Lgica Programacin Funcional Programacin Orientada a Objetos Para llevar a cabo nuestro objetivo emplearemos los siguientes lenguajes de programacin: Prolog (Interprete SWI-Prolog) Haskell (Compilador GHS) Smalltalk (Implementado en Squeak) Programacin Lgica Programacin Funcional Programacin Orientada a Objetos

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

Enestaprimeraprcticacrearemosunproyectoenlaqueescribiremosunaseriedeprogramasen Prolog,losconsultaremos(consultareslaoperacinequivalenteacompilar)yluegoinvocaremos algunasmetasuobjetivosparaverlosresultados. Creandounproyecto. Sigalasiguientesecuenciadepasos:

Escriba su cdigo de alumno

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).

Tambin explique el resultado de la siguiente consulta:


gusta(katia, 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.

Ejecute la siguiente consulta: padre_o_madre(Padre_o_madre,_).

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

8.- Nuevamente, en el mismo directorio prepare y consulte el programa prog4.pl:

Pruebe la siguiente meta:


coche(Fabricante,Kilometraje,Anos_de_uso,Pintado_de,25000).

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:

Ejecute la siguiente consulta


sumar(32, 54, Suma).

Cambie la consulta por:


multiplicar(31, 13, Producto).

INF220LaboratoriodeFundamentosdeProgramacin

10. Prepare y compile el siguiente programa prog6.pl en el directorio de trabajo

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.

Prof: Alejandro T. Bello Ruiz

INF220LaboratoriodeFundamentosdeProgramacin

13

También podría gustarte