Abstracción de Datos y

Documentos relacionados
GUÍA BÁSICA DE SCHEME v.4

4.7 Operaciones sobre Objetos en Scheme

Programación Declarativa. Ingeniería Informática Cuarto curso. Primer cuatrimestre. Escuela Politécnica Superior de Córdoba Universidad de Córdoba

Lenguajes de Inteligencia Artificial Segundo curso. Primer cuatrimestre

Programación Declarativa

Tema 3.- Predicados y sentencias condicionales

Tema 2. Tipos predefinidos

Valores Booleanos Interpretación #t Cierto #f Falso

4.3 Recursión en Scheme

Programación Funcional Lisp-Scheme

Números. Conjuntos numéricos

Aplicación de la Inducción Matemática Programación Funcional. Julio Ariel Hurtado Alegría Departamento de Sistemas Universidad del Cauca

Los Conjuntos de Números

7.1 Números Racionales: números enteros, propiedades de los números y orden de operaciones. Prof. Kyria A. Pérez

TEMA Nº 1. Conjuntos numéricos

EJERCICIOS RESUELTOS DE NÚMEROS REALES

Operaciones de enteros. Prof. Yaritza González Adaptado por: Yuitza T. Humarán Departamento de Matemáticas UPRA

Pre-Universitario Manuel Guerrero Ceballos

Ejercicios Scheme. Para cada función escriba su contrato, descripción, ejemplos y los tests necesarios, antes de su implementación.

Chapter Audio Summary for McDougal Littell Pre-Algebra

Introducción al MATLAB

Capítulo 5. Los números reales y sus representaciones Pearson Education, Inc. Diapositiva 5-2-1

CURSO UNICO DE INGRESO 2010

CONJUTOS NÚMERICOS NÚMEROS NATURALES

Potencias y raíces Matemáticas 1º ESO

CAPÍTULO 3: PORCIONES Y NÚMEROS ENTEROS

EXAMEN DE PENDIENTES PRIMER PARCIAL MATEMÁTICAS DE 1º DE ESO

Ejercicios propuestos en el. Departamento de MATEMÁTICAS. para realizar en verano

*Número natural, el que sirve para designar la cantidad de. *El cero, a veces, se excluye del conjunto de los números

TEMA 1 CONJUNTOS NUMÉRICOS

LOS NÚMEROS RACIONALES

CRITERIOS EVALUACIÓN MATEMÁTICAS

Tema 4.- Recursión e iteración

TRABAJO DE MATEMÁTICAS. PENDIENTES DE 2º E.S.O. (1ª parte)

OPERACIONES CON POLINOMIOS

Programación Interactiva

UNIDAD 1 CONCEPTOS BÁSICOS. Números naturales, Números enteros, Números racionales, números irracionales y números reales. Dr. Daniel Tapia Sánchez

Llamamos potencia a todo producto de factores iguales. Por ejemplo: 3 4 =

FISICA I Repaso. Si el alumno no supera al maestro, ni es bueno el alumno; ni es bueno el maestro (Proverbio Chino)

UNIDAD: NÚMEROS Y PROPORCIONALIDAD. Los elementos del conjunto IN = {1, 2, 3, 4, 5, 6, 7,...} se denominan números

NUMEROS NATURALES. En esta unidad se da un repaso de los diferentes conjuntos de números que existen en matemáticas.

Listo para seguir? Intervención de destrezas

TEMARIO PRUEBA DE SÍNTESIS MATEMÁTICA SÉPTIMO BÁSICO

Capítulo I ELEMENTOS PREVIOS

RESUMEN DE CONCEPTOS

UNIDAD DE APRENDIZAJE II

Conjuntos numéricos. Apuntes de Matemática I. Tatiana Inés Gibelli C.U.R.Z.A.

NÚMEROS COMPLEJOS (C) Si calculamos los valores de las potencias de i, encontramos que: con n N + y 0 p < 4

Operaciones de números racionales

1. Números naturales y sistema de numeración decimal

Programación 1 - Práctica 0, recargada.

Desafío. Propiedades de los números racionales GUÍA DE EJERCITACIÓN AVANZADA GUICEN038MT21-A17V1

001. Interpreta correctamente códigos (teléfonos, matrículas, NIF ).

Opuesto de un número +3 + (-3) = (+5) = 0. N = 0,1, 2,3,4, Conjunto de los números naturales

Materia: Matermática de Séptimo Tema: Multiplicación de Números Racionales

Capítulo 1. Numeración 1 Variables... 2 Números naturales... 2 Números enteros... 3 Números reales Ejercicios Orden y valor absoluto...

UNIDAD 1. NÚMEROS. (Página 223 del libro) Nivel II. Distancia. Ámbito Científico Tecnológico.

Lenguajes de Programación Programación funcional

ángulo agudo ángulo agudo ángulo agudo Un ángulo que mide menos de 90º

Estándares de Contenido y Desempeño, Estándares de Ejecución y Niveles de Logro Marcado* MATEMÁTICA

Tema 5.- Tipos de datos compuestos

TEMA 1. Números Reales. Teoría. Matemáticas

5to. ESTANDARES MATEMATICOS COMUNES FUNDAMENTALS

CALCULO GRADO EN INGEN. INFORM. DEL SOFTWARE PRACTICA 1. INTRODUCCIÓN A MATLAB

Números. Índice del libro. 1. Los números reales. 2. Operaciones con números enteros y racionales. 3. Números decimales

Tutoría Completa - Curso de Matemática para 1, 2 y 3 Básico

Conceptos claves de matemáticas de la escuela primaria

En una recta numérica el punto que representa el cero recibe el nombre de origen.

TEMARIO PRESENTACIÓN 7 MÓDULO I 17 EXPRESIONES ALGEBRAICAS 19

Apuntes de los NÚMEROS REALES

ÍNDICE. Unidad I Conjuntos 10. Unidad II Sistemas de numeración 70. Presentación... 9

Matemática 2 Módulo 1

UNIDAD 1 NUMEROS COMPLEJOS

Créditos institucionales de la UA: 6 Material visual: Diapositivas. Unidad de competencia I Conceptos preliminares

Aritmética de Enteros y

Criterios de evaluación. Tema 1. Matemáticas. 6º Primaria

Matemáticas. Mathe Formeln_Text OK:Mathe Formeln_Text qxd 5/5/10 3:54 PM Page Matemáticas

Desafío. Guía Potencias y propiedades GUÍA DE EJERCITACIÓN AVANZADA GUICEN002MT21-A17V1. Si N es un número entero, entonces la expresión

Leyes de los exponentes

Álgebra y Trigonometría

Alfredo González. Beatriz Rodríguez Pautt. Carlos Alfaro

UNIDAD: NÚMEROS Y PROPORCIONALIDAD NÚMEROS ENTEROS

Tema 1.- Los números reales

INSTITUTO TECNICO MARIA INMACULADA Formando líderes estudiantiles para un futuro mejor

Resumen anual de Matemática 1ª Convocatoria: jueves 24 de noviembre, 2016 Octavo nivel 2ª Convocatoria: miércoles 1 de febrero, 2017 broyi.jimdo.

RESUMEN DE CONCEPTOS TEÓRICOS MATEMÁTICAS 1º ESO. CURSO

Guía Generalidades de los números reales

ESCUELA PREPARATORIA OFICIAL NO.16 MATERÍA: PENSAMIENTO NUMÉRICO Y ALGEBRAICO I

Una función es una fórmu SINTAXIS DE UNA FUNCI. Ejemplo de sintaxis: escriben entre los paréntes Ejemplo: =SUMA(A1:C8) argumentos.

FICHAS REPASO 3º ESO. Para restar números enteros, se suma al minuendo el opuesto del sustraendo y después se aplican las reglas de la suma.

CONTENIDOS EXÁMEN DE ADMISIÓN MATEMÁTICA SEGUNDO BÁSICO 2017

TEMA 1. Números Reales. Teoría. Matemáticas

Fundamentos Conceptuales de la Informática. Funciones. Prof. Manuel Rivas

GRADE 3 MCCSC VOCABULARY. Marking Period 3

Operaciones con números racionales. SUMA/RESTA.

El número áureo,, utilizado por artistas de todas las épocas (Fidias, Leonardo da Vinci, Alberto Durero, Dalí,..) en las proporciones de sus obras.

CURSO CONTENIDOS MÍNIMOS U1: NÚMEROS NATURALES. U2: POTENCIA Y RAÍCES.

Transcripción:

Capítulo 3 Abstracción de Datos y Números El cómputo numérico ha sido tradicionalmente ignorado por la comunidad de Lisp. Hasta antes del Common Lisp nadie había ideado una estrategia detallada para ordenar el cómputo numérico y, con la excepción del sistema MacLisp, habían muy pocos esfuerzos por ejecutar eficientemente código numérico. El reporte del estándar de Scheme reconoce el trabajo del comité de Common Lisp e incorpora muchas de sus propuestas [6]. 3.1 Tipos Numéricos Matemáticamente los números pueden organizarse en una torre de subtipos en la que cada nivel es un subconjunto del nivel que se encuentra sobre él: número complejo real racional entero La regla uniforme de coerción hacia abajo es que un número de un cierto tipo es también de un tipo inferior si la inyección (coerción hacia arriba) o la proyección (coerción hacia abajo) del número lo deja sin cambios. Por ejemplo 10 es un entero. 53

Porlotanto,10también es un número racional, un real y un complejo. Puesto que la torre es una estructura matemática, Scheme proporciona predicados y procedimientos para acceder a ella. El estándar de Scheme no requiere que todas las implementaciones de este lenguaje proporcionen la torre completa, sino que es suficiente con un subconjunto coherente que sea consistente tanto con los propósitos de la implementación como con el espíritu del lenguaje. Sin embargo aunque el intérprete no proporcione todos estos tipos, normalmente se incluyen predicados que permiten identificarlos. De tal forma, number?, complex?, real?, rational e integer se incluyen en la mayor parte de las implementaciones de Scheme. 3.2 Operadores Numéricos Los operadores de la suma y la multiplicación son + y *, respectivamente. Estos operadores pueden tomar cualquier número de argumentos (se retorna el elemento identidad en caso de que no se proporcionen argumentos). Considere los siguiente ejemplos: > (+ 3 6 7) = 16 > (* 2 9 4) = 72 > (+ 3 6) = 9 > (* 4 5) = 20 > (+ 6) = 6 > (* 8) = 8 > (+) = 0 > (*) = 1 Los operadores de la resta y la división son - y /, respectivamente. Estos operadores pueden tomar uno, dos o más argumentos dependiendo de la versión de Scheme de que se trate. Cuando se usa un solo argumento, estos operadores retornan el inverso aditivo o multiplicativo de su argumento. Considere los siguientes ejemplos: > (- 9 6) = 3 > (/ 7 3) = 7/3 > (- 7) = 7 > (/ 5) = 1/5 54

Para comparar números, se proporcionan los siguientes procedimienros transitivos: (= z 1 z 2 z 3...) (< x 1 x 2 x 3...) (> x 1 x 2 x 3...) (<= x 1 x 2 x 3...) (>= x 1 x 2 x 3...) También pueden verificarse algunas propiedades de los números: (zero? z) (positive? x) (negative? x) (odd? n) (even? n) También podemos obtener los valores máximo y mínimo de un conjunto dado de números: (max x 1 x 2...) (min x 1 x 2...) El valor absoluto (o la magnitud) de un número se calcula usando abs: (abs -13) = 13 Para los números positivos n 1 y n 2, si n 3 y n 4 son enteros tales que n 1 = n 2 n 3 +n 4 y0 n 4 <n 2, se proporcionan los siguientes procedimientos: (quotient n 1 n 2 )= n 3 (remainder n 1 n 2 )= n 4 (modulo n 1 n 2 )= n 4 El valor que regresa quotient siempre tiene el signo del producto de sus argumentos. Los procedimientos remainder y modulo difieren cuando se les proporciona argumentos negativos. Remainder retorna el cero o el signo del dividendo, mientras que el modulo regresa siempre un valor con el mismo signo del divisor. Considere los siguientes ejemplos: 55

(quotient 10 4) = 2 (quotient 10-4) = 2 (remainder 10-4) = 2 (modulo 10-4) = 2 (remainder 10 4) = 2 (modulo 10 4) = 2 Los procedimientos gcd y lcm regresan el máximo común divisor y el mínimo común múltiplo de sus argumentos, respectivamente. El resultado es siempre un valor no negativo. Si no se proporcionan argumentos, se retornan cero y uno, respectivamente. Considere los siguientes ejemplos: > (gcd 68 24 12 48) = 4 > (gcd) = 0 > (lcm 68 24 12 48) = 816 > (lcm 68-24 12-48) = 4 > (lcm 15 25-20 40) = 600 > (lcm) = 1 Los procedimientos numerator y denominator son auto explicables y calculan sus resultados suponiendo que el argumento que se proporciona está representado como una fracción en términos del menor orden posible. Otra presuposición de estos procedimientos es que el denominador es siempre positivo y que el denominador de cero es uno. Considere los siguientes ejemplos: > (numerator (/ 15 12)) = 5 > (numerator (/ 3 4)) = 3 > (numerator (/ 4)) = 1 > (denominator (/ 15 12)) = 4 > (denominator (/34))= 4 > (denominator (/ 4)) = 4 Otros procedimientos útiles que regresan enteros son: (floor x) (ceiling x) (truncate x) (round x) 56

Debe mencionarse que argumentos que se pasan a estos procedimientos son inexactos, entonces la respuesta será un entero inexacto. El procedimiento floor regresa el entero más grande que no exceda x. El procedimiento ceiling regresa el entero más pequeño que no sea inferior que x. El procedimiento truncate regresa el entero más cercano a x cuyo valor absoluto no sea mayor que el valor absoluto de x. El procedimiento round regresa el entero más cercano a x, redondeado a un valor par cuando x se encuentre exactamente en el punto medio entre dos valores enteros. Considere los siguientes ejemplos: > (floor 3.8) = 3. > (floor 3.5) = 3. > (floor 3.1) = 3. > (floor -3.8) = 4. > (floor -3.1) = 4. > (ceiling 3.2) = 4. > (ceiling -3.2) = 3. > (ceiling 3.8) = 4. > (ceiling -3.8) = 3. > (truncate 3.8) = 3. > (truncate 3.1) = 3. > (truncate 3.5) = 3. > (truncate -3.8) = 3. > (truncate -3.5) = 3. > (truncate -3.1) = 3. > (round 3.8) = 4. > (round 3.5) = 4. > (round 3.2) = 3. > (round -3.8) = 4. > (round -3.5) = 4. > (round -3.2) = 3. El procedimiento rationalize regresa el número racional más simple diferente de x pero no más que y: (rationalize xy) Un número racional r 1 es más simple que otro número racional r 2 si r 1 = p 1 /q 1 y r 2 = p 2 /q 2 y p 1 p 2 y q 1 q 2. De tal forma 1/2 es más 57

simple que 3/4. Aunque no todos los números racionales son comparables de acuerdo a este ordenamiento (considere por ejemplo 2/3 y 3/4) cualquier intervalo contiene un número racional que es más simple que otro número racional en ese intervalo. Advierta que 0=0/1 es el racional más simple de todos. Considere los siguientes ejemplos: > (rationalize (/12)(/120))= 1/2 > (rationalize (/12)1)= 0 El operador raíz cuadrada (implementado como procedimiento) es: (sqrt z) Este procedimiento regresa la raíz cuadrada de z. El resultado tendrá una parte positiva real o cero y una parte imaginaria no negativa. Finalmente el procedimiento: (expt z 1 z 2 ) regresa z 1 elevado a la potencia z 2 : z z 2 1 = e z 2 log z 1. Recuerde que 0 0 se define como igual a 1. La mayor parte de las versione de Scheme cuentan también con los siguientes procedimientos matemáticos adicionales: (exp z) (log z) (sin z) (cos z) (tan z) (asin z) (acos z) (atan z) 3.2.1 Problemas Resueltos 1. Defina un procedimiento sum que encuentre la suma de los componentes de una n-tupla. Pruebe su procedimiento con: 58

(sum (12345))= 15 (sum (6)) = 6 (sum ()) = 0 El procedimiento es: (define sum (lambda (ls) (cond ((null? ls) 0) (else (+ (car ls) (sum (cdr ls))))))) 2. Defina un procedimiento suma-parejas que tome dos n-tuplas de la misma longitud, ntpl-1 y ntpl-2, como argumentos y produzca una nueva n-tupla cuyos componentes sean la suma de los valores correspondientes de ntpl-1 y ntpl-2. Pruebe su procedimiento con: (suma-parejas (1 3 2) (4-1 2)) = (524) (suma-parejas (3.2 1.5)) = (9.2-1.0) (suma-parejas (7) (11)) = (18) (suma-parejas () ()) = () El procedimiento es: (define suma-parejas (lambda (ls1 ls2) (cond ((null? ls1) ()) (else (cons (+ (car ls1) (car ls2)) (suma-parejas (cdr ls1) (cdr ls2))))))) 3. Defina un procedimiento mult-por-n que tome como argumentos un número num y una n-tupla ntpl. Este procedimiento multiplicará cada componente de ntpl por num. Pruebe su procedimiento: (mult-por-n 3 (1 2 3 4 5)) = (3 6 9 12 15) (mult-por-n 0 (1 3 5 7 9 11)) = (000000) (mult-por-n -7 ()) = () 59

El procedimiento es: (define mult-por-n (lambda (n ls) (cond ((null? ls) ()) (else (cons (* (car ls) n) (mult-por-n n (cdr ls))))))) 4. Defina un procedimiento cuenta-diferentes que tome como argumentos un elemento a y una lista de elementos ls, y retorne el número de elementos en ls que no son iguales al elemento a. Pruebe su procedimiento con: (cuenta-diferentes blue (red white blue yellow blue red)) = 4 (cuenta-diferentes red (white blue green)) = 3 (cuenta-diferentes white ()) = 0 El procedimiento es: (define cuenta-diferentes (lambda (a ls) (cond ((null? ls) 0) ((not (equal? a(car ls))) (add1 (cuenta-diferentes a (cdr ls)))) (else (cuenta-diferentes a (cdr ls)))))) 5. Defina un procedimiento envuelve que tome como argumentos un elemento a y un entero positivo num. Este procedimiento debe colocar num cantidad de paréntesis alrededor del elemento a. Pruebe su procedimiento con: (envuelve gift 1) = (gift) (envuelve sandwich 2) = ((sandwich)) (envuelve prisoner 5) = (((((prisoner))))) (envuelve moon 0) = moon 60

El procedimiento es: (define envuelve (lambda (a n) (cond ((zero? n) a) (else (cons (envuelve a (sub1 n)) ()))))) Los siguientes procedimientos adicionales serán de utilidad para resolver los ejercicios de este capítulo: (define sub1 (lambda (n) (- n 1))) (define add1 (lambda (n) (+ n 1))) (define error (lambda args (display Error:) (for-each (lambda (value) (display ) (display value)) args) (newline))) 3.3 Ejercicios Propuestos 1. De su curso de cálculo, sabe que ( lim 1+1+ 1 n 2! + 1 3! + + 1 ) = e (3.1) n! Defina un procedimiento e-series que tome como entrada un entero n, y regrese la suma de los primeros n terminos de esta serie infinita. Esto deberá darnos una aproximación de e. Evalúe su procedimiento con: 61

(e-series 10) = 9864101/3628800 (e-series 20) = 6613313319248080001/2432902008176640000 NOTA: No intente probar este procedimiento con números que sean muy grandes, puesto que el intérprete de Scheme tomará un tiempo muy grande para evaluar las funciones correspondientes. 2. Defina un procedimiento producto-punto que tome dos n-tuplas de la misma longitud, multiplique sus componentes respectivos y sume los productos resultantes. Pruebe su procedimiento con: (producto-punto (3 4-1) (1-2 -3)) = -2 (producto-punto (0.003 0.035) (8 2)) = 0.094 (producto-punto (5.3e4) (2.0e-3)) = 106.0 (producto-punto () ()) = 0 3. Defina un procedimiento indice que tome dos argumentos, un elemento a y una lista de elementos ls. Este procedimiento debe retornar el índice de a en ls. Es decir, debe retornar la posición (a partir de la cero) de a en ls. Si el elemento no se encuentra en la lista, el procedimiento debe retornar -1. Pruebe su procedimiento con: (indice 3 (123456))= 2 (indice so (doremefasolatido))= 4 (indice a (b c d e)) = -1 (indice gato ()) = -1 4. Defina un procedimiento frente-lista que toma como argumentos una lista de elementos ls y un entero positivo num y retorne los primeros num elementos de alto nivel de ls. Si num es mayor que la cantidad de elementos de alto nivel de ls, debe generarse un mensaje de error. Pruebe su procedimiento con: (frente-lista (abcdefg)4)= (a b c d) (frente-lista (a b c) 4) 62

= Error: la longitud de (a b c) es menor que 4. (frente-lista (abcdefg)0)= () (frente-lista () 3) = Error: la longitud de () es menor que 3. 5. Defina un procedimiento multiplo? que tome como argumentos dos enteros m y n yretorne#t si m es un múltiplo exacto de n. Pruebe su procedimiento con: (multiplo? 72)= #f (multiplo? 93)= #t (multiplo? 50)= #f (multiplo? 0 20) = #t (multiplo? 17 1) = #t (multiplo? 00)= #t 6. Defina un procedimiento n-tupla->entero que convierta una n-tupla no vacía de dígitos a un número. Pruebe su procedimiento con: (n-tupla->entero (3146))= 3146 (n-tupla->entero (0)) = 0 (n-tupla->entero ()) = Error: el argumento () no es valido. (+ (n-tupla->entero (1 2 3)) (n-tupla->entero (321)))= 444 63

64