jueves, 6 de diciembre de 2012

Factorial en Power Builder

Hoy explicaremos un poco del entorno de trabajo de PB, bien como hemos estado siguiendo este post, hasta este momento ya tienes q saber crear un WorkSpace, una aplicacion, tu ventana, al menos saber como declarar variables, toda esa informacion si no lo sabes puedes encontrarla en los siguientes links:




Ok, vamos al estudio:

Crearemos un WorkSpace llamado: wrk_factorial, una aplicaccion llamada: app_factorial, y una ventana: w_factorial.

Luego diseñamos la siguiente ventana:


La idea es hacer un programa que calcule el factorial de un número, donde un factorial es la multiplicación de sus anteriores numeros, por ejemplo el factorial de 5 es igual a decir: 1 x 2 x 3 x 4 x 5. Lo que quiero tratar de explicarles es que en Power builder se puede hacer de 3 formas este programa, de una forma facil hasta una forma compleja. 
 
En el boton: cb_calcular pondremos el siguiente código:


En este ejemplo, mostramos una solucción usando la estructura repetitiva FOR, donde tomamos el primer valor hasta el ultimo, y lo multiplicamos, asignandolo en la variable de tipo long: ll_f, y luego lo mostramos.

En el boton: cb_calcular2 pondremos el siguiente código:

Como veran en este código, sólo use 3 lineas de código, y use la funcion externa de PB llamada FACT que me permite el calculo del factorial de un número.

Esta parte se implementara usando una funcion llamada: f_factorial. Para ello vamos a crear una funcion externa, iremos a New / PB Object / Function.

Una vez hecho eso, tratamos de configurar nuestra funcion de la siguiente manera:

Aqui nos dice que nuestra funcion retornara un LONG, y tiene un argumento llamado: al_n de tipo LONG. El código nos muestra una funcion recursiva para hallar el factorial. (Funcion recursiva se le llama a una funcion que se llama a si misma) Aunque es una buena manera de explicar lo recursivo. Lo que nos indica este codigo es que el número ingresado ira restando hasta llegar a 1, cuando llegue a 1, el programa retornara 1, entonces comenzara a hallar las iteraciones.

Ejemplo: F_factorial ( 4 )

1a Iteracion
al_n = 4
al_n > 1
salida ← 4 * f_factorial(3) (Guarda el valor de  al_n = 4)
2a Iteracion
al_n > 1
salida ← 3*f_factorial(2) (Guarda el valor de 
al_n = 3)
3a Iteracion
al_n > 1
salida ← 2*f_factorial(1) (Guarda el valor de 
al_n = 2)
4a Iteracion
al_n = 1 → retorna 1
3a Iteracion
(recupera  al_n=2 de la pila) retorna 1*2=2
2a Iteracion
(recupera  al_n=3 de la pila) retorna 2*3=6
1a Iteracion
(recupera  al_n=4 de la pila) retorna 6*4=24

Valor de retorno → 24


Para finalizar: 

En el boton: cb_calcular3 pondremos el siguiente código:


Luego de esto, sólo ejecutaremos la ventana: w_factorial. Eso tenemos que ponerle en la propiedad de la aplicación: Open(w_factorial). Bien ejecutemos:


¿Cual de todo estos códigos te hizo sentir bien?, Espero que sea el de la función recursiva. Con esto finalizamos el factorial en un número en PB.

Si quieres descargar el código fuente entra al siguiente link:


Hasta la proxima!!