Ejemplo complementario sobre funciones

Ejercicio. El exponencial de un número real a se puede aproximar con la serie:
a
e
=
1
+
a
+
2
(a)
2
+
3
(a)
3!
+…+
k
(a)
k!
+…
Elabore una función que calcule esa sumatoria. El número a (la potencia a la cual elevamos el número e) y el
número k (la cantidad de términos de la serie) los suministra el usuario.
Debe validarse que a sea mayor que 1 y k sea mayor a 2.
Ejemplo. Para calcular el valor de
quedaría:
1
De modo que
e
2
+
e2
usando 5 términos de la serie tenemos que a=2
2
+
(2)2
2
+
(2)3
3!
+
y
k=5. Y la serie
(2)4
4!
sería igual a la suma de esos términos
Necesito elevar el valor a en una determinada potencia (que va en el numerador del término); en el tercer
término necesito elevarla a la segunda potencia, en el cuarto término necesito elevarla a la tercera potencia, y
así sucesivamente.
También necesito calcular el factorial (que va en el denominador del término); en el tercer término necesito el
factorial de 2, en el cuarto término necesito el factorial de 3, y así sucesivamente.
De modo que necesito crear esas 2 funciones para que me ayuden a calcular el exponencial. Como veremos,
una función puede hacer uso de otras funciones.
El proceso de dividir un problema en problemas menores (o subproblemas) para encontrar y estructurar
soluciones a esos problemas más pequeños se denomina MODULARIZACIÓN.
1
real funcion potencia (E real: x; E entero: n)
var
entero: i, z, y=1;
inicio
si (n<0) entonces
z = n*(-1)
si_no
z = n
fin_si
Para (i=1 hasta z) hacer
y = y * x
Fin_para
si (n<0) entonces
y = 1 / y
fin_si
devolver(y)
fin_funcion
entero funcion factorial(E entero: x)
var
entero: i , r=1
Inicio
para (i=1 hasta i<=x) hacer
r = r * i
fin_para
devolver (r)
Fin_funcion
Y ahora procedemos a armar la función exponencial Y un programa que la usa puede ser:
ayudándome en esas 2 funciones:
real funcion exponencial (E entero: a, k)
var
entero: i
real: suma_terminos, num, den, termino
inicio
suma_terminos = 1
para (i=1 hasta k-1) hacer
num = potencia(a,i)
den = factorial(i)
termino = num / den
suma_terminos = suma_terminos + termino
fin_para
devolver(suma_terminos)
fin_funcion
Algoritmo Principal
var
entero: potencia, terminos
real: exp
inicio
Leer potencia, terminos
si ((potencia>1)y(terminos>2)) entonces
exp = exponencial(potencia,terminos)
Imprimir “el exponencial vale :” , exp
si_no
Imprimir “parámetros no válidos”
Fin_si
fin
2