;;;;;;;;;;;;;;;;;;;;;;;;;;;; PRACTICA-1.TXT ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Expresiones aritm\'eticas. Listas. Expresiones booleanas. Para facilitar el trabajo divide la pantalla en dos ventanas mediante CTRL-X 2 y, en una de ellas, crea un buffer para trabajar con el int\'erprete, mediante ESC-X run-scheme ENTER. Utiliza CTRL-X O para saltar de una a otra ventana, mientras haces los ejercicios. ***************************************************************************** * EJERCICIO 1: * ***************************************************************************** Calcular, usando el int\'erprete, el valor de las siguientes expresiones: 3 + 4 ;;;[1a] 15 / 7 ;;;[1b] (3 + a1) * a1 ;;;[1c] (donde a1 vale 6) 3 * (5 + 12 / 6) / (4 + (3 * a1)) ;;;[1d] (donde a1 vale como antes) 5 + ((b1 / 2) * (a1 / 2)) + 3 * (4 + 5) ;;;[1e] (donde a1 vale como antes y b1 vale 57*46) ***************************************************************************** * EJERCICIO 2: * ***************************************************************************** |----------------------------------------------------------------------------| |----------------------------------------------------------------------------| | NOTA: En lo que sigue, no ser\'a necesario teclear en el int\'erprete | | expresiones que ya aparezcan en este fichero. Para ello primero debes | | pasar a modo scheme, tecleando (con el cursor en este buffer) | | ESC-X scheme-mode ENTER. Luego, cada vez que quieras evaluar una expresi\'on | | que ya est\'a escrita en este fichero, no tendr\'as que teclearla de nuevo | | en el buffer del int\'erprete. Bastar\'a que coloques el cursor al | | principio de la expresi\'on y teclees CTRL-C CTRL-E. | | Observar\'as que en la ventana de scheme aparece el valor de la | | expresi\'on. Al usar CTRL-C CTRL-E recuerda que la expresi\'on que | | deseas evaluar debe comenzar con par\'entesis y el primero de ellos debe | | ocupar la PRIMERA COLUMNA DE LA IZQUIERDA. | |----------------------------------------------------------------------------| |----------------------------------------------------------------------------| Evaluar, razonando la respuesta, las siguientes expresiones: (cons 1 ()) ;;;[2a] (cons 2 (cons 1 ())) ;;;[2b] (define a2 'juan) ;;;[2c] (define b2 (cons 2 (cons 1 ()))) ;;;[2d] (cons a2 b2) ;;;[2e] (juan 2 1) ;;;[2f] (define c2 (cons a2 b2)) ;;;[2g] (cons c2 b2) ;;;[2h] ***************************************************************************** * EJERCICIO 3: * ***************************************************************************** |----------------------------------------------------------------------------| |----------------------------------------------------------------------------| | NOTA: Como has visto en el ejercicio anterior, no es necesario escribir las| | expresiones en el int\'erprete. Puedes escribirlas en este buffer debajo | | de cada apartado y evaluar lo que escribes con CTRL-C CTRL-E, viendo la | | respuesta en el buffer de Scheme. As\'i, podr\'as corregir fallos | | f\'acilmente y adem\'as al final de la clase, si grabas este fichero, | | tendr\'as los ejercicios resueltos, sin necesidad de anotar en papel | | las soluciones. Al usar CTRL-C CTRL-E recuerda que la expresi\'on que | | deseas evaluar debe comenzar con par\'entesis y el primero de ellos debe | | ocupar la PRIMERA COLUMNA DE LA IZQUIERDA. | |----------------------------------------------------------------------------| |----------------------------------------------------------------------------| Construir expresiones que, formadas s\'olo por cons, quotes ('), n\'umeros s\'imbolos y par\'entesis, tengan como valor: (1 2 pepe) ;;;[3a] ((1 2) pepe) ;;;[3b] ((1 2) (pepe)) ;;;[3c] (((1))) ;;;[3d] ***************************************************************************** * EJERCICIO 4: * ***************************************************************************** (1) Usar el s\'imbolo de quote para asignar a los s\'imbolos l1 y l2 respecti- vamente las listas (agua papel dinero tierra) ;;;[4a] ((agua papel) dinero (tierra)) ;;;[4b] (2) Usar la funci\'on list para asignar a los s\'imbolos l3 y l4 respectiva- mente las listas: ((agua papel) (dinero tierra)) ;;;[4c] (agua (papel (dinero)) tierra) ;;;[4d] (3) Obtener el car y el cdr de l1 y l2, razonando la respuesta. Obtener, con funciones del tipo c..a..d..r cada uno de los elementos de primer nivel de l3 y (dinero) de l4. ***************************************************************************** * EJERCICIO 5: * ***************************************************************************** En cada caso, sustituir el caracter "$" por una expresi\'on de manera que cada una de las siguientes expresiones tenga el valor #t y el valor #f: (number? $) ;;;[5a] (symbol? $) ;;;[5b] (boolean? $) ;;;[5c] (list? $) ;;;[5d] (null? $) ;;;[5e] (procedure? $) ;;;[5f] ***************************************************************************** * EJERCICIO 6: * ***************************************************************************** Evaluar, razonadamente: (= 2 3) ;;;[6a] (= 3 3) ;;;[6b] (equal? 'pepe 'pepe) ;;;[6c] (define pepe 'jose) ;;;[6d] (equal? 'pepe pepe) ;;;[6e] (equal? '(a b) (cons 'a (cons 'b ()))) ;;;[6f] (equal? '(1 (2 3) 4) '(1 2 3 4)) ;;;[6g] (equal? '(1 (2 3) 4) (cons 1 '((2 3) 4))) ;;;[6h]