Asignatura: Fundamentos de Informática | ![]() |
![]() |
Especialidad: Electrónica - UPV/EHU | ||
Curso académico: 2013-2014 | ||
Profesor: Ismael Etxeberria Agiriano |
Este laboratorio no tiene complejidad algorítmica. Se trata de trabajar con el paso de parámetros de entrada y de salida, así como en el valor devuelto por las funciones.
Un aspecto de reflexión es que vamos a utilizar dos variables
(x
e y
en forma binómica o
r
y a
en forma polar)
para representar un número.
Utilizando elementos más avanzados
(por ejemplo, vectores, estructuras o clases)
podríamos hacer más compacto este concepto y ser
tratado con una sola variable.
Siguiendo esta idea tendrían sentido dos funciones:
double bParteReal (double x, double y); double bParteImag (double x, double y);
Si fuéramos a codificarlas nos daríamos cuenta de que
en un caso se devuelve directamente
la x
y en el otro la y
.
Esto no debe ser considerado un defecto sino simplemente una
abstracción para quien quiera utilizar las funciones sin
conocer las propiedades de los números complejos.
double bModulo (double x, double y);
void bConjugado (double *x, double *y);
Es de señalar que la parte real no sufre cambios. El compilador se suele dar cuenta de esto y nos envía un aviso (warning).
Se podría haber diseñado esta función para recibir sólo la parte imaginaria, pero eso implicaría que el que utiliza las funciones no vería con la misma transparencia el "número complejo". Véase la nota al principio de este apartado.
void bOpuesto (double *x, double *y);
void bSuma (double x1, double y1, double x2, double y2, double *x, double *y);
void bResta (double x1, double y1, double x2, double y2, double *x, double *y);
void bApolar (double x, double y, double *r, double *a);
void pAbinomica (double r, double a, double *x, double *y);
void pMulti (double r1, double a1, double r2, double a2, double *r, double *a);
void bMulti (double x1, double y1, double x2, double y2, double *x, double *y);
void pDivision (double r1, double a1, double r2, double a2, double *r, double *a);