Suma de potencias de x en PSeInt

Más ejercicios resueltos

Si deseas revisar más ejercicios resueltos, haz click en el siguiente botón. 

A continuación presentamos la solución al problema del cálculo de la suma de potencias en PSeInt. Si deseas ver el enunciado del problema, haz click en el siguiente enlace.

Lectura de datos

Como siempre, lo primero a realizar, es la lectura de los datos de entrada. Primero realizamos la lectura del valor de x. Para esto usamos la instrucción \texttt{Leer} asignando la lectura en la variable \texttt{x}

Posteriormente, realizamos la lectura del valor de n,  asignando el valor leído en la variable \texttt{n}. Esta variable representará la cantidad de veces que debemos sumar términos en la sumatoria. Será fundamental para el control de flujo de la iteración.

Es una buena práctica que los valores de la variables, en la medida de lo posible, sean los mismos nombres que las variables usadas en la definición del problema. Esto ayuda en la lectura posterior del código fuente.

pseudocódigo PSeInt suma de potencias de x v1
Lectura de datos

Validación de datos de entrada

El siguiente paso a realizar es la validación del valor de \texttt{x}. Por definición del problema, \lvert x \rvert < 1. No podremos realizar el cálculo si esto no se cumple.

¿Cómo hacemos la validación? El algoritmo deberá tomar una decisión. Si es que el valor es incorrecto, deberá emitir un mensaje de error y no hacer nada adicional. Si el valor es correcto, deberá proceder con las instrucciones para realizar el cálculo. La instrucción que permite que un algoritmo tome decisiones sobre qué flujo ejecutar es la estructura algorítmica selectiva. Usaremos una selectiva doble pues tenemos dos posibles caminos a seguir: o emitimos un mensaje de error o realizamos las operaciones del cálculo.

La condición a usar será \texttt{abs(x)>=1}, si esta condición se cumple, se debe emitir el mensaje \texttt{Valor de x incorrecto}. En PSeInt, la función \texttt{abs}, devuelve el valor absoluto de número pasado como parámetro.

pseudocódigo PSeInt suma de potencias de x v2
Validación de datos de entrada

Control de flujo de la iteración

Procederemos ahora a realizar el control de flujo de la iteración, usaremos para ello un ciclo iterativo con entrada controlada. Usaremos un control por variable el cual se configura usando los siguientes pasos:

  1. Inicializamos la variable de control. En este caso hemos definido la variable de control \texttt{i} y la hemos inicializado con el valor de \texttt{0}. La inicializamos con este valor por las condiciones del problema. Si revisa la definición del problema, verá que el índice de la sumatoria, inicia en \texttt{0}
  2. Controlamos el flujo usando la variable de control. Como queremos que existan \texttt{n} términos en la sumatoria, la variable de control \texttt{i} debe actualizarse con  \texttt{n} valores, desde \texttt{0}, su valor inicial, hasta \texttt{n-1}, su valor final. Por lo tanto la condición de repetición es \texttt{i<n}. Mientras esto sea verdad, se seguirá iterando. Note que la condición también podría haber sido \texttt{i<=(n-1)}.
  3. Actualizamos el valor de la variable de control. Para que no se haga siempre lo mismo, algo debe cambiar en la estructura iterativa. ¿Qué es lo que se cambia? Pues el valor de la variable de control. Tenemos que cambiarla para que el algún instante del tiempo, la iteración termine. La iteración solo terminará cuando la condición se haga falsa, por lo tanto debemos incrementar \texttt{i} para que llegue a ser igual a \texttt{n} y el ciclo termine. Por condiciones del problema, se incrementará en 1 a esta variable.
pseudocódigo PSeInt suma de potencias de x v3
Control de flujo de la iteración

Inicialización de la sumatoria

Una vez controlado el flujo de la iteración, procedemos a resolver el problema. Debemos calcular el valor de una sumatoria, debemos acumular todos los términos en una sola variable. Debido a esto, creamos una variable para este fin en específico, la identificaremos con el nombre \texttt{suma}. Como a toda variable le debemos de dar un valor inicial, la inicializaremos con el valor de \texttt{0}, pues \texttt{0} es el elemento neutro para al suma.

pseudocódigo PSeInt suma de potencias de x v4
Inicialización de la sumatoria

Acumulando la sumatoria

Ahora vamos a acumular los términos a la variable \texttt{suma}. Esto lo realizaremos dentro de la iteración. Tiene que ser así por que esta es la acción repetitiva (sumar los términos) que hace que usemos una estructura iterativa. Aprovechamos el hecho que la variable de control \texttt{i} cambia a largo de la iteración y la usamos para calcular el término. El término es muy simple, lo calculamos mediante la expresión \texttt{x}^\texttt{i}

La primera vez, \texttt{i} vale \texttt{0} por lo que \texttt{x}^\texttt{i} equivale a 1. La segunda vez,  \texttt{i} vale \texttt{1} por lo que \texttt{x}^\texttt{i} equivale a x. La tercera vez,  \texttt{i} vale \texttt{2} por lo que \texttt{x}^\texttt{i} equivale a x^2. Y así sucesivamente. 

Recuerde que el operador ^ permite elevar un número a cualquier potencia. 

pseudocódigo PSeInt suma de potencias de x v5
Acumulando la sumatoria

Mostrando el resultado final

Finalmente presentamos el valor de la sumatoria. Como el valor se va a obtener al finalizar la iteración, la impresión debe realizarse una vez finalizada el ciclo iterativo.

pseudocódigo PSeInt suma de potencias de x v6
Mostrando el resultado final

Diseño algorítmico en diagrama de flujo​​​

A continuación se presenta la solución en diagrama de flujo. La secuencia de pasos usada para su construcción ha sido la misma que para el pseudocódigo.

diagrama de flujo en PSeInt - suma de potencias de x
Solución en diagrama de flujo

Conclusión

Hemos presentado en este artículo, una propuesta de solución al cálculo de la suma de las potencias de x. Se ha utilizado para el control de flujo la estructura iterativa y realizándose el control mediante un ciclo con entrada controlada. Podrá descargar la solución propuesta en el repositorio GitHub de iterando++ a través del siguiente enlace

Hemos preparado otros artículos adicionales en donde describimos al detalle la implementación de este problema en lenguajes de programación. Te invitamos a leer los siguientes artículos de iterando++

Si te interesa profundizar más sobre diseño algorítmico, te recomendamos el libro Foundations of Programming Languages de Kent D. D. Lee. En este libro encontrarás además información detallada sobre la programación orientada a objetos, funcional y lógica.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *