Práctica 2: Intérprete POLICALC
Aclaraciones
- A1: Uso de la clase Polinomio.
No es obligatorio usarla, pero se ha proporcionado para facilitar la implementación de la calculadora, y la duración de la práctica se ha estimado suponiendo que se hace uso de ella. Dicha clase proporciona las principales (no todas) operaciones con polinomios, incluyendo la escritura de polinomios en el formato que se pide en POLICALC. Por ejemplo:
-> python
>>> from polinomios import *
>>> p=Polinomio([-3,6,5,-2])
>>> print p(3)
6
>>> q=Polinomio([-4,1,3])
>>> print p*q
12-27*x-23*x^2+31*x^3+13*x^4-6*x^5
>>> r=Polinomio([12,-27,-23,31,13,-6])
>>> print r
12-27*x-23*x^2+31*x^3+13*x^4-6*x^5
>>> print p*q==r
True
>>> print r.multCoef(2)
24-54*x-46*x^2+62*x^3+26*x^4-12*x^5Obsérvese que la conversión de coeficientes enteros a coeficientes reales, que debe hacer POLICALC, no la hace la clase Polinomio. Pero si se le proporcionan coeficientes reales, los utiliza:
>>> p=Polinomio([-3.0,6.0,5.0,-2.0])
>>> q=Polinomio([-4.,1.,float(3)])
>>> print p*q
12.0-27.0*x-23.0*x^2+31.0*x^3+13.0*x^4-6.0*x^5La clase Polinomio que se ha proporcionado no incluye el operador potencia, pero se puede implementar fácilmente el operador potencia de POLICALC usando el producto de polinomios.
Téngase en cuenta que en la práctica se pide escribir en lenguaje PYTHON (pudiendo usar la clase Polinomio) un intérprete de lo que el usuario de la calculadora escriba en lenguaje POLICALC. Son dos lenguajes distintos y no hay que confundir las reglas de uno con las del otro: las del lenguaje POLICALC son las que se dan en el enunciado.
- A2: Uso de la función pow en Python.
Si ejecutamos esto en Python:
import math
print 2**3
print pow(2,3)
print math.pow(2,3)
print int(math.pow(2,3))el resultado es el siguiente:
8
8
8.0
8Obsérvese que las funciones pow y math.pow son diferentes, y se comportan de forma diferente en un caso así: el resultado de la primera es de tipo entero, mientras que el de la segunda es de tipo real. Hay que tener cuidado con eso si hacemos from math import *.
Última actualización: 4 de enero de 2010.