Está en la página 1de 2

Proyecto semestral de Teorı́a de la Computación: la calculadora

vectorial.

Prof. Pablo Sáez


pablosaezphd@gmail.com

Válido por cuatro puntos de la prueba 3. En grupos de 3 ó 4 alumnos. Para


el viernes 3 de diciembre de 2021.

Como usted sin duda recuerda las siguientes son funciones que están definidas
para los vectores de R3 .

• La suma de vectores:

+ : R3 × R3 → R3
(x1 , y1 , z1 ), (x2 , y2 , z2 ) 7→ (x1 , y1 , z1 ) + (x2 , y2 , z2 ) = (x1 + x2 , y1 + y2 , z1 + z2 )

• El producto punto:

· : R 3 × R3 → R
(x1 , y1 , z1 ), (x2 , y2 , z2 ) 7→ (x1 , y1 , z1 ) · (x2 , y2 , z2 ) = x1 x2 + y1 y2 + z1 z2

• El producto por escalar:

∗ : R × R3 → R3
w, (x, y, z) 7→ w ∗ (x, y, z) = (wx, wy, wz)

• El producto cruz:

× : R3 × R3 → R3
(x1 , y1 , z1 ), (x2 , y2 , z2 ) 7→ (x1 , y1 , z1 ) × (x2 , y2 , z2 ) = (y1 z2 − z1 y2 , z1 x2 − x1 z2 , x1 y2 − y1 x2 )

El objetivo de este proyecto es el desarrollo de una calculadora que entregue


los valores de expresiones arbitrarias que involucren a estas cuatro funciones.
Para efectos de este proyecto los números reales serán números en base 10 con
o sin decimales, y con o sin signo, y la calculadora no ocupará funciones fuera
de las cuatro mencionadas. En particular, no se considerarán la suma, resta,
multiplicación o división de reales.
Por ejemplo la siguiente serı́a una expresión que deberı́a poder ser procesada
por la calculadora:

7.9 ∗ (1, 0, 0) + (3.4, −5.002, 5.1) × (−2.9 ∗ (4, 4, (1, 2, 5) · (4, 4, −4)))

Su grupo debera proponer un lenguaje que permita el cálculo de estas expre-


siones. Es decir que el lenguaje no viene dado a priori en este proyecto, deberá

1
ser diseñado por el grupo. La gramática del lenguaje no deberá ser ambigua, y
vale un punto.
Además el grupo deberá construir un autómata de pila que procese el lenguaje.
El autómata vale un punto.
Y finalmente se deberá implementar la calculadora. La implementación del
autómata, es decir el reconocimiento de las expresiones válidas, vale un punto.
Y la implementación de la calculadora misma, es decir el proceso de computar
los valores de las expresiones, vale un punto.
Nótese que el producto punto, siendo un número real, podrı́a aparecer en un
producto por escalar. Es decir que la siguiente es una expresión válida:

((1, 2, 3) · (4, 5, 6)) ∗ (7, 8, 9)

y a su vez este vector podrı́a aparecer como argumento de un producto punto,


y ası́ sucesivamente. Nótese además que el input para la calculadora es siempre
un string de caracteres, es decir que la expresión no se puede ingresar usando
interfaces que no sean ésa (el string de caracteres).

Proyecto dado el lunes 25 de octubre de 2021.

También podría gustarte