Practica Programacion Ii 2003 2004

14
Práctica de programación II U.N.E.D CURSO 2003-2004 RESOLUCIÓN DEL DISEÑO Y ANÁLISIS TEÓRICO Por TECNO ACADEMY (tecnoacademy.blogspot.com) Salvador Fernández Fernández

description

Práctica de Programación II de la UNED del curso 2003-2004. Resolución del análisis y diseño teórico. Incluye una inmersión de eficiencia

Transcript of Practica Programacion Ii 2003 2004

Page 1: Practica Programacion Ii 2003 2004

Práctica de programación II

U.N.E.D

CURSO 2003-2004

RESOLUCIÓN DEL DISEÑO Y ANÁLISIS TEÓRICO

Por

TECNO ACADEMY (tecnoacademy.blogspot.com)

Salvador Fernández Fernández

Page 2: Practica Programacion Ii 2003 2004

2. Enunciado de la práctica Calculo aproximado del Coseno de un Número: El coseno de un ángulo, x, expresado en radianes y con –π <= x <= π es una función cuyo valor puede aproximarse por un desarrollo en serie de potencias de Taylor. La fórmula general de dicho desarrollo para el cálculo de f(x) en un punto (a) es:

( )n

i

n

axn

afxf )(!

)()(0

−= ∑∞

=

donde n! representa el factorial del número n y f(n) (a) representa la n-ésima derivada de f en el punto a. El desarrollo de Taylor para el coseno, tomando a = 0, sería:

∑∞

=

−=

0

2)()!2()1(cos

n

nn

xn

x , para cualquier x.

Dado que se trata de una serie infinita, tendremos que aproximarla por la suma de un cierto número de términos, k, es decir

∑=

−≈

k

n

nn

xn

x0

2)()!2()1(cos

Se desea diseñar una función recursiva completamente verificada que calcule la aproximación de orden k al valor del coseno en un punto x dado mediante la fórmula de Taylor. Por ejemplo, la aproximación de orden 3 al coseno de (π/4) sería:

∑=

⎟⎠⎞

⎜⎝⎛−

≈⎟⎠⎞

⎜⎝⎛ 3

0

2

4)!2()1(

4cos

n

nn

nππ

http://tecnoacademy.blogspot.com

Page 3: Practica Programacion Ii 2003 2004

o, lo que es lo mismo,

⎟⎟⎠

⎞⎜⎜⎝

⎛⎟⎠⎞

⎜⎝⎛−

+⎟⎟⎠

⎞⎜⎜⎝

⎛⎟⎠⎞

⎜⎝⎛−

+⎟⎟⎠

⎞⎜⎜⎝

⎛⎟⎠⎞

⎜⎝⎛−

+⎟⎟⎠

⎞⎜⎜⎝

⎛⎟⎠⎞

⎜⎝⎛−

≈⎟⎠⎞

⎜⎝⎛

323222121020

4)!32()1(

4)!22()1(

4)!12()1(

4)!02()1(

4cos

xxxx

xxxxπππππ

El diseño de la función que constituye la parte teórica de la práctica debe ser genérico, es decir, debe tratar todos los factores (por ejemplo, el punto en que se calcula el coseno o la bondad de la aproximación, es decir, el número de términos de la serie que lo aproxima, entre otros) como parámetros, sin importar como se instancien para resolver el problema (lo que hará en la implementación de la práctica) Tarea 1: Diseño y Análisis teórico 3. Especificación 3.1. Consideraciones sobre la especificación Para la construcción de la especificación del problema han de tenerse en cuenta los siguientes aspectos:

• El primer paso debe ser declarar la función, esto es, darle un nombre y declarar los parámetros que recibe y el resultado que devuelve, nombrándolos y decidiendo a que tipos de datos pertenecen. En nuestro caso, la signatura o perfil de la función será el siguiente (nótese que el nombre de la función esta en cursiva y los tipos predefinidos en negrita) fun cosk: real x nat real

• La postcondición expresa el resultado que se desea alcanzar, por lo que este será el siguiente caso. Se trata de expresarla de forma precisa. • La precondición define el conjunto de datos de entrada que se consideran validos para la función.

http://tecnoacademy.blogspot.com

Page 4: Practica Programacion Ii 2003 2004

• Téngase en cuenta, al expresar la postcondición, todos los casos posibles, con especial atención a los rangos vacíos (si se usan cuantificadores) y a los casos extremos, ya que la sintaxis, usada imprecisamente, puede dar lugar a equívocos y a definiciones incorrectas. Recuérdese que la postcondición debe expresar la relación que debe existir entre las variables de salida y las de entrada.

• Una vez decidida la postcondición, la precondición debe restringir los casos potencialmente erróneos, limitando el dominio de aplicación de los datos

de entrada.

• En muchos casos, debido a la naturaleza del problema (en otros, se trata tan solo de conveniencia o sencillez) la función que debemos diseñar no nos

permite realizar directamente un diseño recursivo, por lo cual deberemos especificar otra función que sí nos lo permita (es importante convencerse de este hecho que puede presentarse en multitud de ocasiones. ¿es éste el caso?).

http://tecnoacademy.blogspot.com

Page 5: Practica Programacion Ii 2003 2004

http://tecnoacademy.blogspot.com

Page 6: Practica Programacion Ii 2003 2004

http://tecnoacademy.blogspot.com

Page 7: Practica Programacion Ii 2003 2004

http://tecnoacademy.blogspot.com

Page 8: Practica Programacion Ii 2003 2004

http://tecnoacademy.blogspot.com

Page 9: Practica Programacion Ii 2003 2004

http://tecnoacademy.blogspot.com

Page 10: Practica Programacion Ii 2003 2004

http://tecnoacademy.blogspot.com

Page 11: Practica Programacion Ii 2003 2004

http://tecnoacademy.blogspot.com

Page 12: Practica Programacion Ii 2003 2004

http://tecnoacademy.blogspot.com

Page 13: Practica Programacion Ii 2003 2004

http://tecnoacademy.blogspot.com

Page 14: Practica Programacion Ii 2003 2004

http://tecnoacademy.blogspot.com